Aiuto sulle funzioni linguaggio C

di il
21 risposte

Aiuto sulle funzioni linguaggio C

Ciao ragazzi sono uno studente di una scuola superiore e faccio sistemi . Oggi abbiamo iniziato a fare la funzioni del linguaggio C ma purtroppo il nostro proff non mi fa capire niente qualcuno mi potrebbe aiutarmi spiegandomi cs sono e come funzionano se è possibile con un programmino come spiegazione???

21 Risposte

  • Re: Aiuto sulle funzioni linguaggio C

    Per essere più specifico, cosa ha spiegato esattamente il prof che non hai capito?
  • Re: Aiuto sulle funzioni linguaggio C

    Le funzioni in generale , non ho capito dove mettere il prototipo e a cosa serve !!
    ad esempio ci ha dato un esercizio dove c'erano du numeri naturali x e y e bisognava elevare il numero x alle y e y doveva essere >=1 solo che sta finendo l'anno e devo fare questo esercizio se mi puoi aiutare xkè sono appena in 3 superiore!!
  • Re: Aiuto sulle funzioni linguaggio C

    
    #include <stdio.h>
    
    //prototipo
    int somma(int a, int b);
    
    int main()
    {
        int risultato = somma(3,5);
        printf("risultato = %d",risultato);
        return 0;
    }
    
    //sviluppo
    int somma(int a, int b)
    {
       return a + b;
    }
    
  • Re: Aiuto sulle funzioni linguaggio C

    Il prototipo è solo la dichiarazione di una funzione senza l'implementazione; deve essere "visibile" all'utilizzatore.
    Per poter essere visibile lo devi dichiarare prima che venga utilizzato (un pò come le variabili); è buona norma per funzioni riusabili in più file dichiararle in un file .h contenente solo le dichiarazioni e includere i .h nei .c con la direttiva di pre-compilazione #include
  • Re: Aiuto sulle funzioni linguaggio C

    Grz ora e un poco più chiaro , ma ho provato a fare lo stesso esercizio xò utilizzando lo scanf e il printf cioè acquisendo il dato da tastiera e ho molte difficoltà non capisco cosa richiamare e cosa mettere nelle variabili.
    poi dovrei fare questo esercizio es 05
    scrivere una funzione C per calcolare x elevato alla y entrambi numeri interi e nella quale si efettua
    il calcolo solo se x e >=1

    qualcuno riesce ad aiutarmi??? tra poco ho la verifica e devo recuperare il mio brutto voto per non essere rimandato in sistemi a settembre l'anno prossimo
  • Re: Aiuto sulle funzioni linguaggio C

    Il tuo codice? Cosí vediamo dove sei rimasto fermo.
  • Re: Aiuto sulle funzioni linguaggio C

    #include <stdio.h>
    #include <stdlib.h>
    
    int calcola(int num,int pot,int tot);
    
    int main()
    {
    
    int num,pot,tot;
    
    printf("Digitare il numero: ");
    scanf("%d", &num);
    printf("\nDigitare l'elevazione a potenza: ");
    scanf("%d", &pot);
    tot=num;
    printf("\n Risultato: %d \n", calcola(num,pot,tot));
    system("PAUSE");
    return 0;	
    
    
    }
    
    int calcola(int tot, int pot, int num)
    {
  • Re: Aiuto sulle funzioni linguaggio C

    Impara a mettere i code tags. per adesso te li metto io, la prossima volta fallo tu.
    prima cosa da vedere è se num è >= 1 giusto? Quindi dentro la funzione ci sara un if che controlla questo.
    
    if(num >= 1)
    .................
    
    Poi abbiamo la funzione per la potenza. Puoi usare una funzione già pronta che sta nella libreria math.h e si chiama pow
    Quindi
    
    return pow((double)num,(double)pot);
    
  • Re: Aiuto sulle funzioni linguaggio C

    #include <stdio.h>
    #include <stdlib.h>
    
    int calcola(int num,int pot,int tot);
    
    void main()
    {
    
    int num,pot,tot;
    
    printf("Digitare il numero: ");
    scanf("%d", &num);
    printf("\nDigitare l'elevazione a potenza: ");
    scanf("%d", &pot);
    tot=num;
    printf("\n Risultato: %d \n", calcola(num,pot,tot));
    system("PAUSE");
    return 0;	
    
    
    }
    
    int calcola(int tot, int pot, int num)
    {
    if (pot => 1)
    
    return tot; 
    tot=tot*num;
    return calcola(tot,pot,num);
      
    }
    se faccio così ed eseguo il programma mi da l'errore in return 0;

    PS: la libreria math.h ancora la dobbiamo utilizzare quindi non la posso usare nell'esercizio
  • Re: Aiuto sulle funzioni linguaggio C

    Ma devi per forza usare il metodo ricorsivo? Se no con un ciclo while lo risolvi
    
    tot = num;
    while(pot >= 1)
    {
       tot *= num;
       pot--;
    }
    return tot;
    
  • Re: Aiuto sulle funzioni linguaggio C

    Si e una buona idea mi potresti scrivere il codice completo ???xke quello che hai scritto non so dove metterlo !!
    speigandomi il perchè si mette pot-- ??
  • Re: Aiuto sulle funzioni linguaggio C

    
    int calcola(int tot, int pot, int num)
    {
    if (pot >= 1)
    {
       while(pot >= 1)
       {
         tot *= num;
         pot--;
      }
    }
    return tot;
    }
    
    Allora cos'è l'elevazione a potenza? E' la moltiplicazione di un numero per se stesso tante volte quant'è la potenza. Quindi per calcolare la potenza devi eseguire la moltiplicazione pot volte. Quindi pot deve andare dal valore iniziale a 1.
  • Re: Aiuto sulle funzioni linguaggio C

    Finalmente ce l'ho fatta grz ragazzi che mi avete aiutato !!
    #include <stdio.h>
    #include <stdlib.h>
    
    int calcola(int num,int pot,int tot);
    
    void main()
    {
    
    int num,pot,tot;
    
    printf("Digitare il numero: ");
    scanf("%d", &num);
    printf("\nDigitare l'elevazione a potenza: ");
    scanf("%d", &pot);
    tot=num;
    printf("\n Risultato: %d \n", calcola(num,pot,tot));
    system("PAUSE");
    return tot;	
    
    }
    
    int calcola(int tot, int pot, int num)
    {
    tot = num;
    while(pot >= 1)
    {
       tot *= num;
       pot--;
    }
    return tot;
      
    }
    xò l'ultima cosa che vi chieo e se mi potete spiegare gentilmente l'ultimo passaggio
    {
       tot *= num;
       pot--;
    }
    cosa significano???
  • Re: Aiuto sulle funzioni linguaggio C

    tot *= num significa tot = tot * num;
    pot-- singifica pot = pot -1
    Se non sai cosa sono usa la forma estesa.
Devi accedere o registrarti per scrivere nel forum
21 risposte