Προς το περιεχόμενο
  • 0
Συνδεθείτε  
c0prse_grinder

Διορθωση σε ασκησουλα για Προγραμματισμο σε C!

Ερώτηση

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

 

εκφωνηση:

 

 

 

 

Γράψτε ένα πρόγραµµα το οποίο θα βρίσκει και θα εµφανίζει στην οθόνη όλους τους
τετραψήφιους ακεραίους που είναι ίσοιµε το άθροισµα των ψηφίων τους υψωµένων στην
τέταρτη δύναµη. Π.χ., 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 ευπροσδκετη! ευχαριστω!!

 

 

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

3 απαντήσεις σε αυτή την ερώτηση

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

  • 0

Στην  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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

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

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

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

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

 

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

 

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

 

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

 

 

void f(int x);

void f(int x){ ... }

 

στην κληση:

 

 

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

 

 

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

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

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

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

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

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

Εγγραφείτε για έναν νέο λογαριασμό

Σύνδεση

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

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

Χρήσιμες πληροφορίες

Με την περιήγησή σας στο insomnia.gr, αποδέχεστε τη χρήση cookies που ενισχύουν σημαντικά την εμπειρία χρήσης.