Correzione errori e migliramento esercizio c

di il
4 risposte

Correzione errori e migliramento esercizio c

Salve a tutti.. eseguendo il codice in basso, il risultato delle banali operazioni di addizione, sottrazione ecc. viene sempre 0. Non capisco dove sta l'errore..Vorrei sapere anche come sostituire il goto e la ripetizione del getchar()..sono alle primissime armi con il c quindi siate clementi..
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
    float n1, n2, somma, sottr, molt, div, potenza;
    char c, r;
    
    printf("operatore: ");
    scanf("%c", &c);
    
    inizio: printf("primo numero: ");
    scanf("%f", &n1);
    
    printf("secondo numero: ");
    scanf("%f", &n2);
    
    if(c == '+'){
    somma = n1 + n2;
    printf("%f", &somma);
}
    else{
         if(c == '-'){
         sottr = n1 - n2;
         printf("%f", &sottr);
         }
         else{
              if(c == '*'){
              molt = n1 * n2;
              printf("%f", &molt);
              }
              else{
                   if(c == '/'){
                   div = n1 / n2;
                   printf("%f", &div);
                   }
                   else{
                        if(c == '^'){
                        potenza = pow(n1, n2);
                        printf("%f", &potenza);
                        }
                        else{
                             if(c != '+'||'-'||'*'||'/'||'^')
                             printf("ERRORE");
                             }
                             }
                             }
                             }
                             }
                             printf("\nsi desidera continuare? s\tn\n");
                             r = getchar();
                             r = getchar();
                             if(r == 's')
                             goto inizio;
                             else{
                                  if(r = 'n')
                                  exit(0);
                                  }
                                  }
                             
    

4 Risposte

  • Re: Correzione errori e migliramento esercizio c

    Nella printf non si passa l'indirizzo della variabile come nella scanf. Si scrive

    printf("%f", somma);
  • Re: Correzione errori e migliramento esercizio c

    Non ci posso credere...errore banale perfino per un dilettante..grazie mille..qualche dritta per il goto e la ripetizione di getchar?
  • Re: Correzione errori e migliramento esercizio c

    Il goto non bisognerebbe usarlo perché è sintomo di cattiva programmazione(un po incasinata).
    Al suo posto puoi usare uno dei tanti cicli iterativi come il .

    P.s.
    Come per il goto, anche il break non è benvisto(almeno coi prof con cui ho a che fare...).
  • Re: Correzione errori e migliramento esercizio c

    Platone 2.0 ha scritto:


    Il goto non bisognerebbe usarlo perché è sintomo di cattiva programmazione(un po incasinata).
    Al suo posto puoi usare uno dei tanti cicli iterativi come il .

    P.s.
    Come per il goto, anche il break non è benvisto(almeno coi prof con cui ho a che fare...).
    Quoto, Mai usare goto. In modo tale da non scrivere il cosiddetto Spaghetti code.

    Spaghetti code è un termine dispregiativo per quei programmi per computer che hanno una struttura di controllo del flusso complessa e/o incomprensibile, con uso esagerato ed errato di go to, eccezioni, thread e altri costrutti di branching (diramazione del controllo) non strutturati.

    Il suo nome deriva dal fatto che questi tipi di codice tendono a assomigliare a un piatto di spaghetti, ovvero un mucchio di fili intrecciati ed annodati.

    Spaghetti code è un esempio di anti-pattern.
    Da Wikipedia .

    Detto questo è bene utilizzare strutture iterative come ad esempio for, while e do while.
Devi accedere o registrarti per scrivere nel forum
4 risposte