Risultato sballato su "programmino" C++

di il
3 risposte

Risultato sballato su "programmino" C++

Ciao Ragazzi, frequento il 1° anno di ITIS e sono alle prime armi con la programmazione in C++.
Stavo facendo un banale programma che risolve l'espressione 2x+3y+4z, inserendo in input i valori delle tre variabili. Il risultato non è mai corretto e inoltre ho notato che, nonostante il comando float all' inizio della stringa, X e Y vengono visti come int, mentre solo Z come float. Allego l'intero codice del programma. Potreste aiutarmi ? Grazie !

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

 main()
{
       system("color E3") ;
       float x=0 , y=0 , z=0 ;
       float risultato=0 ;
       printf("PROGRAMMA ESPRESSIONE - VERSIONE 1 \n") ;
       printf("Inserisci il valore di X") ;
       scanf("%f" ,&x) ;
       printf("Inserisci il valore di Y") ;
       scanf("%f" ,&y) ;
       printf("Inserisci il valore di Z") ;
       scanf("%f",&z) ;
       printf("\n \n") ;
       printf("Il programma calcolera' l'espressione 2x + 3y * 4z \n") ;
       risultato = 2*x + 3*y * (4*z) ;
       printf("Il Risultato e'") ;
       printf("%f" ,risultato) ;
       printf("\n") ;
       system("pause") ;
}       
 

3 Risposte

  • Re: Risultato sballato su "programmino" C++

    Non so se i tuoi professori ti spieghino il linguaggio di programmazione ANSI C facendoti credere che sia il c++.

    Ti riscrivo il programma utilizzando il c++.
    
    #include <iostream>
    using namespace std; 
    
    int main()
    {
        float x=0 , y=0 , z=0 ;
           float risultato=0 ;
           cout<<"Calcolo dell' espressione 2x + 3y * 4z"<<endl;
           cout<<"Inserire il valore di x: ";
           cin>>x;
           cout<<"Inserire il valore di y: ";
           cin>>y;
           cout<<"Inserire il valore di z: ";
           cin>>z;
           cout<<"Il programma calcolera' l'espressione 2x + 3y * 4z \n";
           risultato=2*x;
           risultato=risultato+3*y;
           risultato=risultato*4*z;
           cout<<risultato;
           system("PAUSE");
    }
    
    
    Ora ti spiego il problema, quando tu esegui le espressioni algebriche segui le regole gerarchiche. Invece il calcolatore non conosce queste regole quindi devi strutturare le operazioni separandole, hai inteso?. Un esempio pratico che puoi benissimo fare con la tua calcolatrice: Prova a calcolare il valore in modo sequenziale dell' esspressione 2*4 + 3*2 *4 * 2.
    Facendolo su carta e penna ti verrà 112 mentre con la calcolatrice un risultato non vero!... questo perche tu prima fai la moltiplicazione poi la somma dei valori moltiplicati.

    Questo è il tuo codice in C# corretto:
    #include <stdlib.h>
    #include <stdio.h>
    
    int main()
    {
           system("color E3") ;
           float x=0 , y=0 , z=0 ;
           float risultato=0 ;
           printf("PROGRAMMA ESPRESSIONE - VERSIONE 1 \n") ;
           printf("Inserisci il valore di X") ;
           scanf("%f" ,&x) ;
           printf("Inserisci il valore di Y") ;
           scanf("%f" ,&y) ;
           printf("Inserisci il valore di Z") ;
           scanf("%f",&z) ;
           printf("\n \n") ;
           printf("Il programma calcolera' l'espressione 2x + 3y * 4z \n") ;
           risultato=2*x;   //Qui le correzioni,..
           risultato=risultato+3*y; // ..qui
           risultato=risultato*4*z; //e qui
           printf("Il Risultato e'") ;
           printf("%f" ,risultato) ;
           printf("\n") ;
           system("pause") ;
    }    
    
    Tutto chiaro?
  • Re: Risultato sballato su "programmino" C++

    Grazie Michael, probabilmente hai ragione : essendo all'inizio non ci spiegheranno tante cose subito... Comunque ora il programma funziona, anche se hai sbagliato a scrivere la seconda e la terza stringa di correzioni (1- Non è risultato + 3*2 ma risultato + 3*y
    2- Non è risultato * 4*2 ma risultato * 4*z) , comunque non fa niente e tante grazie comunque
  • Re: Risultato sballato su "programmino" C++

    FedeValentz ha scritto:


    Grazie Michael, probabilmente hai ragione : essendo all'inizio non ci spiegheranno tante cose subito... Comunque ora il programma funziona, anche se hai sbagliato a scrivere la seconda e la terza stringa di correzioni (1- Non è risultato + 3*2 ma risultato + 3*y
    2- Non è risultato * 4*2 ma risultato * 4*z) , comunque non fa niente e tante grazie comunque
    Ah scusami, ho corretto il tutto. Comunque a prescindere dall' errore sono felice di aver risolto il tuo problema .
Devi accedere o registrarti per scrivere nel forum
3 risposte