Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    [©] Calcolo del numero maggiore con ciclo

    Salve a tutti ho scritto il seguente codice

    codice:
    int main(void)
    {
    	float n, maggiore;
    
    	printf("\n************************************************\n");
    	printf("* Programma per il calcolo del numero maggiore *\n");
    	printf("*                 BY ZORGATONE                 *\n");
    	printf("************************************************\n\n");
    
    	maggiore = 0.00f;
    
    	printf("Immettere i numeri da confrontare (0 per smettere): ");
    	while (n != 0)
    	{
    		scanf("%f", &n);
    		if (maggiore < n) {maggiore = n;};
    	};
    	printf("Il numero maggiore è %.2f.\n", &maggiore);
    }
    Ma quando compilo mi da un errore (credo trascurabile) e poi eseguendo il programma non mi restituisce il valore maggiore ma sempre e soltanto 0.

    codice:
    zorgatone@zorgatone-laptop:~/Programmazione In C/Esercizi$ gcc -o sez6prog1_comp.out sez6prog1.c
    sez6prog1.c: In function ‘main’:
    sez6prog1.c:18: warning: format ‘%.2f’ expects type ‘double’, but argument 2 has type ‘float *’
    zorgatone@zorgatone-laptop:~/Programmazione In C/Esercizi$ ./sez6prog1_comp.out
    ************************************************
    * Programma per il calcolo del numero maggiore *
    *                 BY ZORGATONE                 *
    ************************************************
    
    Immettere i numeri da confrontare (0 per smettere): 1 2 3 4 5 2 3 0
    Il numero maggiore è 0.00.
    zorgatone@zorgatone-laptop:~/Programmazione In C/Esercizi$

  2. #2

    Re: [©] Calcolo del numero maggiore con ciclo

    • utilizzi il contenuto di "n" senza che tu gli abbia prima dato un valore: comportamento indefinito;
    • il warning che ti da il compilatore, non è trascurabile: te lo dice chiaramente cosa non va;
    • il ";" dopo la graffa chiusa del while, potrà crearti solo problemi;
    • main deve restituire un intero.

  3. #3

    Re: Re: [©] Calcolo del numero maggiore con ciclo

    Originariamente inviato da MacApp
    • main deve restituire un intero.
    Ok ho aggiunto un return 0;

    Originariamente inviato da MacApp
    • utilizzi il contenuto di "n" senza che tu gli abbia prima dato un valore: comportamento indefinito;
    • Ma il valore di n non è senza valore, lo prende dalla scanf no? O mi sbaglio?

      Originariamente inviato da MacApp
    • il ";" dopo la graffa chiusa del while, potrà crearti solo problemi;
  4. La graffa l'ho tolta.

    Originariamente inviato da MacApp
    • utilizzi il contenuto di "n" senza che tu gli abbia prima dato un valore: comportamento indefinito;
    • il warning che ti da il compilatore, non è trascurabile: te lo dice chiaramente cosa non va;
    Guarda cosa succede se cambio la dichiarazione delle variabili che è in float in double:

    codice:
    zorgatone@zorgatone-laptop:~/Programmazione In C/Esercizi$ gcc -o sez6prog1_comp.out sez6prog1.c
    sez6prog1.c: In function ‘main’:
    sez6prog1.c:15: warning: format ‘%f’ expects type ‘float *’, but argument 2 has type ‘double *’
    sez6prog1.c:17: warning: format ‘%.2f’ expects type ‘double’, but argument 2 has type ‘double *’
    zorgatone@zorgatone-laptop:~/Programmazione In C/Esercizi$
    EDIT: Per il formato double cosa uso al posto di %f che mi da errore???

    Qui sotto posto il codice aggiornato

    codice:
    #include <stdio.h>
    
    int main(void)
    {
    	double n, maggiore;
    
    	printf("************************************************\n");
    	printf("* Programma per il calcolo del numero maggiore *\n");
    	printf("*                 BY ZORGATONE                 *\n");
    	printf("************************************************\n\n");
    
    	maggiore = 0.00f;
    
    	printf("Immettere i numeri da confrontare (0 per smettere): ");
    	while (n != 0)
    	{
    		scanf("%f", &n);
    		if (maggiore < n)
    		{
    			maggiore = n;
    		}
    	}
    	printf("Il numero maggiore è %.2f.\n", &maggiore);
    	return 0;
    }
Rispondi quotando Rispondi quotando

  • #4

    Re: Re: Re: [©] Calcolo del numero maggiore con ciclo

    Originariamente inviato da Zorgatone
    Ok ho aggiunto un return 0;
    Ma il valore di n non è senza valore, lo prende dalla scanf no? O mi sbaglio?
    la scanf è dopo while (n != 0).
    Originariamente inviato da Zorgatone
    Guarda cosa succede se cambio la dichiarazione delle variabili che è in float in double:
    codice:
    sez6prog1.c:17: warning: format ‘%.2f’ expects type ‘double’, but argument 2 has type ‘double *’
    non è chiaro quello che ti dice il compilatore? vuole un double, ma tu gli passi un double *!
    ;-)

  • #5

    Re: Re: Re: Re: [©] Calcolo del numero maggiore con ciclo

    Originariamente inviato da MacApp
    la scanf è dopo while (n != 0).

    non è chiaro quello che ti dice il compilatore? vuole un double, ma tu gli passi un double *!
    ;-)
    OK meglio cambiare in do {...} while (n != 0);
    No non mi è chiaro,
    ma scusa cos'è un double *?? Io non gli ho dato un double normale?? Puoi rileggere il codice completo aggiornato???
    E poi ultima cosa è giusto usare su scanf e printf "%f" ??? (Scusa ma sono proprio agli inizi... )

    EDIT: mi da questo errore...

    codice:
    zorgatone@zorgatone-laptop:~/Programmazione In C/Esercizi$ gcc -o sez6prog1_comp.out sez6prog1.c
    sez6prog1.c: In function ‘main’:
    sez6prog1.c:17: warning: format ‘%f’ expects type ‘float *’, but argument 2 has type ‘double *’
    zorgatone@zorgatone-laptop:~/Programmazione In C/Esercizi$

  • #6

    Re: Re: Re: Re: Re: [©] Calcolo del numero maggiore con ciclo

    Originariamente inviato da Zorgatone
    OK meglio cambiare in do {...} while (n != 0);
    Ma scusa cos'è un double *?? Io non gli ho dato un double normale?? Puoi rileggere il codice completo aggiornato???
    con "&maggiore" ottieni l'indirizzo di maggiore, che appunto è un double *.
    http://it.wikipedia.org/wiki/Puntatore_(programmazione)

    per quanto riguarda l'errore del ";" non posso sapere non avendo il codice sorgente che te lo procura. Quello che hai postato in precedenza non soffre di quell'errore.
    ;-)

    EDIT: ok hai editato il messaggio precedente, quindi quest'ultima frase non ha più senso nel contesto ;-)

  • #7

    Re: Re: Re: Re: Re: Re: [©] Calcolo del numero maggiore con ciclo

    Originariamente inviato da MacApp
    con "&maggiore" ottieni l'indirizzo di maggiore, che appunto è un double *.
    http://it.wikipedia.org/wiki/Puntatore_(programmazione)

    per quanto riguarda l'errore del ";" non posso sapere non avendo il codice sorgente che te lo procura. Quello che hai postato in precedenza non soffre di quell'errore.
    ;-)
    Beh non ci ho capito molto i puntatori non li ho ancora studiati (ho appena iniziato i vari cicli)...
    Qui posto il codice com'è stato modificato finora (non ho proprio capito che modifica mi hai consigliato di apportare)

    codice:
    #include <stdio.h>
    
    int main(void)
    {
    	double n, maggiore;
    
    	printf("************************************************\n");
    	printf("* Programma per il calcolo del numero maggiore *\n");
    	printf("*                 BY ZORGATONE                 *\n");
    	printf("************************************************\n\n");
    
    	maggiore = 0.00f;
    
    	printf("Immettere i numeri da confrontare (0 per smettere): ");
    	do
    	{
    		scanf("%f", &n);
    		if (maggiore < n)
    		{
    			maggiore = n;
    		}
    	} while (n != 0);
    	printf("Il numero maggiore è %.2f.\n", &maggiore);
    	return 0;
    }

  • #8

    Re: Re: Re: Re: Re: Re: Re: [©] Calcolo del numero maggiore con ciclo

    ma scusa: per quale motivo scrivi:
    codice:
    	printf("Il numero maggiore è %.2f.\n", &maggiore);
    cosa intendi fare con la "&"?

  • #9

    Re: Re: Re: Re: Re: Re: Re: Re: [©] Calcolo del numero maggiore con ciclo

    Originariamente inviato da MacApp
    ma scusa: per quale motivo scrivi:
    codice:
    	printf("Il numero maggiore è %.2f.\n", &maggiore);
    cosa intendi fare con la "&"?
    Uops non me ne ero accorto... ora ho tolto il &.....

    rimangono gli errori del compilatore e se apro l'eseguibile non esce più dal ciclo quando immetto lo zero (sarà perchè ho corretto il while con un do while???)

  • #10
    Incredibilmente ha iniziato a funzionareeeeeeeeeeeeee!!!!!
    Il codice alla fine è

    codice:
    #include <stdio.h>
    
    int main(void)
    {
    	float n, maggiore;
    
    	printf("************************************************\n");
    	printf("* Programma per il calcolo del numero maggiore *\n");
    	printf("*                 BY ZORGATONE                 *\n");
    	printf("************************************************\n\n");
    
    	maggiore = 0.00f;
    
    	printf("Immettere i numeri da confrontare (0 per smettere): ");
    	do
    	{
    		scanf("%f", &n);
    		if (maggiore < n)
    		{
    			maggiore = n;
    		}
    	} while (n != 0);
    	printf("Il numero maggiore è %.2f.\n", maggiore);
    	return 0;
    }
    GRazie mille per l'aiuto!!!!!!!

  • Pagina 1 di 2 1 2 ultimoultimo

    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.