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

    [C]Problema molto strano... con if credo.

    Ciao a tutti ho creato un piccolo programma per calcolare il peso forma di un uomo oppure di una donna.

    V mostro il codice:

    codice:
    #include <stdio.h>
    
    int main ()
    {
    	char sesso[10];
    	int altezza;
    	int peso;
    	printf("Ciao sono un nuovo programma per controllare il peso forma. \n dovrai rispondere ad alcune domande però... \n iIniziamo subito.\n");
        printf("Sei maschio o femmina \? \n");
    	scanf("%s", sesso);
    	printf("quanti centimentri  sei alto\? esempio 160 \n");
    	scanf("%d", &altezza);
    	printf("quanto pesi\? \n");
    	scanf("%d", &peso);
       	int P_M = altezza - 100; //forumala per calcolare il peso forma di un uomo
    	int P_D = altezza - 104; // formula per calcolare il peso forma di una donna;
    	
    	if ( sesso == 'maschio') {
    		printf( "Il tuo peso ideale é: %d", P_M); 
    			
    		}else if (sesso == 'femmina') {
    		printf("Il tuo peso ideale è: %d",  P_D);
    	}
    	
    	
    	return 0;
    }

    Funziona fino alle variabili che calcolano il peso forma, ho fatto una prova con printf prima di if e mi stampa il risultato giusto...
    Il problema è questo, perche come output non mi viene il tuo peso ideale é:?
    è come se if non funzionasse e neanche else if...


    Ho un altra domanda, come si calcola la percentuale con C?


    grazie in anticipo

  2. #2
    In primo luogo, hai specificato maschio e femmina in apici singoli, che servono per contenere un singolo carattere. Devi metterli in apici doppi ("maschio" "femmina").
    Inoltre i confronti di stringhe in C non si fanno con l'operatore di uguaglianza (che si limita in tal caso ad effettuare un confronto di puntatori), ma con la funzione strcmp.
    Ho un altra domanda, come si calcola la percentuale con C?
    In che senso?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Guado ho modificato un po il codice:


    codice:
    #include <stdio.h>
    
    int main ()
    {
    	char sesso;
    	int altezza;
    	int peso;
    	
    	printf("Ciao sono un nuovo programma per controllare il peso forma. \n dovrai rispondere ad alcune domande però... \n iIniziamo subito.\n");
        printf("Sei maschio o femmina \? \n");
    	scanf("%c", &sesso);
    	while( getchar() != '\n');
    	printf("quanti centimentri  sei alto\? esempio 160 \n");
    	scanf("%d", &altezza);
    	
    	printf("quanto pesi\? \n");
    	scanf("%d", &peso);
       	
    	int P_M = altezza - 100; //forumala per calcolare il peso forma di un uomo
    	int P_D = altezza - 104; // formula per calcolare il peso forma di una donna;
    	int P_M2 = (PM * 5)/ 100; // calcolo percentuale
    	if ( sesso == 'm') {
    		printf( "Il tuo peso ideale é: %d", P_M); 
    			
    		}else if (sesso == 'f') {
    		printf("Il tuo peso ideale è: %d",  P_D);
    	}
    	
    	
    	return 0;
    }

    Adesso prende solo la prima lettera, se uno scrive maschio la m o femmina solo f, ma ho ancora un problema, per calcolare la percentuale devo fare cosi?

    int P_M2 = (PM * 5)/ 100; // calcolo percentuale

  4. #4
    Originariamente inviato da gennahouse
    ma ho ancora un problema, per calcolare la percentuale devo fare cosi?

    int P_M2 = (PM * 5)/ 100; // calcolo percentuale
    Ma la percentuale di cosa?
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Devo calcolare il 5 % di P_M per poi sottrarlo a P_M stresso.
    ti faccio un esempio, se sei alto 180 cm, sei uomo e pesi 70 kg il programma dovra fare questo:

    180 - 100 e dopo -5% per dirti il tuo peso forma giusto.

    Dopo faro un ciclo con if per dirti se devi perdere o aumentare il tuo peso.
    esempio il peso forma di un uomo alto 1.80 è 75 per ipotesi, se pesi 80 i lprogramma ti dira che devi perdere 5 kg.


    Comunque con la libreria math.h non è possibile calcolare la percentuale... (da quanto ho letto).

  6. #6
    Ma per togliere il 5% da un numero basta moltiplicarlo per 0.95, avendo cura naturalmente di assegnare il risultato ad un double e non ad un int.
    In alternativa, se vuoi rimanere in aritmetica ad interi, moltiplica per 95 e dividi per 100 (non il contrario, se no perdi precisione).
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Scusa cosa hanno di sbagliato queste due funzioni?

    codice:
    int percentuale (int x) {
    
    return x * 5 \ 100;
    }

    oppure


    codice:
    int percentuale (int x, int y, int z) {
    
    return x * y \ z;
    }
    la stavo creando proprio per calcolare la percentuale.

  8. #8
    ahhhhhh sono un asino l'ho messo al contrario /.

  9. #9
    codice:
    if ((sesso == 'm') && (il5xcento_uomo > P_M)) {
    		printf( "Il tuo peso ideale é: %d", il5xcento_uomo); 
    		printf(" dovresti perdere:%d", differenza_peso_uomo);
    		printf("kg");
    	}else if ((sesso == 'm') && (il5xcento_uomo < P_M)) {
    		printf( "Il tuo peso ideale é: %d", il5xcento_uomo); 
    		printf(" dovresti aumentare:%d", differenza_peso_uomo);
    		printf("kg");
    			
    	}else if ((sesso == 'm') && (il5xcento_uomo == P_M)) {
    		printf( "Il tuo peso ideale é: %d", il5xcento_uomo); 
    		printf(" complimenti questo è il tuo peso forma!");
    	
    		
    	}else if( (sesso == 'f') && (il5xcento_donna >= P_D) ) {
    		printf( "Il tuo peso ideale é: %d", P_D); 
    		printf("dovresti perdere:%d", differenza_peso_donna, "kg");
    		
    	} else if ( (sesso == 'f') && (il5xcento_donna <= P_D) ) {
    		printf( "Il tuo peso ideale é: %d", P_M); 
    		printf("dovresti anmentare:%d", differenza_peso_donna, "kg");
    	}else if ((sesso == 'f') && (il5xcento_donna == P_D)) {
    		printf( "Il tuo peso ideale é: %d", il5xcento_donna); 
    		printf("\n complimenti questo è il tuo peso forma!");
    	
    	}

    Perche questo ciclo if dice sempre che la prima è vera per l'uomo?
    se peso 80 ma dovrei pesare 76 mi dice dovresti aumentare il tuo peso -4 al posto di dire dovstri perdere 4 kg.


    se invece metto il peso correstto al posto di dire questo è il tuo peso forma mi dice devi aumentare 0 kg.



    femmina dice questo se gli do il giusto peso:

    Sei maschio o femmina ?
    femmina
    quanti centimentri sei alto? esempio 160
    160
    quanto pesi?
    56
    Il tuo peso ideale é: 56dovresti perdere:1

    o.O perche?
    cosa ha di sbagliato questo ciclo?

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.