Τα πάντα για την C

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 31 Ιούλ 2011, 19:47

Κάτσε να στο αναλύσω λίγο παραπάνω...

  • αν η συνάρτηση επιστρέψει 1, τότε το: 1 == 0 ισούται με FALSE (παύει δηλαδή να ισχύει η συνθήκη του while, οπότε σταματάει το loop)
  • αν η συνάρτηση επιστρέψει 0, τότε το: 0 == 0 ισούται με TRUE (δηλαδή ισχύει η συνθήκη του while, οπότε συνεχίζει το loop)
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό stamatiou » 31 Ιούλ 2011, 20:00

Και πώς θα μπορέσουμε να πάρουμε έναν τυχαίο αριθμό αλλά από το 1 εώς ένα άλλο αριθμό;
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 31 Ιούλ 2011, 20:29

Με την αριθμητική πράξη % (mod)...

π.χ...
Κώδικας: Επιλογή όλων
x = rand() % 10;

σου δίνει στο x έναν τυχαίο αριθμό από το 0 έως το 9
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό Star_Light » 31 Ιούλ 2011, 21:27

migf1 έγραψε:Κάτσε να στο αναλύσω λίγο παραπάνω...

  • αν η συνάρτηση επιστρέψει 1, τότε το: 1 == 0 ισούται με FALSE (παύει δηλαδή να ισχύει η συνθήκη του while, οπότε σταματάει το loop)
  • αν η συνάρτηση επιστρέψει 0, τότε το: 0 == 0 ισούται με TRUE (δηλαδή ισχύει η συνθήκη του while, οπότε συνεχίζει το loop)


α μαλιστα ωραια. Καταλαβα ναι... απλα μπερδευομουν λιγο στις τιμες των σχεσιακων τελεστών. Οποτε για 0==0 συνεχιζει και η συναρτηση να κανει την δουλεια της με την διαιρεση ε?
Κατι ακομη... την συναρτηση που ακριβως την καλεις μεσα στο do ... while???? Μεσα στην συνθήκη ας πουμε ε????
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 31 Ιούλ 2011, 21:29

Star_Light έγραψε:
Κατι ακομη... την συναρτηση που ακριβως την καλεις μεσα στο do ... while???? Μεσα στην συνθήκη ας πουμε ε????

Ναι, γράφοντας το όνομά της και περνώντας της ορίσματα.
Τελευταία επεξεργασία από migf1 και 31 Ιούλ 2011, 21:31, έχει επεξεργασθεί 1 φορά/ες συνολικά
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 31 Ιούλ 2011, 21:31

Star_Light έγραψε:
[snip]
Οποτε για 0==0 συνεχιζει και η συναρτηση να κανει την δουλεια της με την διαιρεση ε?
[snip]

Όχι, όταν επιστρέφει 0 η συγκεκριμένη συνάρτηση σημαίνει πως κάτι δεν πήγε καλά.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό stamatiou » 31 Ιούλ 2011, 23:21

Να και η λύση της άσκησης:
Spoiler: show
Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int check(int guess,int right,int lim) {
if(guess <= 0 || guess > lim) {
return -1;
}else if(guess < right) {
return 0;
}else if(guess > right) {
return 1;
}else {
return 2;
}
return 3;
}

int main(void) {
char inbuf[256];
int guess,right,lim = 150,counter=0;
srand(time(NULL));
right = rand() % 151;
printf("Enter the number: ");
while((check(guess,right,lim)) != 2) {
fgets(inbuf,256,stdin);
guess = atoi(inbuf);
if((check(guess,right,lim)) == 0) {
printf("No it is higher, try again: ");
}else if ((check(guess,right,lim)) == 1) {
printf("No it is less, try again: ");
}else if ((check(guess,right,lim)) == -1) {
printf("The limit is from 0 to 150! Try again: ");
}
counter++;
}
printf("Congratulations! You found it with only %d tries!\n",counter);
return 0;
}

Αυτό με τον πίνακα δεν το κατάλαβα, γιατί να το βάλουμε;
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό Star_Light » 01 Αύγ 2011, 00:12

migf1 έγραψε:
Star_Light έγραψε:
[snip]
Οποτε για 0==0 συνεχιζει και η συναρτηση να κανει την δουλεια της με την διαιρεση ε?
[snip]

Όχι, όταν επιστρέφει 0 η συγκεκριμένη συνάρτηση σημαίνει πως κάτι δεν πήγε καλά.


α ναι... οποτε συνεχιζει να ζηταει τιμες εγκυρες απο τον χρηστη... σε αυτο το σημειο να πω κατι?
Θα σας πειραζε να μην προχωρησετε αυριο ωστε να κοιταξω αυριο την ασκηση???? (εννοειται οχι απο το spoiler του σταματιου!) :D
αν δεν σας πειραζει οκ.
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό stamatiou » 01 Αύγ 2011, 00:13

Βέβαια! Συνεχίζουμε όποτε θέλεις! :D
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 01 Αύγ 2011, 00:29

Γιατί να μας πειράξει βρε συ, χαλαρά :)

Φίλε Σταματίου, ωραία προσπάθεια η λύση, αλλά έχει 2 θέματα. Δεν ζητάει το ανώτατο όριο από τον χρήστη και μετράει λάθος τις προσπάθειες (μετράει κανονικά και τις μαντεψιές που είναι εκτός ορίων).

Αυτό με το πίνακα το έβαλα για να μια πρώτη εξοικείωση, γιατί μετά τις συναρτήσεις λέω να πάμε σε πίνακες. Προσπαθήστε να το κάνετε με τον πίνακα, όπως γράφω στην εκφώνηση, αλλιώς δεν πολυ-έχουν νόημα και οι τιμές επιστροφής της συνάρτησης.

Ή να το δώσω καλύτερα σε spoiler;
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

ΠροηγούμενηΕπόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι