Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [C] Problema codice

  1. #1

    [C] Problema codice

    Salve, dovendo scrivere un programma con cui effettuare somma, sottrazione, moltiplicazione, divisione, modulo, radice quadrata, potenza di 3di due numeri dati in ingresso sullo standard input dall’utente (numeri reali), ho provato a scrivere il seguente codice:
    codice:
    #include <stdio.h>
    #include <iostream>
    #include <cstdlib>
    #include <cstring>
    #include <math.h> 
    
    
    int main () {
    
    
    float a, b, c, d, e, f, g_1, g_2, h_1, h_2, i_1, i_2;
    
    
    printf("Inserire il primo valore \n");
    
    
    scanf("%d", &a);//Comando per definire le variabili di cui si devono inserire i valori
    
    
    printf ("Inserire il secondo valore \n");
    
    
    scanf("%d", &b);
    
    
    printf ("La somma dei due valori inseriti e': %f \n", c);
    
    
    c = a + b; 
    
    
    printf ("La differenza dei due valori inseriti e': %f \n", d);
    
    
    d = a - b;
    
    
    printf("Il prodotto dei due valori inseriti e': %f \n", e);
    
    
    e = a * b;
    
    
    printf("Il quoziente dei due valori inseriti e' %f \n", f);
    
    
    f = a / b;
    
    
    printf("Il modulo del primo valore inserito e': %f \n", g_1);
    
    
    g_1 = abs(a);
    
    
    printf ("Il modulo del secondo valore inserito e': %f \n", g_2);
    
    
    g_2 = abs(b);
    
    
    printf ("La radice quadrata del primo valore inserito e': %f \n", h_1);
    
    
    h_1 = sqrt(a);
    
    
    printf("La radice quadrata del secondo valore inserito e': %f \n", h_2);
    
    
    h_2 = sqrt(b);
    
    
    printf("La potenza di 3 del primo valore inserito e':%f \n", i_1);
    
    
    i_1 = (a) * (a) * (a);
    
    
    printf("La potenza di 3 del secondo valore inserito e': %f \n", i_2);
    
    
    i_2 = (b) * (b) * (b);
    
    
    system ("PAUSE"); //COMANDO DI ATTESA
    
    
    return 0; //valore di ritorno del programma
    
    
    }
    Il problema è che quando compilo mi riporta, per tutte le operazioni, un valore pari a 0. Inoltre, se provo ad inserire come primo valore un intero il programma non mi permette neanche di inserire il secondo valore e si termina immediatamente. Ho provato a controllare più volte il tutto e non sono riuscito a capire quale possa essere il motivo.

    Grazie in anticipo a chi mi aiuterà.

  2. #2
    %d si usa per leggere variabili di tipo int, per i float si usa %f. Se abiliti i warning del tuo compilatore (-Wall -Wextra su gcc e clang, /W4 su VC++) questo tipo di errore ti viene segnalato.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Con %d inserisci interi non numeri in virgola mobile.
    Stai calcolando tutti i valori dopo averli utilizzati, quindi è un caso fortuito che ti vengano tutti 0, potrebbe andarti peggio.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    I was late
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Grazie mille per le risposte, il codice ora funziona a dovere!

    P.S. Chiedo scusa per rispondere in ritardo, ma con l'inizio dei corsi universitari sono riuscito solo ora a visionare il post per bene e rispondere.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.