Aiuto sulle funzioni

di il
15 risposte

Aiuto sulle funzioni

Salve ragazzi sono nuovo sia per quanto riguarda il forum che la programmazione in C/C++.
L'educazione mi impone di presentarmi, quindi: sono Roberto e sono programmatore di macchine a cnc e operatore cad/cam.
Siccome sono sempre stato un appassionato di informatica e di materie scientifiche in generale, di recente, spulciando su youtube, mi sono imbattuto sul canale di un professore, che ovviamente non faccio nomi (a mio parere molto bravo a spiegare), così ho comprato anche un libro sulla programmazione in C ed ho iniziato ad appassionarmi sempre di più. Ora sono arrivato alla spiegazione sulle funzioni, ho voluto fare un esercizio semplice e cioè, scrivere una funzione che mi calcoli la potenza di un numero; quindi ho scritto prima il codice della funzione nella funzione main per vedere se è corretto e funziona perfettamente, poi l'ho tagliato ed incollato nella funzione, ora il problema è che quando eseguo il codice sorgente il risultato che ottengo in output è sempre 1, non riesco a capire dov'è l'errore, credo che la sintassi sia corretta. Qualcuno di voi mi può spiegare qual è l'errore o perchè esce proprio 1? Questo è il sorgente:
#include <cstdlib>
#include <iostream>

using namespace std;

float potenza(float base, int esponente){
    //Dichiarazione e inizializzazione delle variabili locali
    float pow = 1;
    //Elaborazione
    if (esponente == 0)
       pow = 1;
    else
       for (int i = 1; i <= esponente; i++)
           pow *= base;
    return pow;
}

main()
{
    float base = 0;
    int esponente=0;
    
    cout <<"Inserire la base della potenza: ";
    cin >>base;
    cout <<"Inserire l'esponente della potenza: ";
    cin >>esponente;

    //Elaborazione
    potenza(base,esponente);
    
    cout <<endl <<"La potenza di " <<base <<" elevato a " <<esponente <<" e': "; 
    cout <<potenza;
    
    fflush(stdin); getchar();
    return 0;
}

