PDA

Visualizza la versione completa : [C]Conflicting types


21Edoardo96
19-01-2013, 12:13
Ciao,
devo fare un programma che, inserita una sequenza di numeri terminata da zero, restituisca la media dei quadrati dei numeri.

Il problema è che quando compilo il codice mi appare questo erropre di compilazione:
1) alla riga 20: conflicting types for 'ele' //colorata di verde
2) alla riga 14: previous implicit declaration of 'ele' was here //colorato di rosso


#include<stdio.h>
int main()
{
int i=0;
float n[100];
printf("Inserisci un numero (per terminare premi zero)");
do
{
printf("\nInserisci il %d%c numero:", i+1, 167);
scanf("%f", &n[i]);
i++;
}
while(n[i-1]!=0);
printf("La media somma dei quadrati dei numeri e\': %f", ele(n));
system("pause");
return 0;
}
//Implementazione della funzione per la media dei quadrati
float ele(float n1[])
{
float somma=0, media=0;
int k=0;
do
{
somma = somma + (n1[k]*n1[k]);
k++;
}
while(n1[k-1]!=0);
media = somma/k+1;
return media;
}


Ciao e grazie

Hard*RTOS
19-01-2013, 12:59
Originariamente inviato da 21Edoardo96
2) alla riga 14: previous implicit declaration of 'ele' was here //colorato di rosso


La funzione ele deve essere inserita prima del main.

Alex'87
19-01-2013, 13:01
Originariamente inviato da Hard*RTOS
La funzione ele deve essere inserita prima del main.

Non necessariamente: prima del main può mettere solo il prototipo...

Hard*RTOS
19-01-2013, 13:08
Originariamente inviato da Alex'87
Non necessariamente: prima del main può mettere solo il prototipo...

Ovvio, non credi?

Considerato il livello dell'utente - ancora all'inizio nello studio del C - volevo evitare di parlare di prototipi, per non creare ancora più confusione, per cui ho suggerito semplicemente di spostare la funzione prima del main.

21Edoardo96
19-01-2013, 13:28
Grazie, ho aggiunto la funzione ele nel main.


#include<stdio.h>
float ele(float []);
int main()
{
int i=0;
float n[100];
printf("Inserisci un numero (per terminare premi zero)");
do
{
printf("\nInserisci il %d%c numero:", i+1, 167);
scanf("%f", &n[i]);
i++;
}
while(n[i-1]!=0);
printf("\nLa media somma dei quadrati dei numeri e\': %5.1f\n", ele(n));
system("pause");
return 0;
}
//Implementazione della funzione per la media dei quadrati
float ele(float n1[])
{
float somma=0, media=0;
int k=0;
do
{
somma = somma + (n1[k]*n1[k]);
k++;
}
while(n1[k-1]!=0);
media = somma/k+1;
return media;
}


Ciao e grazie

Hard*RTOS
19-01-2013, 14:08
Originariamente inviato da 21Edoardo96
Grazie, ho aggiunto la funzione ele nel main.

No, non l'hai aggiunta nel main: hai semplicemente inserito il prototipo della funzione prima della procedura principale.

Ciao :)

Alex'87
19-01-2013, 14:23
Originariamente inviato da Hard*RTOS
Ovvio, non credi?

Considerato il livello dell'utente - ancora all'inizio nello studio del C - volevo evitare di parlare di prototipi, per non creare ancora più confusione, per cui ho suggerito semplicemente di spostare la funzione prima del main.

Così quando arriverà ad avere due funzioni che si chiamano a vicenda non saprà come venirne fuori :P

Il concetto di prototipo di una funzione non mi pare così difficile da assimilare. Un po' come si dichiara una variabile prima di usarla ecco che si dichiara una funzione prima di chiamarla. Detta così non mi pare una cosa tanto assurda ;)

21Edoardo96
19-01-2013, 14:31
Grazie a tutti per l'aiuto

Loading