Problema con la compilazione di un esercizio in C

di Anonimizzato26021 il
9 risposte
Salve, sto cercando di usare il linguaggio di programmazione C per creare un programma che, ricevuti 5 numeri, determini il maggiore tra essi, la loro somma, la media e la radice quadrata della somma.
Quella che segue è la mia soluzione:

#include <stdio.h>
#include <math.h>
#define N 5

int main (int argc, char*argv[]) {
int i;
float n, maj, tot, med;
double sqr;

printf("Inserire un numero:");
scanf("%f", &n);
for(i=1, tot=maj=n; i<N; i++) {
printf("\nInserire un numero:");
scanf("%f", &n);
if(n>maj)
maj=n;
tot=tot+n;
}
med=tot/N;
sqr=sqrt(tot);
printf("\nIl numero maggiore è: %f\nLa somma è: %f\nLa media è: %f\n", maj, tot, med);
printf("La radice quadrata della somma è: %lf\n", sqr);
return 0;
}

Io non riesco a trovarci errori, però il programma non mi viene nemmeno compilato; mi dice:

/tmp/ccrpnVJT.o: nella funzione "main":
MajSumMedSqrsum.c:(.text+0xd3): riferimento non definito a "sqrt"
collect2: error: ld returned 1 exit status

Qualcuno di voi capisce qual'è il problema?

9 Risposte

  • Il codice dovrebbe compilare senza problemi, ma Il tuo compilatore (quale?) ti sta dicendo che ha qualche problema con il riferimento a "sqrt" che è una funzione definita in <math.h> che tu hai correttamente incluso. Prova a dare un'occhiata alle impostazioni nelle opzioni del compilatore.
    Eventualmente, fai una prova passando un argomento double a sqrt piuttosto che un float.
  • Hai compilato con

    -lm

    ?
  • Il compilatore che uso è gcc e avevo già provato anche passando un double a sqrt, ma non è cambiato nulla
  • Ah, e ho compilato con -o
  • Hai letto quello che ti ho scritto?
  • Sì ma hai provato -lm come ti ha detto Oregon? È un problema noto di GCC, la soluzione è quella
  • No, non lo avevo ancora mai fatto; intendi in questo modo? gcc MajSumMedSqrsum.c -lm MajSumMedSqrsum.exe
    mi dà questo messaggio: gcc: error: MajSumMedSqrsum.exe: File o directory non esistente
  • Gcc MajSumMedSqrsum.c -o MajSumMedSqrsum -lm
  • Grazie, ha compilato; funziona
Devi accedere o registrarti per scrivere nel forum
9 risposte