deminho11 Δημοσ. 14 Μαρτίου 2009 Δημοσ. 14 Μαρτίου 2009 Είμαι καινούργιος στον προγραμματισμό και έφτιαξα αυτό το πρόγραμμα... Κάνω compile κανονικά μου βγάζει στην αρχή το μήνυμα που πρέπει και μολις δώσω μια τιμή και πατίσω Enter το πρόγραμμα σβήνει και βγάζει σφάλμα... >#include <stdio.h> int main(void) { int v1,v2,v3,v4,v5,mo; printf("Dwse tin ba8mologia\n"); scanf("%d","%d","%d","%d","%d", &v1,&v2,&v3,&v4,&v5); mo=(v1+v2+v3+v4+v5)/5; if (mo<5) { printf("kopikes\n"); } else if (mo<6 && mo>=5) { printf("kalos\n"); } else if (mo>=6 && mo<8) { printf("lian kalos\n"); } else { printf("arista\n"); } }
parsifal Δημοσ. 14 Μαρτίου 2009 Δημοσ. 14 Μαρτίου 2009 1. Χρησιμοποιείς λάθος σύνταξη στην εντολή scanf 2. (Κάτι που δεν προκαλεί το πρόβλημα εκτέλεσης στον κώδικά σου, αλλά είναι εντελώς περιττό) : Οι συνθήκες που έχεις μέσα στις εντολές if δεν χρειάζεται να είναι τόσο σύνθετες. Δες στο τέλος αυτού του μηνύματος πόσο πιο απλές μπορούν να γίνουν 3. Στο τέλος της συνάρτησης main, πρέπει να επιστρέφεται με την εντολή return μία ακέραια τιμή στο περιβάλλον της καλούσας διεργασίας (αυτή θα είναι συνήθως κάποιο κέλυφος). Κατά σύμβαση, για να υποδηλωθεί ότι το πρόγραμμα εκτελέστηκε χωρίς σφάλματα, επιλέγεται η τιμή 0 ως επιστρεφόμενη τιμή 4. Αν εκτελείς το πρόγραμμά σου σε Windows και μέσα από κάποιο ολοκληρωμένο περιβάλλον ανάπτυξης (IDE), το πρόγραμμα εκτελείται σε ένα παράθυρο όπως αυτό του Command Prompt, αλλά με τον τερματισμό του προγράμματος το παράθυρο αυτό κλείνει αστραπιαία χωρίς να σε αφήσει να δεις τα αποτελέσματα. Ένας μπακάλικος τρόπος για να το αποφύγεις είναι αμέσως πριν την εκτέλεση της εντολής return, να παγώσεις την εκτέλεση του προγράμματος με την χρήση κάποιας «ματσακονιάς», όπως την εισαγωγή μίας επιπλέον scanf, μίας κλήσης συστήματος που εκτελεί την εντολή pause (σε αυτήν την περίπτωση πρέπει να κάνεις include τη βιβλιοθήκη stdlib.h) κ.ά. Υπάρχουν βέβαια μερικά IDEs που αυτό το κάνουν αυτόματα, αλλά το αναφέρω γιατί είναι συχνό ερώτημα σε αυτό το forum Ο κώδικάς σου, διορθωμένος βάσει των παραπάνω: >#include <stdio.h> #include <stdlib.h> int main(void) { int v1, v2, v3, v4, v5, mo; printf("Dwse tin ba8mologia\n"); scanf("%d %d %d %d %d", &v1, &v2, &v3, &v4, &v5); mo = (v1 + v2 + v3 + v4 + v5) / 5; if(mo < 5) printf("kopikes\n"); else if(mo < 6) printf("kalos\n"); else if(mo < 8) printf("lian kalos\n"); else printf("arista\n"); system("pause"); return 0; }
parsifal Δημοσ. 17 Μαρτίου 2009 Δημοσ. 17 Μαρτίου 2009 Αυτό εξαρτάται από τη διατύπωση του προβλήματος που θέλουμε να λύσουμε. Στο δοθέν πρόβλημα τουλάχιστον, δεν προκύπτει από κάπου ότι «πρέπει» να δηλωθεί και να υπολογιστεί ως float ο Μ.Ο.
karabouzouk... Δημοσ. 18 Μαρτίου 2009 Δημοσ. 18 Μαρτίου 2009 Έχεις δίκιο η διατύπωση μου ήταν πολύ απόλυτη..!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.