Problema programma in C - (Studente 1° anno)

di Anonimizzato20424 il
27 risposte
Ciao a tutti sono nuovo in questo forum e sono uno studente al primo anno di scienze informatiche. Sto studiando programmazione per prepararmi all'esame che si terrà a gennaio ma ho un problema, iniziando il concetto di funzione sul libro sono presenti alcuni esempi di programma che(almeno per me che sono ancora alle prime armi) se non fatti e visti al computer non riesco a capire. Iniziano molti esempi ma tutti questi mi danno lo stesso errore sul compilatore: "[Error] ld returned 1 exit status". Ho scritto anche al professore che mi ha risposto con: "Spero che tu abbia scritto anche la funzione main". Io l'ho scritta ma continua a darmi errore, vi riporto allora questa funzione per come è scritta sul libro e spero che qualcuno di voi mi aiuti a capire l'errore perché altrimenti non posso andare avanti.

/*restituisce 1 se n è primo, 0 altrimenti*/
#include <math.h>
int primo(int n)
{
int i=3, m, ok=1;
if (!(n%2))
return 0;
else
{ int main();
m=(int) sqrt(n);
while (ok && (i<=m))
{
ok = n%i;
i+=2;
}
if (ok)
return 1;
else
return 0;
}
}

27 Risposte

  • Di che libro si tratta? Sei sicuro di aver copiato bene?
  • Il libro è algoritmi e programmazione in C. Si l'esempio è giusto per questo ho chiesto al professore(che è lo stesso che ha scritto il libro), ma io ancora non ci capisco molto quindi quello che mi ha detto non mi è servito..
  • Vedi: a me pare strano che il prototipo
    int main();
    si trovi in mezzo al codice della funzione primo().
    E poi manca proprio la funzione main()...
  • Quell'int main() forse l'avevo lasciato io erroneamente, potresti riscrivermi la funzione in modo che posso scriverla sul compilatore senza problemi perfavore? Così magari vedo dove ho sbagliato
  • Così è come sul libro(cioè senza quell' int main()

    /*restituisce 1 se n è primo, 0 altrimenti*/
    #include <math.h>
    int primo(int n)
    {
    int i=3, m, ok=1;
    if (!(n%2))
    return 0;
    else
    {
    m=(int) sqrt(n);
    while (ok && (i<=m))
    {
    ok = n%i;
    i+=2;
    }
    if (ok)
    return 1;
    else
    return 0;
    }
    }
  • Usa i tag Code per postare il codice.
    potresti riscrivermi la funzione in modo che posso scriverla sul compilatore senza problemi perfavore?
    Riverificala dal libro!
    A mio avviso, però, devi copiare un esempio che abbia un main() che utilizza la funzione!
    Mi rifiuto di credere che in un libro questo non sia spiegato.
    Eventualmente fai un passo indietro e prova degli esempi più semplici.
  • Ti mando direttamente la foto del libro
    Allegati:
    20424_1b13161814fc2e4c6421f23748444157.jpeg
    20424_1b13161814fc2e4c6421f23748444157.jpeg
  • Un main() per esempio potrebbe essere
    int main()
    {
    	printf("Test primo()\n");
    	if(primo(5))
    		printf("primo!\n");
    	else
    		printf("non primo!\n");
    		
    	return 0;
    }
    Ma se non sei in grado di fare questo da solo allora ti consiglio di fare un passo indietro, davvero!
  • Il main lo spiegava nelle prime pagine, io voglio solo capire dove devo metterlo quì affinché il compilatore non mi dia errore e mi compili questa funzione perché voglio andare avanti
  • Lo metti in fondo
  • Ma in fondo dove? dopo cosa? me lo scrivi un attimo perfavore?
  • In fondo a tutto, dopo tutta la funzione primo().
  • Guarda a me continua a dare errore, non so più come fare
  • Mostra quello che hai scritto e l'errore che ottieni
Devi accedere o registrarti per scrivere nel forum
27 risposte