Helenaki_Thess Δημοσ. 27 Οκτωβρίου 2009 Δημοσ. 27 Οκτωβρίου 2009 Γεια σε ολους! Είμαι καινούρια στον προγραμματισμό και μου έχει ζητηθεί το εξής : Να διαβαστούν οι βαθμοί 10 μαθητών και να υπολογισθεί ο μέσος ορός των βαθμών τους. Εγώ έγραψα τον παρακάτω κώδικα ο οποίος λειτούργησε σωστά... #include <stdio.h> void main () { int metr; int synolo=0; float average; int va8m; for(metr=1;metr<6;metr++) { printf("Dwse va8mo gia to ma8ima %d: ",metr); scanf("%d",&va8m); synolo=synolo+va8m; } average=synolo/5; printf("o mesos oros einai %.2f",average); } αλλά στην συνεχεία μου ζητήθηκε και κάτι παραπάνω στο οποίο έχω κολλήσει Αν ο βαθμός είναι μικρότερος του 0 η μεγαλύτερος του 20 δεν θεωρείται έγκυρος Μπορεί να με βοηθήσει κανένας σε αυτό?
javavall Δημοσ. 27 Οκτωβρίου 2009 Δημοσ. 27 Οκτωβρίου 2009 > while( va8mos<0 ||va8mos va8mos>20){ printf("Dwse va8mo gia to ma8ima %d: ",metr); scanf("%d",&va8m); If( va8mos<0 || va8mos>20){ printf("O va8mos pou edwses den einai eguros"); } }
Helenaki_Thess Δημοσ. 27 Οκτωβρίου 2009 Μέλος Δημοσ. 27 Οκτωβρίου 2009 Ευχαριστώ πολύ Javavall Δηλαδή άκυρη η For ?
Bspus Δημοσ. 27 Οκτωβρίου 2009 Δημοσ. 27 Οκτωβρίου 2009 Καταρχην, λες οτι θες το Μ.Ο 10 βαθμων και υπολογιζεις για 5! Για το δευτερο, πρεπει μεσα στο for loop να βαλεις και ελεγχο για το βαθμο. Ενας ευκολος τροπος ειναι ο εξης > for(metr=1;metr<6;metr++) { printf("Dwse va8mo gia to ma8ima %d: ",metr); scanf("%d",&va8m); if ((va8m<0) || (va8m>20)) { printf("Lathos vathmos. Xanadoste"); metr--; } else { synolo=synolo+va8m; } } δεν το ετρεξα, οποτε μπορει να μου εχει ξεφυγει κανενα λαθος αλλα καταλαβαινεις πιστευω τι παω να κανω.
Helenaki_Thess Δημοσ. 27 Οκτωβρίου 2009 Μέλος Δημοσ. 27 Οκτωβρίου 2009 Έβγαλα μια άκρη. Σας ευχαριστώ!! Ειστε πολύ καλοί..
javavall Δημοσ. 27 Οκτωβρίου 2009 Δημοσ. 27 Οκτωβρίου 2009 Εναλλακτικά > int counter = 0; while( (va8mos<0 || va8mos>20) && (counter<10)){ printf("Dwse va8mo gia to ma8ima %d: ",metr); scanf("%d",&va8m); if (va8mos<0 || va8mos>20){ printf("Mi eguros va8mos"); }else{ synolo=synolo+va8m; counter++; } }
Helenaki_Thess Δημοσ. 27 Οκτωβρίου 2009 Μέλος Δημοσ. 27 Οκτωβρίου 2009 Τελικά κατέληξα σ αυτο : #include <stdio.h> void main () { int metr; int synolo=0; float average; int va8m; for(metr=1;metr<11;metr++) { printf("Dwse va8mo gia to ma8ima %d: ",metr); scanf("%d",&va8m); if ((va8m<0) || (va8m>20)) { printf("Lathos vathmos. Dokimase ksana \n"); metr--; } else { } synolo=synolo+va8m; } average=synolo/10; printf("o mesos oros einai %.2f",average); }
Bspus Δημοσ. 27 Οκτωβρίου 2009 Δημοσ. 27 Οκτωβρίου 2009 Το synolo=synolo+va8m; πρεπει να ειναι μεσα στο else { } Ετσι οπως ειναι τωρα προσθετει στο συνολο και τους λαθος βαθμους
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.