Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 14 su 14
  1. #11
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Originariamente inviato da pallinopinco
    Ribadisco che la funzione andrebbe riscritta da zero.
    Concordo, ma iniziamo dal chiamarla ...

  2. #12
    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

  3. #13
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Intanto hai detto che il codice veniva compilato ma questo non puo' essere perche' in

    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; 
    }
    manca una parentesi che dovrebbe fare coppia con quella segnata ...

    Infine, per chiamare una funzione dal main dovresti semplicemente scrivere

    codice:
    int main()
    {
       int n;
       scanf("%d", &n);
    
       funzione(n);
    
       return 0; 
    }
    come ti avevo detto ... (a prescindere dal restituire un valore o meno ...).

  4. #14
    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
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.