status Δημοσ. 14 Μαρτίου 2012 Δημοσ. 14 Μαρτίου 2012 Καλησπέρα, έχω ένα θέμα με τον παρακάτω κώδικα, Θέλω να τον κάνω να έχει ένα εύρος από 0-20 (πχ) στις τιμές που θα δίνει ο χρήστης, όχι στο πεδίο num αλλά στο value. >#include <stdio.h> void main (void) { int num, value; int i=0, sum=0; printf ("Plithos mathimaton:"); scanf("%d",&num); while(i<num) { printf ("Vathmos mathimatos %d : ",i+1); scanf ("%f",&value); sum +=value; i++; } double m_o = 0; m_o = (sum/num); printf ("O M.O einai: %f\n", m_o); getch(); } *Ο κώδικας δεν είναι εντελώς δικός μου.
-nick- Δημοσ. 14 Μαρτίου 2012 Δημοσ. 14 Μαρτίου 2012 Στην ουσια λοιπον θες αλλο ενα while , μια λουπα δηλαδη που θα τρεχει οσο ο χρηστης δινει τιμη εκτος ευρους.
gang Δημοσ. 14 Μαρτίου 2012 Δημοσ. 14 Μαρτίου 2012 Αυτό που λέει ο nick γύρω από την scanf ( value ) με έλεγχο...
status Δημοσ. 14 Μαρτίου 2012 Μέλος Δημοσ. 14 Μαρτίου 2012 Αυτό που λέει ο nick γύρω από την scanf ( value ) με έλεγχο... >scanf("%d",&num); while(i<num) Ανάμεσα εδώ δηλαδή;
-nick- Δημοσ. 14 Μαρτίου 2012 Δημοσ. 14 Μαρτίου 2012 Εμφωλευμενο μεσα στο αλλο while, Πανω απο την scanf > while(true) { scanf ("%f",&value); if (value>0 && value<20) break; else ektypose " metaksy 0 kai 20" }
Chrisxxx Δημοσ. 14 Μαρτίου 2012 Δημοσ. 14 Μαρτίου 2012 Καλησπέρα, έχω ένα θέμα με τον παρακάτω κώδικα, Θέλω να τον κάνω να έχει ένα εύρος από 0-20 (πχ) στις τιμές που θα δίνει ο χρήστης, όχι στο πεδίο num αλλά στο value. >#include <stdio.h> void main (void) { int num, value; int i=0, sum=0; printf ("Plithos mathimaton:"); scanf("%d",&num); while(i<num) { printf ("Vathmos mathimatos %d : ",i+1); scanf ("%f",&value); sum +=value; i++; } double m_o = 0; m_o = (sum/num); printf ("O M.O einai: %f\n", m_o); getch(); } *Ο κώδικας δεν είναι εντελώς δικός μου. Δεν θυμαμαι καθολου κωδικα έχω να γραψω καμια πενταετια Ετσι όπως ειναι βάλε ενα if ωστε μετά το scanf ("%f",&value) όπου αν ειναι το f ανάμεσα στο 0 - 20 θα εκτελει αυτον τον κώδικα sum +=value; i++; αν όχι θα εμφανιζει μια printf (" Aπο 0 - 20 ειπαμε ρε μακακα, δωσε ξανα αριθμο");.
Haldol Δημοσ. 14 Μαρτίου 2012 Δημοσ. 14 Μαρτίου 2012 Στην ουσία θέλεις κάτι τέτοιο, μέσα στην while που ήδη έχεις. >do { // Εμφάνιση μηνύματος & είσοδος τιμής. } while (value < 1 || value > 20); Υπόψιν. Το sum += value; και το i++ θα πρέπει να εκτελεστούν μόνο σε είσοδο έγκυρου αριθμού, οπότε μένουν έξω από την do-while. -------------------- Σημ.1: Καλό θα ήταν να βάλεις και ένα μήνυμα σε περίπτωση εισαγωγής μη-έγκυρου αριθμού. Σημ.2: Εάν θυμάμαι καλά πως λειτουργεί, θα αντιμετωπίσεις ένα πρόβλημα με τον buffer της scanf(). Δε σου λέω τι όμως.
spacecake1 Δημοσ. 14 Μαρτίου 2012 Δημοσ. 14 Μαρτίου 2012 Δεν καταλαβαίνω τι ακριβώς θές όποτε θα προσπαθήσω να μαντέψω Scenario A) αν η τιμή είναι εκτός ορίων ξαναρωτάει #include <stdio.h> void main (void) { int num, value; int i=0, sum=0; printf ("Plithos mathimaton:"); scanf("%d",&num); while(i<num) { printf ("Vathmos mathimatos %d : ",i+1); scanf ("%f",&value); if (value>=0& value<=20) { sum +=value; i++; } else { "mhnuma pou leei xapaprospathhse" } } double m_o = 0; m_o = (sum/num); printf ("O M.O einai: %f\n", m_o); getch(); } [/b][/b] Scenario αν η τιμή είναι εκτός ορίων την φράσει #include <stdio.h> void main (void) { int num, value; int i=0, sum=0; printf ("Plithos mathimaton:"); scanf("%d",&num); while(i<num) { printf ("Vathmos mathimatos %d : ",i+1); scanf ("%f",&value); if (value<0) {value =0;} if (value>20) {value =20;} sum +=value; i++; } double m_o = 0; m_o = (sum/num); printf ("O M.O einai: %f\n", m_o); getch(); }
pappous_soulis Δημοσ. 14 Μαρτίου 2012 Δημοσ. 14 Μαρτίου 2012 >#include <stdio.h> void main (void) { int num, value; int i=0, sum=0; printf ("Plithos mathimaton:"); scanf("%d",&num); while(i<num) { printf ("Vathmos mathimatos %d : ",i+1); do{ scanf ("%f",&value); }while((value>20)||(value<0)); sum +=value; i++; } double m_o = 0; m_o = (sum/num); printf ("O M.O einai: %f\n", m_o); getch(); }
status Δημοσ. 14 Μαρτίου 2012 Μέλος Δημοσ. 14 Μαρτίου 2012 Στην ουσία θέλεις κάτι τέτοιο, μέσα στην while που ήδη έχεις. >do { // Εμφάνιση μηνύματος & είσοδος τιμής. } while (value < 1 || value > 20); Υπόψιν. Το sum += value; και το i++ θα πρέπει να εκτελεστούν μόνο σε είσοδο έγκυρου αριθμού, οπότε μένουν έξω από την do-while. -------------------- Σημ.1: Καλό θα ήταν να βάλεις και ένα μήνυμα σε περίπτωση εισαγωγής μη-έγκυρου αριθμού. Σημ.2: Εάν θυμάμαι καλά πως λειτουργεί, θα αντιμετωπίσεις ένα πρόβλημα με τον buffer της scanf(). Δε σου λέω τι όμως. Μήπως αυτό σε βοηθήσει να μιλήσεις;
status Δημοσ. 15 Μαρτίου 2012 Μέλος Δημοσ. 15 Μαρτίου 2012 Το βρήκα ρε, scanf ("%f",&value);" και από πάνω ήταν δηλωμένη σαν int;P
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα