Δεν τρέχει ο κώδικας

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
athina1993
Δημοσιεύσεις: 8
Εγγραφή: 16 Ιαν 2011 22:48

Δεν τρέχει ο κώδικας

Δημοσίευση από athina1993 » 16 Φεβ 2011 19:32

Εφραψα εναν κωδικα στην c ο οποιος υπολογιζει τιν μεσο ορο ενος πινακα καθως και το σφαλμα.Μου βγαζει ομως διαφορα προβληματα μαλλον με τις συναρτησεις. Ο τυπος υπολογισμου του σφαλματος ειναι
σ=ρίζα(1/n(n-1)*Σ(χ-μεσοςορος)^2)

Οριστε και ο κωδικας:

Κώδικας: Επιλογή όλων

#include <stdio.h>
#define N 20

main&#40;&#41;
&#123;
	float x&#91;N&#93;,ave,sf;
	int n,i;
	printf&#40;"Dwse to plithos twn metrisewn n\n"&#41;;
	scanf&#40;"%d\n"&#41;;
	if &#40;n<=20&#41;
	&#123;
		printf&#40;"Dwse %d times ston pinaka",n&#41;;
		for &#40;i=1; i<=n; i++&#41;
		&#123;
		scanf&#40;"%f",&x&#91;i&#93;&#41;;
		&#125;
		ave=mo&#40;x&#91;&#93;,n&#41;;
		sf=st&#40;float x&#91;&#93;, float ave, int n&#41;;
		printf&#40;"To plithos twn metrhsewn einai&#58;%d\n",n&#41;;
		printf&#40;"O mesos oros einai&#58;%f\n",ave&#41;;
		printf&#40;"To sfalma einai&#58;%f\n",sf&#41;;
	&#125;
	else
	&#123;
		printf&#40;"To programma termatizetai\n"&#41;;
	&#125;
&#125;	
			

float mo&#40;float x&#91;&#93;, int n&#41;
&#123;
int i;
float xmeso;
xmeso=0;
for &#40;i=1; i<=n; i++&#41;
&#123;
		xmeso=xmeso+x&#91;i&#93;;
&#125;
xmeso=xmeso/n;
return &#40;xmeso&#41;;
&#125;


st&#40;float x&#91;&#93;, float ave, int n&#41;
&#123;
	float pinakas&#91;n&#93;,S,sfalma;
	int i;
	S=0;
	for &#40;i=1; i<=n; i++&#41;
	&#123;
		pinakas&#91;i&#93;=&#40;x&#91;i&#93;-ave&#41;*&#40;x&#91;i&#93;-ave&#41;;
	&#125;
	for &#40;i=1; i<=n; i++&#41;
	&#123;
		S=S+pinakas&#91;i&#93;;
	&#125;
	sfalma=sqrt&#40;&#40;1/n&#40;n-1&#41;&#41;*S&#41;;
	return &#40;sfalma&#41;;
&#125;
[/code]

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Δεν τρέχει ο κώδικας

Δημοσίευση από virxen75 » 16 Φεβ 2011 21:25

διορθωσε τα λάθη σου και τέσταρε τα αποτελέσματα

Κώδικας: Επιλογή όλων

#include <stdio.h>
#include <math.h>

#define N 20
float mo&#40;float &#91;&#93;, int &#41;;
float st&#40;float &#91;&#93;, float, int &#41;;
int main&#40;&#41;&#123;
   float x&#91;N&#93;,ave,sf;
   int n,i;
   printf&#40;"Dwse to plithos twn metrisewn n\n"&#41;;
   scanf&#40;"%d",&n&#41;;
   getchar&#40;&#41;;
   if &#40;n<=20&#41;&#123;
      printf&#40;"Dwse %d times ston pinaka\n",n&#41;;
      for &#40;i=0; i<n; i++&#41;&#123;
        scanf&#40;"%f",&x&#91;i&#93;&#41;;
        getchar&#40;&#41;;
      &#125;
      ave=mo&#40;x,n&#41;;
      sf=st&#40;x, ave,n&#41;;
      printf&#40;"To plithos twn metrhsewn einai&#58;%d\n",n&#41;;
      printf&#40;"O mesos oros einai&#58;%f\n",ave&#41;;
      printf&#40;"To sfalma einai&#58;%f\n",sf&#41;;
   &#125;else
      printf&#40;"To programma termatizetai\n"&#41;;
    getchar&#40;&#41;;
&#125;   
         

float mo&#40;float x&#91;&#93;, int n&#41;&#123;
    int i;
    float xmeso;
    xmeso=0;
    for &#40;i=0; i<n; i++&#41;&#123;
      xmeso=xmeso+x&#91;i&#93;;
    &#125;
    xmeso=xmeso/n;
    return &#40;xmeso&#41;;
&#125;


float st&#40;float x&#91;&#93;, float ave, int n&#41;&#123;
   float pinakas&#91;n&#93;,S,sfalma;
   int i;
   S=0;
   for &#40;i=0; i<n; i++&#41;&#123;
      pinakas&#91;i&#93;=&#40;x&#91;i&#93;-ave&#41;*&#40;x&#91;i&#93;-ave&#41;;
      S=S+pinakas&#91;i&#93;;
    &#125;
   sfalma=sqrt&#40;&#40;1.0f/n*&#40;n-1.0f&#41;&#41;*S&#41;;
   return sfalma;
&#125;

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Δεν τρέχει ο κώδικας

Δημοσίευση από dva_dev » 16 Φεβ 2011 23:08

Στη C ένα από τα πιο συχνά λάθη που γίνονται είναι στους πίνακες.
Οταν ορίζεις έναν πίνακα Χ θέσεων π.χ. Α[100] το στοιχείο Α[100] ΔΕΝ υπάρχει, αλλά υπάρχει το Α[0] (που είναι και το πρώτο στοιχείο του πίνακα). Το τελευταίο στοιχείο του πίνακα, το 100στό, είναι το Α[99].

Οι θέσεις πάνε 0,1,2,3,4,...,Χ-2,Χ-1.

Τα βιβλία θα έπρεπε να το έχουν με κεφαλαία κόκκινα γράμματα 72pt και σε πλαίσιο που να αναβοσβήνει για να μην ανακατεύεται με τα υπόλοιπα ψιλά γράμματα.

athina1993
Δημοσιεύσεις: 8
Εγγραφή: 16 Ιαν 2011 22:48

Δεν τρέχει ο κώδικας

Δημοσίευση από athina1993 » 17 Φεβ 2011 17:28

Καταρχην σας ευχαριστω πολυ!Θα ηθελα ομως να με βοηθησετε σε καποια σημεια του κωδικα που δεν καταλαβα.

1)

Κώδικας: Επιλογή όλων

#define N 20 
float mo&#40;float &#91;&#93;, int &#41;; 
float st&#40;float &#91;&#93;, float, int &#41;; 
Εδω δεν καταλαβα γιατι το βάζουμε στην αρχη του προγραμματος αφου τις συναρτηεις τις φτιαχνουμε ποιο κατω.Επισης δεν καταλαβα γιατι μεσα στις συναρτησεις δεν βαζουμε τις παραμετρους που παίρνει.

2)

Κώδικας: Επιλογή όλων

 getchar&#40;&#41;; 
Σε τι χρησιμευει η συγκεκριμενη εντολη?

3)

Κώδικας: Επιλογή όλων

sfalma=sqrt&#40;&#40;1.0f/n*&#40;n-1.0f&#41;&#41;*S&#41;; 
Εδω δεν καταλαβαινω γιατι βαζουμε 1.0f

Συγνωμη αν γινομαι κουραστικη

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Δεν τρέχει ο κώδικας

Δημοσίευση από virxen75 » 17 Φεβ 2011 23:29

athina1993 έγραψε:Καταρχην σας ευχαριστω πολυ!Θα ηθελα ομως να με βοηθησετε σε καποια σημεια του κωδικα που δεν καταλαβα.
1)
πρέπει να δηλώσεις στην αρχή του προγράμματος τις συναρτήσεις σου καθώς και
τις παραμέτρους που δέχεται τι τύπου δεδομένων είναι,καθώς και τι τύπο δεδομένων θα επιστρέφει


3) αν δεν το βάλεις έτσι θα κάνει τις πράξεις σαν να ήταν όλα ακέραιοι άρα
θα το αποτέλεσμα θα ήταν 0 πάντα.
π.χ. το 1/3=0 (διαίρεση ακεραίων) και το 1.0f/3=0.333

2)www.cplusplus.com/reference/clibrary/cstdio/getchar/
το χρησιμοποιώ α)μετά από scanf για να μαζεύει το enter β) για να σταματάει την εκτέλεση
του προγράμματος ,κάτι σαν pause.Αν δεν το θες βγάλε το.

athina1993
Δημοσιεύσεις: 8
Εγγραφή: 16 Ιαν 2011 22:48

Δεν τρέχει ο κώδικας

Δημοσίευση από athina1993 » 18 Φεβ 2011 00:07

Ok και παλι ευχαριστω για την βοηθεια και για το χρονο που αφιερωσες!!!

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες