Concordo, ma iniziamo dal chiamarla ...Originariamente inviato da pallinopinco
Ribadisco che la funzione andrebbe riscritta da zero.
Concordo, ma iniziamo dal chiamarla ...Originariamente inviato da pallinopinco
Ribadisco che la funzione andrebbe riscritta da zero.
Scusa l'ignoranza ma ancor non capisco come posso correggere la funzioni o come rifarla. Leggo laguida che trovo su questo sito a proposito delle funzioni forse è spiegato meglio.
Grazie
Intanto hai detto che il codice veniva compilato ma questo non puo' essere perche' in
manca una parentesi che dovrebbe fare coppia con quella segnata ...codice:int funzione(int n) { int i = 1, r, tot = 0; for(i = 1; i < n; i++) r = n%i; tot = tot + i; } // <------------------------ ? if (tot == n) printf("0"); if (r < n) printf("2"); if (r > n) printf("1"); return 0; }
Infine, per chiamare una funzione dal main dovresti semplicemente scrivere
come ti avevo detto ... (a prescindere dal restituire un valore o meno ...).codice:int main() { int n; scanf("%d", &n); funzione(n); return 0; }
Ti scrivo al volo una versione didattica del programmino:
codice:#include <stdio.h> int funzione(int); int main(void) { int n; printf("Inserisci un numero: "); scanf("%d", &n); switch (funzione(n)){ case 0: puts("Perfetto"); break; case 1: puts("Abbondante"); break; case -1: puts("Difettivo"); } return 0; } int funzione(int n) { int i, tot = 0; for(i = 1; i < n; i++) { // Verifichiamo se è un divisore if ((n % i) == 0) tot = tot + i; } if (tot < n) return -1; // Difettivo else if (tot > n) return 1; // Abbondante else return 0; // Perfetto }