Προς το περιεχόμενο

ΑΣΚΗΣΗ C


mariamx83

Προτεινόμενες αναρτήσεις

Καλησπέρα , έχω να λύσω την παρακάτω άσκηση

Να κατασκευάσετε παιχνίδι με όνομα «Βρες τον Αριθμό», το οποίο θα θέτει έναν  τ υ χ α ί ο  ακέραιο αριθμό από το διάστημα (1,1000) και το πρόγραμμα σας θα ρωτά το χρήστη να τον ανακαλύψει. Το πρόγραμμα θα τερματίζει αν ο αριθμός βρεθεί, ή αν ο χρήστης έχει προσπαθήσει 10 φορές και ο αριθμός ακόμα δεν έχει βρεθεί. Ανάλογα με το νούμερο που θα δίνει ο χρήστης (πρέπει να είναι θετικό, ακέραιο, μεταξύ (1,1000), με έλεγχο), το πρόγραμμα σας θα απαντά στο χρήστη με:

  • το σύμβολο «>» αν ο αριθμός που έδωσε ο χρήστης είναι πιο μεγάλος από το ζητούμενο,
  • το σύμβολο «<» αν ο αριθμός που έδωσε ο χρήστης είναι πιο μικρός από το ζητούμενο και
  • το μήνυμα «Μπράβο» στα Ελληνικά αν ο χρήστης βρει τον αριθμό μέσα στις 10 προσπάθειες.

 

Έχω φτιάξει τη rand για τους τυχαίους αριθμούς είναι οκ , δουλευει μια χαρά. Πήγα να κάνω τις επιλογές με for και if αλλά δεν κάνει καθόλου την loop και τους ελέγχους...μπορεί κάποιος να βοηθήσει?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Moderators

Καλημέρα! Βάλε σε παρακαλώ τον κώδικά σου να τον δούμε, χωρίς αυτόν δε μπορούμε να μαντέψουμε γιατί δε δουλεύει.

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

#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 και μετα αλλα εχω κολλησει και δεν το βρησκω

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

#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

Το πιο σημαντικό πράγμα όταν πάμε να γράψουμε κώδικα είναι να είναι 100% ξεκάθαρο στο κεφάλι μας τι είναι αυτό που θέλουμε να πετύχουμε. Αφού σιγουρευτούμε ότι ξέρουμε τι θέλουμε να κάνουμε, τότε και μόνο τότε πάμε να μεταφράσουμε τη σκέψη μας σε κώδικα.

Αν παρατηρήσεις προσεκτικά τον κώδικά σου, θα παρατηρήσεις ότι δεν αναθέτεις πουθενά τιμή στη μεταβλητή epilogi. Στη συνέχεια ξεκινάς ένα loop στο οποίο ελέγχεις 10 φορές την τιμή της epilogi, χωρίς όμως ποτέ να ανανεώνεις την τιμή της (διαβάζοντας νέο αριθμό από το χρήστη). Επίσης, το loop αυτό θα τρέξει πάντα 10 φορές, ανεξαρτήτως αν ο χρήστης βρει τον αριθμό ή όχι. Τέλος, το else δεν παίρνει συνθήκη.

Κάτι άλλο το οποίο δεν είναι ακριβώς λάθος αλλά σίγουρα θα σου δημιουργήσει πρόβλημα αν το συνεχίσεις είναι η έλλειψη brackets μετά το for. Όπως έχεις βάλει {} για να περικλείσεις τον κώδικα του if, έτσι βάλε και για το for.

Αυτό που θα σου πρότεινα εγώ είναι πρώτον να εξηγήσεις αυτό που θέλεις να επιτύχεις με δικά σου λόγια, αφήνοντας απ' έξω τον κώδικα (δηλαδή να περιγράψεις αυτό που θες να κάνει το πρόγραμμά σου χωρίς να συμπεριλάβεις τεχνικές λεπτομέρειες και το "πώς" θα το πετύχεις), και στη συνέχεια να κάνεις μια επανάληψη στις δομές ελέγχου και επανάληψης της C (if, for).

  • Like 2
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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
4 λεπτά πριν, mariamx83 είπε

το τρεχω , βαζω αριθμο και δεν σταμαει το προγραμμα..συνεχιζει και βγαζει το μηνυμα απειρες φορες..

 

Δοκίμασες να το κάνεις debug;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

7 λεπτά πριν, mariamx83 είπε

το τρεχω , βαζω αριθμο και δεν σταμαει το προγραμμα..συνεχιζει και βγαζει το μηνυμα απειρες φορες..

 

Το έχω δοκιμάσει απλά σε online compiler. Δες μήπως ξεφεύγει κάτι.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)
5 λεπτά πριν, dhmm είπε

Το έχω δοκιμάσει απλά σε online compiler. Δες μήπως ξεφεύγει κάτι.

θελει και loop ομως γιατι δεν σταματαει στις 10 φορες που ζηταει η ασκηση..επισης τυπωνει συνεχεια το πρωτο printf , >

Επεξ/σία από mariamx83
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

#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;
}

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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++)
                 
                 
                
 

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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 έβαλες

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

6 λεπτά πριν, dhmm είπε

@sacafoutre είχα βάλει condition για num!=r κάτι το οποίο σημάινει ότι δεν χρειάζεται το break διότι θα σταματήσει ούτως η άλλως.


 for(maxt;maxt > 0 && num !=r ;maxt--)
    

 

@mariamx83 ο αρχικός κώδικας είναι αυτός. Διαφορετικό for έβαλες

και παλι βγαζει error : id returned 1 exit status

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...