Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: [c]Problema con if

  1. #1

    [c]Problema con if

    Ciao a tutti non capisco perche mi da errore la parte dell if guardate:
    codice:
    #include <stdio.h>
    
    int main () {
    
    	int primo, terzo;
    	char secondo[2];
    	printf ("Primo numero:\n");
    	scanf ("%d", &primo);
    	printf("Che tipo di operazione\? scegli tra:\n");
    	printf("* moltiplicazione\n");
    	printf("/ divisione\n");
    	printf("- sottrazione\n");
    	printf("+ addizione\n");
    	scanf("%s", secondo);
    	printf("Ora digita il terzo numero\n");
    	scanf("%d", &terzo);
    	
    	if (secondo == *) {
    		printf("Il risultato è: %d" primo * terzo);
    	} else if (secondo == /) {
    		printf("Il risultato è: %d" primo / terzo);
    	}
    
    	
    	return  0;
    }
    }
    ovviamente se dovesse funzionare lo finisco questo file.
    Sto leggendo un libro per imparare il c, quancluno di voi puo darmi una guida dove spiega bene come usare i %d %c %i? perche non l'ho capito bene.
    ciaoo

  2. #2
    dal momento che "secondo" è una stringa, per effettuare confronti con valori predefiniti è necessario ricorre ad appositi metodi come, ad esempio, srtcmp

    la condizione dell'if dovrebbe quindi essere
    codice:
    if(strcmp("*", secondo) == 0)
    in alternativa potresti dichiarare secondo come un semplice char, acquisirlo con
    codice:
    scanf("%c", &secondo);
    e confrontarlo con
    codice:
    if(secondo == '*')

  3. #3
    Ciao grazie per la risposta, potresti solo spiegarmi meglio il passaggio?
    neanche cosi funziona
    codice:
    #include <stdio.h>
    
    int main () {
    
    	int primo, terzo;
    	char secondo[2];
    	printf ("Primo numero:\n");
    	scanf ("%d", &primo);
    	printf("Che tipo di operazione\? scegli tra:\n");
    	printf("* moltiplicazione\n");
    	printf("/ divisione\n");
    	printf("- sottrazione\n");
    	printf("+ addizione\n");
    	scanf("%s", secondo);
    	printf("Ora digita il terzo numero\n");
    	scanf("%d", &terzo);
    	
    	if(strcmp("*", secondo) == 0) {
    		printf("Il risultato è: %d" primo * terzo);
    	} else if (strcmp("/", secondo) == 0) {
    		printf("Il risultato è: %d" primo / terzo);
    	}
    
    	
    	return  0;
    }
    }

  4. #4
    ho modificato il primo messaggio.
    cosa non ti è chiaro?

  5. #5
    primo: per utilizzare le funzioni str* devi includere l'header <string.h>

    secondo: nel printf hai dimenticato la virgola dopo la stringa di formattazione dell'output
    printf("Il risultato è: %d", primo * terzo);

    terzo: inserisci un fflush(stdin); dopo ogni scanf

  6. #6
    Guarda, ora ho messo %c al posto di %s il problema è che mi salta il scanf...
    codice:
    #include <stdio.h>
    
    int main () {
    
    	int primo, terzo;
    	char secondo[2];
    	printf ("Primo numero:\n");
    	scanf ("%d", &primo);
    	printf("Che tipo di operazione\? scegli tra:\n");
    	printf("* moltiplicazione\n");
    	printf("/ divisione\n");
    	printf("- sottrazione\n");
    	printf("+ addizione\n");
    	scanf("%c", &secondo);
    	printf("Ora digita il terzo numero\n");
    	scanf("%d", &terzo);
    	
    	if(secondo == '*') {
    		printf("Il risultato è: %d", primo * terzo);
    	} else if (secondo == '/') {
    		printf("Il risultato è: %d", primo / terzo);
    	}
    
    	
    	return  0;
    }
    cosa puo essere?

  7. #7
    inserisci l'istruzione
    codice:
    fflush(stdin);
    dopo ogni scanf

  8. #8
    Non capisco ancora perche mi salta il passaggio del scanf eppure ho fatto come dicevi tu... guarda:
    codice:
    #include <stdio.h>
    #include <string.h>
    int main () {
    
    	int primo, terzo;
    	char secondo[2];
    	printf ("Primo numero:\n");
    	scanf ("%d", &primo);
    	fflush(stdin);
    	printf("Che tipo di operazione\? scegli tra:\n");
    	printf("* moltiplicazione\n");
    	printf("/ divisione\n");
    	printf("- sottrazione\n");
    	printf("+ addizione\n");
    	scanf("%c", &secondo);
    	fflush(stdin);
    	printf("Ora digita il terzo numero\n");
    	scanf("%d", &terzo);
    	fflush(stdin);
    	
    	if(secondo == '*') {
    		printf("Il risultato è: %d", primo * terzo);
    	} else if (secondo == '/') {
    		printf("Il risultato è: %d", primo / terzo);
    	}
    
    	
    	return  0;
    }
    tu conosci una guida dove spiega come utilizzare i %c e i %s? perche ancora non mi è chiaro...
    Ho scoperto che se non la dichiaro cosi char secondo[2]; non mi legge piu di un carattere...

  9. #9
    "secondo" va dichiarato come semplice char
    codice:
    char secondo;

  10. #10
    Si, avevo gia provato ma niente...

    Xcode dice che è tutto apposto, mentre quando vado a provarlo mi salta il passaggio della scelta del operatore:


    codice:
    #include <stdio.h>
    #include <string.h>
    int main () {
    
    	int primo, terzo;
    	char secondo;
    	printf ("Primo numero:\n");
    	scanf ("%d", &primo);
    	fflush(stdin);
    	printf("Che tipo di operazione\? scegli tra:\n");
    	printf("* moltiplicazione\n");
    	printf("/ divisione\n");
    	printf("- sottrazione\n");
    	printf("+ addizione\n");
    	scanf("%c", &secondo);
    	fflush(stdin);
    	printf("Ora digita il terzo numero\n");
    	scanf("%d", &terzo);
    	fflush(stdin);
    	
    	if(secondo == '*') {
    		printf("Il risultato è: %d", primo * terzo);
    	} else if (secondo == '/') {
    		printf("Il risultato è: %d", primo / terzo);
    	}
    
    	
    	return  0;
    }

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.