Errore compilazione programmino

di il
24 risposte

Errore compilazione programmino

Ho scritto una funzione per calcolare la potenza ma fuori dal main, poi nel main ho messo il codice dove usavo la funzione ma il debugger mi dà errore: power was not declared in this scope.Perché? La funzione l'ho scritta nello stesso file del main. Vorrei inoltre un consiglio: ho scritto apposta questa funzione per poi provare ad elevare a potenza frazionaria per estrarre radici di qualunque indice.Per questo scopo questa funzione può funzionare o ha bisogno di altro? Grazie in anticipo per l'aiuto.

#include <iostream>
#include <stdlib.h>
using namespace std;

int main()
{
    double a, pow;
    cout<<"Inserisci la base e l'esponente\n";
    cin>>a>>pow;
    cout<<power(2,1/2 )<<endl;

    system("pause");
    return 0;
}

 int power(double a, double pow)
{
    double Return = 1;
    if(pow>0)
        {
        for(int n=0; n<pow; n++)
         Return = Return*a;
        }
    else
        for(int n=0; n>pow; n--)
         Return /=a;
    return Return;
}





24 Risposte

  • Re: Errore compilazione programmino

    O metti la funzione prima del main o la dichiari.

    Vedi nel libro la parte teorica sulla dichiarazione delle funzioni.
  • Re: Errore compilazione programmino

    Premetto che non sono molto esperto ma comunque posso dirti con sicurezza un paio di cose che mi hanno fatto storcere il naso: innanzitutto quando chiami la funzione non capisco perché passi 1 e 1/2 e non le variabili a e pow, poi se vuoi calcolare una potenza frazionaria dovresti fare in modo che la funzioni dia a prescindere un valore reale, sennò il risultato sarebbe sempre 0, poi non riesco a capire perché hai dichiarato una variabile Return, basta solo fare a*=a e il gioco è fatto
    Dovresti anche prevedere l'eventuale uguaglianza a 0 dell'esponente, a quel punto passi semplicemente 1;
    Per calcolare la potenza negativa poi non sono proprio sicuro che a/=a sia la soluzione migliore, con l'esponente uguale a -1 da come valore 1, il ché come sai non è propriamente corretto
    E come scrive giustamente l'utente prima di me, le funzioni le devi quantomeno dichiarare prima del main!
  • Re: Errore compilazione programmino

    @goiu ... Lui sta alle basi delle basi... Importante chesi corregga da solo piano piano senza codice già pronto ...
  • Re: Errore compilazione programmino

    Ok grazie, ho messo prima del main la funzione e và bene, ma per farmi restituire il risultato di un elevamneto a frazione non ho capito bene cosa devo fare. Ho cambiato la funzione della potenza da int a double visto che il valore da restituire è decimale, ma se per esempio metto 0.5 dà risultato 1.
  • Re: Errore compilazione programmino

    Vorrei avere un'informazione: dopo aver imparato la grammatica del c++ per proseguire nello studio della programmazione, cosa esattamente devo studiare prima di poter programmare software, poi ci sono varie strade da scegliere riguardo all'applicazione dell'informatica ma fino a quel punto il percorso formativo è ugule per tutti i programmatori o no? Dunque che percorso dovrei intraprendere dopo aver imparato il linguaggio, considerando che studio da autodidatta con un libro di c++ intitolato Fundamentals of c++ programming di Richard L. Halterman, se lo conoscete mi potete dire cosa ne pensate?
  • Re: Errore compilazione programmino

    Il libro, come qualsiasi libro del linguaggio, va bene. Ma mi sembra che tu non lo abbia aperto quel libro. Non avresti dovuto avere questo errore se solo l'avessi letto.

    Solo per saperlo, dove sta la parte della dichiarazione delle funzioni? Cerca la pagina ...

    Per il resto, beh, dovresti conoscere almeno l'argomento che stai trattando nel programma. Ad esempio, stai trattando la funzione di elevamento a potenza apparentemente dimostrando di non averla mai studiata. Come mai ti metti a scrivere roba che non conosci in teoria? Perché non scrivi programmi più semplici o relativi ad argomenti che hai studiato?

    In matematica, una cosa è scrivere 2 elevato a 5, una cosa 2 a -5 e un'altra completamente diversa, 2 elevato a 0.5
    Queste conoscenze bisogna averle altrimenti si scrive codice C assurdo.


    P.S. Seriamente ... perché non pensi ad un altro linguaggio di programmazione, più semplice, immediato e che tu possa apprendere più velocemente e con maggiore profitto ? Ad esempio, Python o altro ...
  • Re: Errore compilazione programmino

    Io sò dalla metamtica che un numero elevato ad una potenza reale è uguale alla radice di quel numero avente come sponente sotto radice il numeratore della frazzione e come indice di radice il denominatore della frazione.In matematica vado molto bene il problema sta nel tradurre dalla matematica al linguaggio l'algoritmo, questo indipendentemente dal linguaggio che sia c o python. Quindi sapendo cosa avviene in matematica come faccio ad avere la radice ennesima di un numero?
  • Re: Errore compilazione programmino

    E la radice di cui parli dov'è nel programma?
  • Re: Errore compilazione programmino

    Io sono partito dal fatto che volevo il risulato di un numero elevato ad una potenza reale. Questo corrisponde alla radice di quel numero che ha come indice il denominatore e come esponente all'interno della radice il numeratore. Questo procedimento pensavo che la funzione pow lo facesse automaticamente quando inserivo un numero fratto come esponente, perciò ho chiesto se la mia funzione pow facesse questo oppure no. Quindi se la risposta è no allora come dovrei fare per calcolare la radice ennesima di un numero?
  • Re: Errore compilazione programmino

    Ma che stai dicendo? Ti ho chiesto dove calcoli la radice di cui parli nella tua funzione.
    Che c'entra la pow? La pow è una funzione della libreria che tu vuoi riscrivere !

    Te lo ripeto l'ultima volta. Tu devi scrivere SU CARTA cosa faresti e poi devi rifarlo nel programma. Se non sai scrivere SU CARTA i passaggi da fare, non scriverai mai codice da solo.
  • Re: Errore compilazione programmino

    Io non ho intenzione di calcolare nessuna radice, io voglio riscrivere la pow in modo che esegua elevamenti con frazioni ad esempio 2 elevato alla 1,5. Dunque chiedo se devo spiegarli un algoritmo per questo tipo di caso oppure lui riesce a farlo con ciò che ho gia scritto nel codice del primo post.
  • Re: Errore compilazione programmino

    olegfresi ha scritto:


    Io non ho intenzione di calcolare nessuna radice, io voglio riscrivere la pow in modo che esegua elevamenti con frazioni ad esempio 2 elevato alla 1,5. Dunque chiedo se devo spiegarli un algoritmo per questo tipo di caso oppure lui riesce a farlo con ciò che ho gia scritto nel codice del primo post.
    "lui non riesce a farlo"?

    Ma lui chi?

    Sei TU che devi scrivere tutti i passi per fare il calcolo ... e ancora ti chiedo E TU NON RISPONDI, quali sono questi passi per calcolare l'elevamento di 2 elevato a 1,5 ?

    SCRIVI qui nel forum in italiano quali sono i passi matematici per ottenere questo risultato!

    Se vuoi, aiutati con wikipedia, leggi


    Radici ed esponenti frazionari
  • Re: Errore compilazione programmino

    Anche wikipedia dice che un numero elevato a un numero reale è uguale alla radice che ha per indice il denominatore della frazione dell'esponente.
    Per esempio 2 elevato a 0.3 che è un terzo è uguale alla radice cubica di due elvato uno quindi alla radice cubica di due, ma nelle librerie c'è la funzione per le radici quadrate non cubiche o quarte o quinte ecc...è questo il problema, capire come programmare questa funzione.
  • Re: Errore compilazione programmino

    Ed è questo il punto! Qui si dà una mano su un codice proposto dal richiedente, perché è inutile fornirti un codice già bello e pronto per l'uso! Prova a buttare giù un algoritmo che calcola la radice di un numero e poi cerca di tradurlo col c++!
    Ti posso correggere e spiegare gli errori, ma devi farli TU, gli errori! Sennò che senso ha copiare e incollare un codice? Cosa impari? Lo puoi capire, te lo possiamo spiegare, ma poi? Anche se lo capisci non hai imparato tu!
Devi accedere o registrarti per scrivere nel forum
24 risposte