Calcolatrice in c

di il
20 risposte

Calcolatrice in c

Salve a tutti ho un problema con questo programma... devo fare una calcolatrice in c sono che nn riesco a capire il perchè di una cosa...quando ho inserito l'if riguardante l'elevamento a potenza non mi compare + il printf relativo al risultato...mi potete dare una mano? grazie

#include <stdio.h>
#include <stdlib.h>

int a, b , c, scelta, ret, i;

main()
{
printf("CALCOLATRICE:");
printf("\n\nOperazioni:");
printf("\n 1: somma");
printf("\n 2: sottrazione");
printf("\n 3: moltiplicazione");
printf("\n 4: divisione");
printf("\n 5: elevamento a potenza");
printf("\n\nOperazione da eseguire: ");

scanf("%d", &scelta); /*scelta dell'operazione*/

printf("Inserisci il primo numero: ");
scanf("%d", &a);
printf("Inserisci il secondo numero: ");
scanf("%d", &b);

if (scelta==1)
c = a + b;
else if (scelta==2)
c= a - b;
else if (scelta==3)
c= a * b;
else if (scelta==4)
c= a / b;
else if (scelta==5)
ret = 1;
for (i=0; i<b; i++)
ret= ret * a;
return ret;

printf("Risulato: %d", c,ret); /*stampa risultato*/

}

20 Risposte

  • Re: Calcolatrice in c

    A cosa ti serve far restituire ret?
    E' ovvio che in quel modo il programma termina prima della printf...
    Prova semplicemente a rimuovere return ret; e poi facci sapere se funge
  • Re: Calcolatrice in c

    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {

    int a, b , c, scelta, i;
    {
    printf("CALCOLATRICE:");
    printf("\n\nOperazioni:");
    printf("\n 1: somma");
    printf("\n 2: sottrazione");
    printf("\n 3: moltiplicazione");
    printf("\n 4: divisione");
    printf("\n 5: elevamento a potenza");
    printf("\n\nOperazione da eseguire: ");

    scanf("%d", &scelta); /*scelta dell'operazione*/

    printf("Inserisci il primo numero: ");
    scanf("%d", &a);
    printf("Inserisci il secondo numero: ");
    scanf("%d", &b);


    if (scelta==1)
    c = a + b;
    else if (scelta==2)
    c= a - b;
    else if (scelta==3)
    c= a * b;
    else if (scelta==4)
    c= a / b;
    else if (scelta==5)
    {
    c = 1;
    for (i=0; i<b; i++)
    c = c * a;
    }

    printf("Risulato: %d", c); /*stampa risultato*/

    }

    return 0;
    }
    Così funziona: c'erano due errori: nell'ultimo else if non avevi messo le parentesi (se si tratta di un blocco di istruzioni e non una sola sono obbligatorie), e hai messo return ret, che praticamente faceva in modo che il programma terminasse nel caso si scegliesse l'elevamento a potenza, restituendo il risultato, ma non stampandolo tramite printf.
    Ovviamente, prendi tutto con le pinze, perché sono alle prime armi
  • Re: Calcolatrice in c

    Perfetto grandissimo!!! ora funziona tutto grazie mille
  • Re: Calcolatrice in c

    Scusate mi serve un chiarimento su una cosa...io ho aggiunto alla fine un if che mi permette di scegliere se terminare il programma oppure ricominciare...che codice devo usare per terminare e per ricominciare il programma?
    grazue
  • Re: Calcolatrice in c

    simo9115 ha scritto:


    scusate mi serve un chiarimento su una cosa...io ho aggiunto alla fine un if che mi permette di scegliere se terminare il programma oppure ricominciare...che codice devo usare per terminare e per ricominciare il programma?
    grazue

    devi fare un ciclo infinito. Il famoso while (true)

    e solo quando preme il tasto per uscire diventa false.

    So che in c non ci sono true e false quindi puoi fare ad esempio :

    int cond = 1;
    while (cond==1){
    continui a eseguire
    }

    quando premono il tasto per uscire fai : cond = 0
  • Re: Calcolatrice in c

    Ok grazie dell'aiuto approfitto x chiedervi una cosa basilare di c che però mi crea confusione...mi spiegate la differenza tra queste righe di codice?:

    a==b a=b a='b' a="b"
  • Re: Calcolatrice in c

    simo9115 ha scritto:


    ok grazie dell'aiuto approfitto x chiedervi una cosa basilare di c che però mi crea confusione...mi spiegate la differenza tra queste righe di codice?:

    a==b a=b a='b' a="b"
    a==b --> rappresenta un uguaglianza (puoi usarlo in un confronto)

    a=b ---> rappresenta una assegnazione assegni ad a il valore di b

    a='b' ---> sempre assegnazione. Assegni ad a il carattere b

    a="b" ---> sempre assegnazione assegni ad a la stringa b
  • Re: Calcolatrice in c

    Bomberdini ha scritto:


    a="b" ---> sempre assegnazione assegni ad a la stringa b
    In realtà questa merita un approfondimento, anche in dipendenza del tipo di variabile a

    Dire che si assegna una stringa in questo modo non è corretto.
  • Re: Calcolatrice in c

    Si potrebbe fare un ciclo. ma essendo "b" una stringa di un carattere si puo fare.
  • Re: Calcolatrice in c

    Bomberdini ha scritto:


    si potrebbe fare un ciclo. ma essendo "b" una stringa di un carattere si puo fare.
    No, non è così.

    Prova a proporre del codice da compilare in quel modo ...
  • Re: Calcolatrice in c

    Provalo
  • Re: Calcolatrice in c

    Ma cosa dovrei provare?
  • Re: Calcolatrice in c

    Quell'assegnazione...

    Io non ho un compilatore c tra le mani, ma quell'assegnazione funziona..

    Prova questo e vedrai che non da errori :

    char variabile1[] = "b";
    char *variabile2;
    variabile2 = variabile1;
    printf("indirizzo: %x ",variabile1);
    printf("indirizzo: %x ",variabile2);

    sul cosa effettivamente fa ci si deve chiarire... ma quel tipo di assegnazione e' lecito..
  • Re: Calcolatrice in c

    Bomberdini ha scritto:


    quell'assegnazione...
    No ... così non parliamo della stessa assegnazione.

    Fai attenzione ... si parlava di

    a="b";

    con a dichiarata in precedenza. Se scrivi

    char variabile1[] = "b";

    non stiamo parlando della stessa cosa.
Devi accedere o registrarti per scrivere nel forum
20 risposte