[C] problema esercizio

fedegt
ciao a tutti... stò provando a fare un programmino per l'esercitazione ma non riesco a farlo funzionare. Il programma chiede questo
Esercizio 1
● Acquisire da tastiera una variabile intera, una variabile float e una double
● Visualizzare i rispettivi valori in una unica istruzione di stampa su console
● Eseguire la moltiplicazione fra i tre valori
● Visualizzare il valore della moltiplicazione su console

e io ho provato a scriverlo così
/* programma esercitazione numero 1 - 1 */

# include
int main ()
{

int x;
float y, risultante;
double z;
printf (" immetere una variabile intera \n ");
scanf (" %d", &x);
printf (" immettere una variabile float \n ");
scanf (" %f", &y);
printf (" immettere una variabile double \n ");
scanf (" %f", &z);
risultante = x*(y*z);
printf (" il risultato è %f /n",risultante);


system ("pause");

lo sò è semplice ma io sono alle prime armi!

grazie ciao
return 0;
}

Risposte
starsuper
ti manca la libreria stdlib.h.
Che errore ti da?
eventualemte stampati questo

printf (" il risultato è %f %f %f %d /n",risultante,y,z,x);

cosi li stampi tutti e tre

riporva e fcci spaere

fedegt
non và

starsuper
che errore ti da?

togli il return 0 e metti un bel getch()

apatriarca

togli il return 0 e metti un bel getch()

Non vedo il legame tra le due istruzioni, forse intendevi dire di togliere system("pause")? Se lo scopo è semplicemente quello di mantenere aperta la console quando si fa partire l'applicazione da un IDE allora è probabilmente meglio richiedere semplicemente all'IDE di farlo senza far ricorso a istruzioni aggiuntive inutili.

@ fedgt: Perché il risultato è memorizzato in un float? Tutte le 3 variabili vengono promosse a double automaticamente e sembrerebbe quindi il tipo più sensato per il risultato. Non è necessario inserire le parentesi per indicare come eseguire il prodotto: x * y * z funziona correttamente senza problemi. Puoi fare a meno di usare una variabile aggiuntiva per memorizzare il risultato del prodotto in quanto puoi semplicemente scrivere x * y * z come argomento del printf.
Perché lasci uno spazio all'inizio di ogni riga?

A parte questi commenti (e la mancanza di stdlib.h) l'unico errore che ho visto nel tuo codice è l'uso di %f invece che %lf per leggere la variabile double. Il seguente dovrebbe funzionare.
#include <stdio.h>

int main() 
{
    int x;
    float y;
    double z;
 
    printf("Immettere una variabile intera: "); 
    scanf("%d", &x); 
    printf("Immettere una variabile float: "); 
    scanf("%f", &y); 
    printf("Immettere una variabile double: "); 
    scanf("%lf", &z); /* Per leggere una variabile double devi usare %lf e non %f */

    /* Ho inserito l'operazione nella chiamata al printf (non è necessaria). Avevi inoltre scritto /n invece di \n */
    printf("Il risultato è %f\n", x * y * z);

    return 0; 
}

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.