mariamx83 Δημοσ. 21 Δεκεμβρίου 2020 Δημοσ. 21 Δεκεμβρίου 2020 Καλησπέρα , έχω να λύσω την παρακάτω άσκηση Να κατασκευάσετε παιχνίδι με όνομα «Βρες τον Αριθμό», το οποίο θα θέτει έναν τ υ χ α ί ο ακέραιο αριθμό από το διάστημα (1,1000) και το πρόγραμμα σας θα ρωτά το χρήστη να τον ανακαλύψει. Το πρόγραμμα θα τερματίζει αν ο αριθμός βρεθεί, ή αν ο χρήστης έχει προσπαθήσει 10 φορές και ο αριθμός ακόμα δεν έχει βρεθεί. Ανάλογα με το νούμερο που θα δίνει ο χρήστης (πρέπει να είναι θετικό, ακέραιο, μεταξύ (1,1000), με έλεγχο), το πρόγραμμα σας θα απαντά στο χρήστη με: το σύμβολο «>» αν ο αριθμός που έδωσε ο χρήστης είναι πιο μεγάλος από το ζητούμενο, το σύμβολο «<» αν ο αριθμός που έδωσε ο χρήστης είναι πιο μικρός από το ζητούμενο και το μήνυμα «Μπράβο» στα Ελληνικά αν ο χρήστης βρει τον αριθμό μέσα στις 10 προσπάθειες. Έχω φτιάξει τη rand για τους τυχαίους αριθμούς είναι οκ , δουλευει μια χαρά. Πήγα να κάνω τις επιλογές με for και if αλλά δεν κάνει καθόλου την loop και τους ελέγχους...μπορεί κάποιος να βοηθήσει?
Moderators Kercyn Δημοσ. 21 Δεκεμβρίου 2020 Moderators Δημοσ. 21 Δεκεμβρίου 2020 Καλημέρα! Βάλε σε παρακαλώ τον κώδικά σου να τον δούμε, χωρίς αυτόν δε μπορούμε να μαντέψουμε γιατί δε δουλεύει. 1
mariamx83 Δημοσ. 21 Δεκεμβρίου 2020 Μέλος Δημοσ. 21 Δεκεμβρίου 2020 #include <stdio.h> #include <stdlib.h> #include <time.h> int main () { system("CHCP 1253"); system("CLS"); int i,secret , epilogi; srand (time(0)); secret = rand()%1000 +1; printf("Âñåò ôïí áñéèìü áðü ôï 1 åùò ôï 1000:\n",epilogi); for(i=0; i<10; i++) if(epilogi<secret) { printf(">\n"); } else if (epilogi>secret) { printf("<\n"); } else if(epilogi==secret) { printf("ÌðñÜâï!\n"); } else (epilogi!=secret); printf("\n\n"); system("PAUSE"); return 0; σίγουρα έχω λάθος απο τη rand και μετα αλλα εχω κολλησει και δεν το βρησκω
dhmm Δημοσ. 21 Δεκεμβρίου 2020 Δημοσ. 21 Δεκεμβρίου 2020 #include <stdio.h> int main() { int r = 0; r = (rand() % 1000 ) + 1; int num = 0; int cnt = 0; do { printf("Poio arithmo epilexa ? : "); scanf("%i" ,&num); if(num < r) { printf(" > \n"); cnt++; } else if (num > r) { printf(" < \n"); cnt++; } else { printf("Mprabo brikate se %i fores",cnt); } }while(num != r); return 0; }
Moderators Kercyn Δημοσ. 21 Δεκεμβρίου 2020 Moderators Δημοσ. 21 Δεκεμβρίου 2020 Το πιο σημαντικό πράγμα όταν πάμε να γράψουμε κώδικα είναι να είναι 100% ξεκάθαρο στο κεφάλι μας τι είναι αυτό που θέλουμε να πετύχουμε. Αφού σιγουρευτούμε ότι ξέρουμε τι θέλουμε να κάνουμε, τότε και μόνο τότε πάμε να μεταφράσουμε τη σκέψη μας σε κώδικα. Αν παρατηρήσεις προσεκτικά τον κώδικά σου, θα παρατηρήσεις ότι δεν αναθέτεις πουθενά τιμή στη μεταβλητή epilogi. Στη συνέχεια ξεκινάς ένα loop στο οποίο ελέγχεις 10 φορές την τιμή της epilogi, χωρίς όμως ποτέ να ανανεώνεις την τιμή της (διαβάζοντας νέο αριθμό από το χρήστη). Επίσης, το loop αυτό θα τρέξει πάντα 10 φορές, ανεξαρτήτως αν ο χρήστης βρει τον αριθμό ή όχι. Τέλος, το else δεν παίρνει συνθήκη. Κάτι άλλο το οποίο δεν είναι ακριβώς λάθος αλλά σίγουρα θα σου δημιουργήσει πρόβλημα αν το συνεχίσεις είναι η έλλειψη brackets μετά το for. Όπως έχεις βάλει {} για να περικλείσεις τον κώδικα του if, έτσι βάλε και για το for. Αυτό που θα σου πρότεινα εγώ είναι πρώτον να εξηγήσεις αυτό που θέλεις να επιτύχεις με δικά σου λόγια, αφήνοντας απ' έξω τον κώδικα (δηλαδή να περιγράψεις αυτό που θες να κάνει το πρόγραμμά σου χωρίς να συμπεριλάβεις τεχνικές λεπτομέρειες και το "πώς" θα το πετύχεις), και στη συνέχεια να κάνεις μια επανάληψη στις δομές ελέγχου και επανάληψης της C (if, for). 2
mariamx83 Δημοσ. 21 Δεκεμβρίου 2020 Μέλος Δημοσ. 21 Δεκεμβρίου 2020 24 λεπτά πριν, dhmm είπε #include <stdio.h> int main() { int r = 0; r = (rand() % 1000 ) + 1; int num = 0; int cnt = 0; do { printf("Poio arithmo epilexa ? : "); scanf("%i" ,&num); if(num < r) { printf(" > \n"); cnt++; } else if (num > r) { printf(" < \n"); cnt++; } else { printf("Mprabo brikate se %i fores",cnt); } }while(num != r); return 0; } το τρεχω , βαζω αριθμο και δεν σταμαει το προγραμμα..συνεχιζει και βγαζει το μηνυμα απειρες φορες..
Moderators Kercyn Δημοσ. 21 Δεκεμβρίου 2020 Moderators Δημοσ. 21 Δεκεμβρίου 2020 4 λεπτά πριν, mariamx83 είπε το τρεχω , βαζω αριθμο και δεν σταμαει το προγραμμα..συνεχιζει και βγαζει το μηνυμα απειρες φορες.. Δοκίμασες να το κάνεις debug;
mariamx83 Δημοσ. 21 Δεκεμβρίου 2020 Μέλος Δημοσ. 21 Δεκεμβρίου 2020 πρεπει να βαλω και for γιατι πρεπει να τρεχει μονο 10 φορες και μετα να τερματιζει
dhmm Δημοσ. 21 Δεκεμβρίου 2020 Δημοσ. 21 Δεκεμβρίου 2020 7 λεπτά πριν, mariamx83 είπε το τρεχω , βαζω αριθμο και δεν σταμαει το προγραμμα..συνεχιζει και βγαζει το μηνυμα απειρες φορες.. Το έχω δοκιμάσει απλά σε online compiler. Δες μήπως ξεφεύγει κάτι.
mariamx83 Δημοσ. 21 Δεκεμβρίου 2020 Μέλος Δημοσ. 21 Δεκεμβρίου 2020 (επεξεργασμένο) 5 λεπτά πριν, dhmm είπε Το έχω δοκιμάσει απλά σε online compiler. Δες μήπως ξεφεύγει κάτι. θελει και loop ομως γιατι δεν σταματαει στις 10 φορες που ζηταει η ασκηση..επισης τυπωνει συνεχεια το πρωτο printf , > Επεξ/σία 21 Δεκεμβρίου 2020 από mariamx83
dhmm Δημοσ. 21 Δεκεμβρίου 2020 Δημοσ. 21 Δεκεμβρίου 2020 #include <stdio.h> #include <time.h> int main() { srand(time(0)); int r = 0; r = (rand() % 1000 ) + 1; printf("%i",r); int num = 0; int cnt = 0; int maxt = 10; for(maxt;maxt > 0 && num !=r ;maxt--) { printf("Poio arithmo epilexa ? : "); scanf("%i" ,&num); if(num < r) { printf(" > \n"); cnt++; } else if (num > r) { printf(" < \n"); cnt++; } else { printf("Mprabo brikate se %i fores", ++cnt); } } if(maxt==0 && num != r) { printf("Den brhkate htan o arithmow %i ",r); } return 0; }
mariamx83 Δημοσ. 21 Δεκεμβρίου 2020 Μέλος Δημοσ. 21 Δεκεμβρίου 2020 11 λεπτά πριν, dhmm είπε #include <stdio.h> #include <time.h> int main() { srand(time(0)); int r = 0; r = (rand() % 1000 ) + 1; printf("%i",r); int num = 0; int cnt = 0; int maxt = 10; for(maxt;maxt > 0 && num !=r ;maxt--) { printf("Poio arithmo epilexa ? : "); scanf("%i" ,&num); if(num < r) { printf(" > \n"); cnt++; } else if (num > r) { printf(" < \n"); cnt++; } else { printf("Mprabo brikate se %i fores", ++cnt); } } if(maxt==0 && num != r) { printf("Den brhkate htan o arithmow %i ",r); } return 0; } η for που εχω βαλει ειναι αυτη for(i=0; i<10; i++); , ομως δεν δουλευει.. θελει συγκεκριμενα 10 φορες 17 λεπτά πριν, dhmm είπε #include <stdio.h> #include <time.h> int main() { srand(time(0)); int r = 0; r = (rand() % 1000 ) + 1; printf("%i",r); int num = 0; int cnt = 0; int maxt = 10; for(maxt;maxt > 0 && num !=r ;maxt--) { printf("Poio arithmo epilexa ? : "); scanf("%i" ,&num); if(num < r) { printf(" > \n"); cnt++; } else if (num > r) { printf(" < \n"); cnt++; } else { printf("Mprabo brikate se %i fores", ++cnt); } } if(maxt==0 && num != r) { printf("Den brhkate htan o arithmow %i ",r); } return 0; } το εβαλα copy paste στο Dev και βγαζει error
dhmm Δημοσ. 21 Δεκεμβρίου 2020 Δημοσ. 21 Δεκεμβρίου 2020 8 λεπτά πριν, mariamx83 είπε η for που εχω βαλει ειναι αυτη for(i=0; i<10; i++); , ομως δεν δουλευει.. θελει συγκεκριμενα 10 φορες το εβαλα copy paste στο Dev και βγαζει error //ΒΑΛΕ ΚΑΙ num !=r for(int i=0;i<10 && num !=r ;i++)
dhmm Δημοσ. 21 Δεκεμβρίου 2020 Δημοσ. 21 Δεκεμβρίου 2020 5 λεπτά πριν, sacafoutre είπε Μπορείς να αλλάξεις τον κώδικα του @dhmm και να βάλεις την for που θες και να έχεις και ένα break. Π.χ.: @sacafoutre είχα βάλει condition για num!=r κάτι το οποίο σημάινει ότι δεν χρειάζεται το break διότι θα σταματήσει ούτως η άλλως. for(maxt;maxt > 0 && num !=r ;maxt--) 26 λεπτά πριν, dhmm είπε #include <stdio.h> #include <time.h> int main() { srand(time(0)); int r = 0; r = (rand() % 1000 ) + 1; printf("%i",r); int num = 0; int cnt = 0; int maxt = 10; for(maxt;maxt > 0 && num !=r ;maxt--) { printf("Poio arithmo epilexa ? : "); scanf("%i" ,&num); if(num < r) { printf(" > \n"); cnt++; } else if (num > r) { printf(" < \n"); cnt++; } else { printf("Mprabo brikate se %i fores", ++cnt); } } if(maxt==0 && num != r) { printf("Den brhkate htan o arithmow %i ",r); } return 0; } @mariamx83 ο αρχικός κώδικας είναι αυτός. Διαφορετικό for έβαλες
mariamx83 Δημοσ. 21 Δεκεμβρίου 2020 Μέλος Δημοσ. 21 Δεκεμβρίου 2020 6 λεπτά πριν, dhmm είπε @sacafoutre είχα βάλει condition για num!=r κάτι το οποίο σημάινει ότι δεν χρειάζεται το break διότι θα σταματήσει ούτως η άλλως. for(maxt;maxt > 0 && num !=r ;maxt--) @mariamx83 ο αρχικός κώδικας είναι αυτός. Διαφορετικό for έβαλες και παλι βγαζει error : id returned 1 exit status
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα