Piccolo problema con un programma in C

di il
13 risposte

Piccolo problema con un programma in C

Salve a tutti,
stavo provando a fare un esercizio su alcune funzionalità del linguaggio C (ho iniziato da poco a programmare), quando una volta che provo il programma non mi esegue alcune funzioni.


#include <stdio.h>
int main() {
    int A,B,C,D,E,F;
    
    printf("\n Inserisci la tua data di nascita\n");
    scanf ("%d.%d.%d",&A,&B,&C);
    
    printf("\n Ora inserisci il giorno corrente\n");
    scanf("%d.%d.%d",&D,&E,&F);
    
    int anni;
    
    anni = F - C;
    
    if (A>D && B>E){
    
         anni = anni - 1;
        
        
        printf("La tua età è %d\n",anni);
            
        }
    

    else{
    
        printf("La tua età è %d\n",anni);
        
    }

    float frequenza_cardiaca_max,frequenza_cardiaca_media1,frequenza_cardiaca_media2;
    
    frequenza_cardiaca_max = 220 - anni;
    
    printf("\nLa tua frequenza cardiaca massima è %f",frequenza_cardiaca_max);
    scanf("%f",&frequenza_cardiaca_max);
    
    printf("ORA");
    frequenza_cardiaca_media1 = frequenza_cardiaca_max * (50 / 100);
    
    frequenza_cardiaca_media2 = frequenza_cardiaca_max * (80 / 100);

    
    
    printf("\nLa tua frequenza cardiaca media è tra %f e %f", frequenza_cardiaca_media1,  frequenza_cardiaca_media2);
    scanf("%f",&frequenza_cardiaca_media1);
    scanf("%f",&frequenza_cardiaca_media2);
    
    }

Il mio problema sta nela fatto che dal PRINTF contente "ORA" (incluso lo stesso) non mi fa più nulla, quindi non mi esegue le funzioni di printf e non mi stampa gli ultimi pezzi di codice.

Sapete per caso come risolvere? Grazie mille

P.S. Per programmare uso XCODE

13 Risposte

  • Re: Piccolo problema con un programma in C

    Scusa ma perchè dopo aver stampato "La tua frequenza cardiaca massima è" richiedi in input frequenza_cardiaca_max? Non l'hai già calcolata?
  • Re: Piccolo problema con un programma in C

    E lo stesso fai dopo ... A che servono le scanf finali?
  • Re: Piccolo problema con un programma in C

    Indipendentemente dalle scanf (che effettivamente non so perchè siano lì), la printf prima delle scanf dovrebbe farla. Prova a mettere su Xcode un breakpoint sulla printf("ORA") e da lì esegui il codice riga per riga e vedi cosa succede.. magari viene lanciata un'eccezione per qualche motivo
  • Re: Piccolo problema con un programma in C

    Il mio programma si basa sul calcolare la frequenza cardiaca media che è la frequenza cardiaca massima moltiplicata per 50% e per 80%. Quindi dopo aver calcolato la frequenza cardiaca massima pensavo di moltiplicarla per quei valori e poi stamparli mediante printf e salvarli con scanf. Ecco perchè uso più volte la frequenza cardiaca massima.Solo che non funziona.
  • Re: Piccolo problema con un programma in C

    leonsirio ha scritto:


    e salvarli con scanf
    Cosa ti aspetti che faccia scanf()?
  • Re: Piccolo problema con un programma in C

    Salvarli con scanf??
  • Re: Piccolo problema con un programma in C

    Per salvarli (su file la soluzione è un fprintf)

    https://www.tutorialspoint.com/c_standard_library/c_function_fprintf.htm
  • Re: Piccolo problema con un programma in C

    Si, forse ho fatto un po’ di confusione con scanf. Per caso mi potreste spiegare brevmente il suo funzionamento oppure sapreste per caso dove trovare una descrizoone di cosa faccia scanf?

    In ogni caso il problema persiste, appena riesco ad accedere al computer vi faccio sapere se riesco a riosolvere.

    Grazie mille per il vostro tempo
  • Re: Piccolo problema con un programma in C

    Se non sai cosa fa scanf() perchè la richiami?
  • Re: Piccolo problema con un programma in C

    Cioè nel senso, penso che la scanf serva per salvare la variabile ed estrarla mediante la e commerciale (&). Ripeto che sono alle prime armi quindi vi prego di perdonarmi errori banali.
  • Re: Piccolo problema con un programma in C

    Ora ho provato a togliere i tre scanf dal programma ed effetivamente funziona. Qualcuno saprebbe spiegarmi il perchè? Grazie mille

    Poi ho notato che però i valori di frequenza cardiaca media 1 e 2 mi vengo sempre 0.000000 e non capisco il perchè.
    Grazie mille
  • Re: Piccolo problema con un programma in C

    Scanf aspetta che da standard input (tastiera di default) arrivi un valore che andrà inserito nella cella di memoria a cui punta la variabile. Se dichiari: int a =0 tu non vedi in memoria dove è salvata la variabile a, semplicemente ti interessa il suo valore che è 0. Se tu scrivi &a il valore che ti viene ritornato è il numero della cella di memoria in cui la variabile a è salvata e il suo valore non sarà 0, ma un numero enorme che rappresenta la sua locazione all'interno della memoria.
    Se tu scrivi scanf(%d,&a) stai dicendo: inserisci qualcosa da tastiera e quando premi invio interpretamelo come un numero interno e salva il valore nella variabile a.
    Ti starai chiedendo: perché non scrivere direttamente solo a? Per questa risposta leggi una qualunque guida ai puntatori C.
    E non farti problemi a domandare che non esistono domande banali
    Riguardo agli 0.00000 non ho provato il tuo codice, ma da scanf cerca di evitare formattazioni strane della stringa di input: se devi inserire un float scrivi "%f" senza caratteri in mezzo.. da linea di comando è facile sbagliare su queste cose.. secondo me da 0 perché non è riuscito a interpretare il tuo input come un float
  • Re: Piccolo problema con un programma in C

    Ho risolto invece che (50/100) ho messo direttamente 0.5 e la stessa cosa per la seconda frequenza cardiaca.

    Grazie mille a tutti per le risposte
Devi accedere o registrarti per scrivere nel forum
13 risposte