Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    problema esercizio con la funzione fabs [C]

    Ciao a tutti sono Giuseppe e sono nuovo del forum, mi sono iscritto in quanto ho visto che siete molto preparati e forse potreste aiutarmi a capire un pò di più il linguaggio C che sto studiando per un esame di Informatica. Premetto che sono all'inizio, quindi ne so ben poco del linguaggio C.

    Il prof. ha dato degli esercizi da svolgere e nel caso particolare ne ha dato uno che tratta la funzione fabs per il valore assoluto sul quale sto sbattendo letteralmente la testa.

    IL testo dell' esercizio è questo:
    Scrivere una serie di istruzioni in C tale che, date due variabili volt_1 e volt_2, se la loro differenza è maggiore di 10.0 visualizza il valore delle due variabili, altrimenti stampa il valore assoluto della loro differenza.
    N.B. Notare che devono essere confrontati i "valori assoluti", o modulo, di tale variabili, altrimenti si potrebbe ottenere un risultato errato.

    Ecco io ho provato a scrivere questo:
    codice:
    #include <stdio.h> 
    #include <math.h> 
    #include <stdlib.h>  
    int main() {     
       double volt_1=-5, volt_2=20, diff_12, moddif;     
       diff_12= fabs(volt_1)-fabs(volt_2);     
       moddif=fabs(diff_12); 
    if (moddif>10.0) 
       { printf( "Valore prima variabile = %d /n Valore seconda variabile = %d \n", volt_1, volt_2);} 
    else 
       {printf( "Valore assoluto della differenza delle due variabili = %d \n ", moddif); } 
    
    system ("PAUSE"); 
    return EXIT_SUCCESS; }
    il risultato però non mi convince mi sa di aver sbagliato sicuramente qualcosa
    Potete aiutarmi a capire cosa ho sbagliato?
    Grazie a tutti anticipatamente

  2. #2
    Benvenuto nel forum di HTML.it

    Troverai molti 'colleghi' studenti di Ingegneria di qualsiasi tipo, SSMMFFNN, Fisica et simila.

    Cosa intendi per "non mi convince"? In Matematica il risultato è una variabile booleana: corretto o non corretto; come direbbero i Latini: "Tertium non datur".

    Nel caso specifico, quanto è il risultato della differenza?

  3. #3
    Ciao, grazie
    allora mi esce:
    Valore prima variabile =0
    Valore seconda variabile = -1072431104

    ok il valore dovrebbe essere >10 ma
    non dovrebbero uscirmi i valori -5 e 20??

    codice:
    double volt_1=-5, volt_2=20, diff_12, moddif;     
       diff_12= fabs(volt_1)-fabs(volt_2);  |-5|-|20| --> 5-20  ---> (-15)     
       moddif=fabs(diff_12); ---> |-15| ---> 15;  
    if (moddif>10.0) 
       { printf( "Valore prima variabile = %d /n Valore seconda variabile = %d \n", volt_1, volt_2);} 
    else 
       {printf( "Valore assoluto della differenza delle due variabili = %d \n ", moddif); } 
    
    system ("PAUSE"); 
    return EXIT_SUCCESS; }

  4. #4
    ho provato anche ha inserire i valori tramite scanf

    codice:
    #include <stdio.h>
    #include <math.h>
    #include <stdlib.h>
    
    int main()
    {
        double volt_1, volt_2, diff_12, moddif;
        printf("Inserire prima variabile:");
        scanf("%d", &volt_1);
        printf("Inserire seconda variabile:");
        scanf("%d", &volt_2);
        diff_12= fabs(volt_2)-fabs(volt_1);
        moddif=fabs(diff_12);
    if (moddif>10.0)
    { printf( "Valore prima variabile = %d /n Valore seconda variabile = %d \n", volt_1, volt_2);}
    else
    {
        printf( "Valore assoluto della differenza delle due variabili = %d \n ", moddif);}
    
    system ("PAUSE");
    return EXIT_SUCCESS;
    }
    in questo caso ad esempio se inserisco prima variabile -5 seconda variabile -10 (o altro valore)
    mi esce sempre:
    Valore prima variabile = -5
    Valore seconda variabile = 1986174516

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    %d vale per gli interi mentre per i double nelle printf devi usare %lf
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Originariamente inviato da oregon
    %d vale per gli interi mentre per i double nelle printf devi usare %lf
    Grazie infinite Oregon ora funge il tutto ....come immaginavo uno sbaglio cretinissimo

    ma lo stesso vale anche per scanf??

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Basta studiare la documentazione

    http://www.cplusplus.com/reference/cstdio/printf/

    http://www.cplusplus.com/reference/cstdio/scanf/

    Come si fa a programmare senza leggere la documentazione?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Originariamente inviato da oregon
    Basta studiare la documentazione

    http://www.cplusplus.com/reference/cstdio/printf/

    http://www.cplusplus.com/reference/cstdio/scanf/

    Come si fa a programmare senza leggere la documentazione?
    Hai perfettamente ragione scusami...domanda stupida e pigra.
    Purtroppo stavo studiando solo dalle dispense date dal prof (il quale ha detto che bastava studiare solo da queste) dove ovviamente non c'è scritto una beneamata...speravo bastassero solo quelle...ma vedo che dovrò studiare altrove ed usare le dispense ne wc

    Grazie ancora per la disponibilità e per la rapidità di risposta.
    a presto

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 © 2025 vBulletin Solutions, Inc. All rights reserved.