Kapws Δημοσ. 29 Οκτωβρίου 2009 Δημοσ. 29 Οκτωβρίου 2009 Καλησπέρα, Μάς έβαλαν μια εργασία (απλή) στην σχολή η οποία αφορά κυρίως αθροίσματα,μέγιστους , ελάχιστους και τα σχετικά. Θα είναι ο χρήστης λοιπόν, ο οποίος θα ερωτάται για το αν θέλει να δώσει συγκεκριμένο πλήθος αριθμών( ας πατήσει π.χ. f) ή να αρχίσει να δίνει όσους γουστάρει (ας πατήσει w) και οταν θέλει να τελειώσει να δώσει π.χ. το 0. (Αυτή η ερώτηση μας είπε ο καθηγητής θέλει να μην βρίσκεται στην αρχή του προγράμματος με μορφή 2 απλών If..αλλά σε μία επανάληψη που θα τον ρωτάει συνέχει μέχρι να ματώσουν τα μάτια του χρήστη (σε περίπτωση που πατάει λάθος γράμμα) :shock: Ο κώδικας που κατάφερα λοιπόν να φτιάξω είναι αυτός: >#include <stdio.h> int main() { int min, max, sum, x, count, i, k; char f, w, r; printf("\nMegisto, Elaxisto, Athroisma, Mesos Oros\n"); do { printf("\nDwse mou f an ksereis to plithos twn arithmwn i w an den to ksereis"); scanf("%C",&r); }while((r=!'f') || (r=!'w')); if(r='f') { printf("\nDwse mou to plithos twn arithmwn pou tha dwseis\n"); scanf("%d",&k); printf("\ndwse mou ton 1o arithmo\n"); scanf("%f",x); sum=0; min=x; max=x; for(i=2;i<=k;i++); { sum = sum +x; if(x<min) min=x; if(x>max) max=x; printf("\ndwse mou ton %do arithmo\n",i); scanf("%f",&x); } printf("\n O megaluteros arithmos einai o %f\n",max); printf("\n O mikroteros arithmos einai o %f\n",min); printf("\n To athroisma einai %f\n",sum); printf("\n O mesos oros einai %f\n",(float)sum/k); system("pause"); } else if(r='w') { sum=count=0; max=-2100000000; min=2100000000; do { count++; printf("dwse mou ton %do arithmo\n",count); scanf("%d",&x); if(!x)break; sum=sum+x; if(x<min)min= x;if(x>max) max = x; }while(x); printf("\n O megaluteros arithmos einai o %f\n",max); printf("\n O mikroteros arithmos einai o %f\n",min); printf("\n To athroisma einai %f\n",sum); printf("\n O mesos oros einai %f\n",(float)sum/count); system("pause"); } } Το πρόβλημα που μου εμφανίζει αυτό το πρόγραμμα που έφτιαξα είναι ότι στην αρχική ερώτηση Ο,ΤΙ ΚΑΙ ΝΑ ΠΑΤΗΣΩ....αυτό πηγαίνει κατευθίαν στο πρώτο if και με ρωτάει όπως είναι φυσικό , να δώσω πλήθος αριθμών. Δώστε μου λοιπόν τα φώτα σας όσοι μπορείτε γιατί πρέπει να την παραδώσω αύριο και ο χρόνος είναι περιορισμένος και λόγω δουλειάς :S Eυχαριστώ εκ των προτέρων.
teo64x Δημοσ. 29 Οκτωβρίου 2009 Δημοσ. 29 Οκτωβρίου 2009 Έχεις ένα λογικό λάθος. Θέλεις "αν r διάφορο του 'f' και r διάφορο του 'w'", όχι ή. Επίσης, ο τελεστής ανισότητας είναι !=, όχι =!. Να θυμάσαι ότι το ! μπαίνει πάντα πριν από αυτό το οποίο θέλεις να αναστρέψεις (όπως π.χ. !strcmp(...) αν θες να εκφράσεις το "not strcmp"). Τέλος, πιθανόν να θέλεις να κάνεις το πρώτο όρισμα της scanf σου "%c\n", αλλιώς για κάθε μη επιθυμητό input στην πρώτη ερώτηση, το μήνυμα θα εμφανίζεται δύο επιπλέον φορές (λόγω του ότι το enter/return διαβάζεται ως χαρακτήρας από την επόμενη επανάληψη).
Kapws Δημοσ. 29 Οκτωβρίου 2009 Μέλος Δημοσ. 29 Οκτωβρίου 2009 Έχεις απόλυτο δίκιο. Σε ευχαριστώ πάρα πολύ!!!! Καλά όπου να 'ναι το 'χω το κεφάλι μου
bxenos Δημοσ. 30 Οκτωβρίου 2009 Δημοσ. 30 Οκτωβρίου 2009 επιπλέον: αυτό το if είναι πάντα αληθές! > if(r='f') άλλο = και άλλο ==
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.