15 Risposte

  • Re: Aiuto sulle funzioni

    Benvenuto a te in questo forum!
    
    
    main()
    {
        float base = 0;
        int esponente=0;
       
        cout <<"Inserire la base della potenza: ";
        cin >>base;
        cout <<"Inserire l'esponente della potenza: ";
        cin >>esponente;
    
        //Elaborazione
        potenza(base,esponente); /* Qui chiami una funzione che ritorna un float. Dove lo memorizzi? */
       
        cout <<endl <<"La potenza di " <<base <<" elevato a " <<esponente <<" e': ";
        cout <<potenza; /* potenza che cos'è? */
       
        fflush(stdin); getchar();
        return 0;
    }
    Il problema è nel main, dove chiami la funzione. Ho provato a scrivere un commento nel codice come suggerimento, spero ti aiuti a risolvere da solo.
    Posta qualunque difficolta o chiarimento necessario.
  • Re: Aiuto sulle funzioni

    Grazie ora vedo il tuo suggerimento ciao
  • Re: Aiuto sulle funzioni

    Grazie ancora SVNiko ho capito e risolto il problema , però vorrei capire perchè esce in output proprio 1?
  • Re: Aiuto sulle funzioni

    Teoricamente dovrebbe darti un errore di compilazione perchè non trova una variabile che si chiama potenza.
  • Re: Aiuto sulle funzioni

    Il fatto che io stia usando DevC++ come compilatore può esserti di aiuto per capire come mai quando compilo non mi dà errore e come output ottengo 1?
  • Re: Aiuto sulle funzioni

    Il tuo codice è c++ e non c che anche se sono simili sono Enormemente diversi.
    Secondo Dev-C++ è un IDE per di piu obsoleto e abbandonato, pieno di errori e utilizza una vecchia versione di mingw.
    Pertanto una compilazione sotto ale ambiente di sviluppo non funzionerà mai a dovere!
    Ti consiglio di scaricarti o Code::Blocks, sempre basato su Mingw ma aggiornato o il miglior IDE e COMPILATORE sotto Windows ovvero Il Visual Studio C++ Express, Completamente gratuito e il miglior ambiente di sviluppo per chi programma in c++ sotto casa M.
  • Re: Aiuto sulle funzioni

    C'e' una nuova versione del 2014 che si chiama Orwell DevC++.
  • Re: Aiuto sulle funzioni

    Non lo conosco ma io diffiderei da qualsiasi cosa il cui nome contenga DEV-C++
  • Re: Aiuto sulle funzioni

    Ciao ragazzi grazie per le vostre risposte [SMILING FACE WITH OPEN MOUTH AND SMILING EYES], ho seguito il tuo consiglio vbextreme, ho installato code::blocks, l'unico problema è il debug, non riesco ad usarlo, ho cercato su internet delle guide su questo compilatore, ma ho trovato ben poco, i manuali sono tutti in inglese, son riuscito a trovare un piccolo pdf in italiano che spiega sia l'installazione che il debug, ho seguito i passi da fare, ma ho notato che non parte proprio ed il prompt d'esecuzione del debug non esce. Qualcuno sa dirmi perchè?


    Inviato dal mio iPad utilizzando Tapatalk
  • Re: Aiuto sulle funzioni

    Prima di tutto assicurati di star compilando in debug e non in release.
    devi mettere un breckpoit dove vuoi che si fermi, altrimenti lui esegue l'intero codice.
    Puoi cliccare vicino al numero di riga sulla quale vuoi fermare e appare una pallina rossa.
    In alternativa è nel menu da qualche parte, adesso non ho sottomano C::B quindi non ricordo bene.
    A questo punto fai partire il Debug e non il run normale!
    Ora si dovrebbe fermare dove hai messo la pallina, e dovrebbe apparire la freccina gialla.
    Sulla toolbar hai le modalità di avanzamento,(semplici da capire).
    In basso dovresti avere la watchwindow dove vedi le variabili o in alternativa ci scrivi il nome della variabile e lui ti scrive il valore.
    ci sono altre finestre selezionabili nel menu,fai un pò di tentativi, il tutto è relativamente facile.
    Se hai ancora difficoltà fammi sapere che ti guido passo passo, accendendo naturalmente il pc con C::B
  • Re: Aiuto sulle funzioni

    Ciao vbextreme grazie, il problema è che ho fatto già come hai detto te ora, ho seguito passo passo una piccola guida che indica come fare il debug, mettendo un breakpoint ecc ecc. Il problema è che non parte proprio. Ho fatto caso ad una cosa però, eliminando dev c++ e la cartellina di riferimento di dev c++, non mi compila neanche il codice. Forse ci sono dei settaggi che dovrei fare visto che sto utilizzando code::blocks su sistemi windows, mentre so che questo compilatore gira perfettamente su unix e linx. Sapresti aiutarmi? [SMILING FACE WITH SMILING EYES]


    Inviato dal mio iPad utilizzando Tapatalk
  • Re: Aiuto sulle funzioni

    Intanto c::b non è un compilatore ! C::B USA mingw come il dev-c++ solo che uno è aggiornato e l altro no.
    Pertanto compilano codice per casa M su linux useresti sempre C::B ma con il compilatore GCC.
    Ma hai creato un nuovo progetto? É una cosa fondamentale negli ide!una volta creato il progetto e selezionato il linguaggio dovrai copiare o vecchi file del progetto nella nuova cartella poi clicchi il destro sul nome progetto nella treeview e aggiungi i file.
    Riesci a compilare e se no. Che errori da?
  • Re: Aiuto sulle funzioni

    Mi dice che manca il compilatore, quando avevo ancora installato sul pc il dev c++, c::b riusciva a compilare perché secondo me usava in automatico quello del dev. Vero? Comunque voglio provare ad installare anche il visual studio c++, sperando che sia un po' più amichevole . Me lo cinsigli?
  • Re: Aiuto sulle funzioni

    Allora disinstallare tutto, ora scaricati c::b quello con il compilatore TDM mingw molto probabilmente hai solo scaricato l IDE.
    Visuale studio a primo impatto può spaventare ma alla lunga ripaga.
Devi accedere o registrarti per scrivere nel forum
15 risposte