Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπερα παιδια, με παιδευει εδω και αρκετη ωριτσα η συγκεκριμενη ασκηση.. 

 

εκφωνηση:

 

 

 

 

Γράψτε ένα πρόγραµµα το οποίο θα βρίσκει και θα εµφανίζει στην οθόνη όλους τους
τετραψήφιους ακεραίους που είναι ίσοιµε το άθροισµα των ψηφίων τους υψωµένων στην
τέταρτη δύναµη. Π.χ., 1634=1
4
+6
4
+3
4
+4
4

 

*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 ευπροσδκετη! ευχαριστω!!

 

 

Δημοσ.

Στην  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);
	}
  • Like 1
Δημοσ.

Παιδιά έχω κι εγώ πρόβλημα με ένα πρόγραμμα...και δε μπορώ να το βρώ :(

#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...

Αν μπορούσε κάποιον να βοηθήσει θα σωζόμουν :)

Δημοσ.

Πρώτον από τη στιγμή που όλες!!! οι μεταβλητές σου είναι global οι συναρτήσεις θα μπορούσαν να μην έχουν καθόλου ορισματα αφού γλέπουν της μεταβλητές έτσι κι αλλιώς. (Γενικά κακή πρακτική η χρήση global μετβαλητων)

 

Στις συναρτήσεις σου τώρα, όταν τις καλείς δεν παίρνουν σαν όριμα όλον τον πίνακα όπως θα ήθελες αλλα τους δίνεις μόνο ένα στοιχείο του πίνακα (st[150]) το οποίο μάλιστα είναι και εκτός του πίνακα αφού η αρίθμηση ξεκινάει από το 0 και οπίνακας έχει στοιχεία st[0]-st[149].

 

Επίσης δεν πρέπει να βάζεις τον τύπο της μεταβλητής όταν καλείς μια συνάρτηση.

 

Στη δήλωση και στον ορισμό:

 

 

void f(int x);

void f(int x){ ... }

 

στην κληση:

 

 

f(i); //όχι f(int i);

 

 

Αυτά τα 2 είδα σε μιά πολύ πρόχειρη ματιά, αλλά πρόσεξε γενικά τον τρόπο που προγραμματίζεις.

Δείκτες δεν έχετε μάθει ακόμα;

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...