Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [C] programma che non gira

    Devo fare un programma che risolva il seguente problema:
    Un numero si dice perfetto (vedi definizione su Wikipedia
    http : //it.wikipedia.org/wiki/Numero perfetto) quando `e uguale alla somma di
    tutti i suoi divisori escluso se stesso. Ad esempio, il numero 28, divisibile per 1, 2, 4,
    7, 14 `e un numero perfetto (28 = 1 + 2 + 4 + 7 + 14): lo stesso per 6 che `e divisibile
    per 1, 2 e 3.
    6 = 1 + 2 + 3
    28 = 1 + 2 + 4 + 7 + 14
    Un numero si dice abbondante se la somma dei suoi divisori interi `e maggiore
    del numero. Ad esempio, 24 che `e divisibile per 1, 2, 3, 4, 6, 8, 12, quindi 24 <
    1 + 2 + 3 + 4 + 6 + 8 + 12 = 36, `e un numero abbondante. Un numero si dice
    difettivo se la somma dei suoi divisori interi `e minore del numero. Ad esempio, 27
    che `e divisibile per 1, 3, 9, quindi 27 > 1 + 3 + 9 = 13, `e un numero difettivo.
    Scrivere una funzione che preso in input un numero positivo n stampi 0 se n `e un
    numero perfetto, −1 se `e difettivo ed 1 se `e abbondante.

    Questo il programma che ho compliato ma non da nessun risultato, aiutatemi a trovare l'errore:
    #include <stdio.h>


    int funzione(int);
    int main()
    {
    int n;
    scanf("%d", &n);

    return 0;
    }

    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;
    }

    Grazie per l'aiuto!!!!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non da' nessun risultato perche' non la chiami ...

  3. #3
    Che vuol dire xkè non la chiamo. Potresti dirmi come fare?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Nel main devi chiamare la funzione passandogli il valore n ...

  5. #5
    1) Quel codice non può compilare perché contiene errori di sintassi

    2) Se usi una funzione e non codice inline dovresti restituire i 3 valori con un return, i printf dovrebbero trovarsi nel main.

    3) Non richiami la funzione nel main con n come parametro, quindi puoi vederlo come "dead code", codice inutile

    4) Ad occhio l'algoritmo non mi sembra corretto :rollo:

  6. #6
    Praticamente come faccio nel main a chiamare la funzione passandogli il valore n?

  7. #7
    Praticamente come faccio nel main a chiamare la funzione passandogli il valore n?
    Non vorrei sembrarti scortese, ma è inevitabile chiedersi se stai studiando il C su un libro oppure se scrivi codice senza una piena consapevolezza del significato. L'uso delle funzioni è generalmente tra le primissime cose che si studiano...

  8. #8
    Lo sto studindo su un libro ma le funzioni non vengono spiegate bene. Se puoi corrergermi il programma mi faresti un grosso favore.

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Se chiami una funzione devi scriverne il nome e i parametri ... penso sia scritto cosi' nel libro e mi sembra chiaro ...

    r = funzione(n);

    Il valore r deve essere restituito dalla funzione con la return (come ti e' stato detto) e la r deve essere usata nel main per visualizzare il risultato con le printf che NON devono stare nella funzione ...

  10. #10
    Ribadisco che la funzione andrebbe riscritta da zero.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.