c0prse_grinder Δημοσ. 15 Ιανουαρίου 2013 Δημοσ. 15 Ιανουαρίου 2013 Καλησπερα παιδια, με παιδευει εδω και αρκετη ωριτσα η συγκεκριμενη ασκηση.. εκφωνηση: Γράψτε ένα πρόγραµµα το οποίο θα βρίσκει και θα εµφανίζει στην οθόνη όλους τουςτετραψήφιους ακεραίους που είναι ίσοιµε το άθροισµα των ψηφίων τους υψωµένων στηντέταρτη δύναµη. Π.χ., 1634=14+64+34+44 *1^4+6^4+3^4+4^4 ο κωδικας που χω γραψει μεχρι στιγμης ειναι: #include <stdio.h>#include <stdlib.h> main(){ int i,ps1,ps2,ps3,ps4,s,p1,p2,p3,p4,k;i=1000;scanf("%d\n",&i);for(i=1000 ; i<10000 ; i ++){ps1=i/1000;ps2=(i/100)%10;ps3=(i/10)%10;ps4=i%10;printf("a\n");for(k=1;k<=4;k++){ps1=ps1*k;ps2=ps2*k;ps3=ps3*k;ps4=ps4*k;}s=ps1+ps2+ps3+ps4;if(i = s){printf("%d\n",i);}}system("pause");} οποια βοηθεια super ευπροσδκετη! ευχαριστω!!
albNik Δημοσ. 15 Ιανουαρίου 2013 Δημοσ. 15 Ιανουαρίου 2013 Στην for δεν τα υψώνεις σε δύναμη, τα πολλαπλασιάζεις με 1*2*3*4. for(i=1000 ; i<10000 ; i++) { ps1=i/1000; ps2=(i/100)%10; ps3=(i/10)%10; ps4=i%10; if(i ==ps1*ps1*ps1*ps1+ps2*ps2*ps2*ps2+ps3*ps3*ps3*ps3+ps4*ps4*ps4*ps4 ) printf("%d\n",i); } 1
Arctic Δημοσ. 16 Ιανουαρίου 2013 Δημοσ. 16 Ιανουαρίου 2013 Παιδιά έχω κι εγώ πρόβλημα με ένα πρόγραμμα...και δε μπορώ να το βρώ #include #include #include #include struct student { char am[7]; float final_grade; float exam_grade; float essay_grade; }st[150]; struct exam_question { char question[100]; char answer1[50]; char answer2[50]; char answer3[50]; int correct_answer; }que[5]; void exam(struct student st[150], struct exam_question que[5], int s); void search(struct student st[150], struct exam_question que[5], int s); void statistics(struct student st[150], struct exam_question que[5], int s); int user_input,s=0; int main() { strcpy(que[1].question,"erwthsh1"); strcpy( que[1].answer1, "erwthsh1_apanthsh1"); strcpy(que[1].answer2,"erwthsh1_apanthsh2"); strcpy(que[1].answer3,"erwthsh1_apanthsh3"); que[1].correct_answer= 3; . . . while (user_input==1 || user_input==2 || user_input==3 || user_input==4); if (user_input==1) { exam (st[150],que[5],s); } else if (user_input==2) { search(st[150],que[5],s); } else if (user_input==3) { statistics(st[150],que[5],s); } else if (user_input==4) {return 0; } } /* Synarthsh gia thn eisagwgh stoixeiwn kai eksetash foithth*/ void exam(struct student st[150], struct exam_question que[5], int s) { . . . } } } while (user_input== 'C' && s<149); } /*Synarthsh elenchou ki ektypwshs*/ void search(struct student st[150], struct exam_question que[5], int s) { . . . } /*Synarthsh eksodoy statistikwn*/ void statistics(struct student st[150], struct exam_question que[5], int s) { . . . } Ο Dev μου βγάζει ως πρόβλημα στις γραμμές που καλώ τις συναρτήσεις exam/search/statistics «incompatible type for argument 1 of `exam'» «incompatible type for argument 2 of `exam'» κτλ... δε το έχω δοκιμάσει στο gcc πχ για να ξέρω αν είναι θέμα κώδικα ή ανωμαλία του Dev... Αν μπορούσε κάποιον να βοηθήσει θα σωζόμουν
bird Δημοσ. 16 Ιανουαρίου 2013 Δημοσ. 16 Ιανουαρίου 2013 Πρώτον από τη στιγμή που όλες!!! οι μεταβλητές σου είναι global οι συναρτήσεις θα μπορούσαν να μην έχουν καθόλου ορισματα αφού γλέπουν της μεταβλητές έτσι κι αλλιώς. (Γενικά κακή πρακτική η χρήση global μετβαλητων) Στις συναρτήσεις σου τώρα, όταν τις καλείς δεν παίρνουν σαν όριμα όλον τον πίνακα όπως θα ήθελες αλλα τους δίνεις μόνο ένα στοιχείο του πίνακα (st[150]) το οποίο μάλιστα είναι και εκτός του πίνακα αφού η αρίθμηση ξεκινάει από το 0 και οπίνακας έχει στοιχεία st[0]-st[149]. Επίσης δεν πρέπει να βάζεις τον τύπο της μεταβλητής όταν καλείς μια συνάρτηση. Στη δήλωση και στον ορισμό: void f(int x); void f(int x){ ... } στην κληση: f(i); //όχι f(int i); Αυτά τα 2 είδα σε μιά πολύ πρόχειρη ματιά, αλλά πρόσεξε γενικά τον τρόπο που προγραμματίζεις. Δείκτες δεν έχετε μάθει ακόμα;
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα