Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Dove Sbaglio?

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    23

    Dove Sbaglio?

    Vorrei sapere perchè la scanf in fondo al codice viene completamente
    ignorata? L'idea è di inserire un ciclo do while in fondo per ripetere il prg ma mi ignora completamente la scanf?


    #include <stdio.h>
    #include <conio.h>

    main(){

    float num, num2, risu;
    int i;
    char e, seg;

    i=0;
    printf("\n Inserisci un'operazione:\t");
    scanf("%f%c%f",&num,&seg,&num2);

    switch (seg) {
    case'+':
    risu=num+num2;
    break;

    case'-':
    risu=num-num2;
    break;

    case'/':
    risu=num/num2;
    break;

    case'*':
    risu=num*num2;
    break;

    default:
    i=1;
    }
    if (i==0){
    printf("Risultato=%f",risu);
    }

    else {
    printf("Operazione non valida!");
    }

    printf("Uscire(y/n)?");
    scanf("%c",&e);
    printf("hai digitato %c",e);
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    23

    Ma è possibile?

    Ho scoperto che se nella stessa scanf invece di richiedere un char chiedo un int o un float la scanf funziona correttamente. manon cambio niente solo la variabile e la scanf? Che errore c'è?

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    167
    Se metti un char la scanf in fondo viene ignorata (almeno ti sembra che sia così). In realtà succede che nel momento in cui premi INVIO dopo aver inserito l'operazione, il char che viene riconosciuto dalla scanf è quello di INVIO e quindi ti sembra che non riceva niente.
    Non ho capito una cosa; che significa
    printf("Uscire(y/n)?");
    Dopo esce comunque, qualsiasi tasto si prema. Non è vincolato a y o n.
    Se metti del codice in questo forum mettilo così

    codice:
    #include <stdio.h> 
    #include <conio.h> 
    
    main(){ 
    
    float num, num2, risu; 
    int i; 
    char e, seg; 
    
    i=0; 
    printf("\n Inserisci un'operazione:\t"); 
    scanf("%f%c%f",&num,&seg,&num2); 
    
    switch (seg) { 
    case'+': 
    risu=num+num2; 
    break; 
    
    default: 
    i=1; 
    } 
    if (i==0){ 
    printf("Risultato=%f",risu); 
    } 
    
    else { 
    printf("Operazione non valida!"); 
    } 
    
    
    }

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    23

    Scanf

    Avevo immaginato la possibilità del tasto invio, ma come faccio per risolvere il problema? infatti il codice che cè adesso non è completo perchè avevo intenzione di inserire un ciclo do while in fondo per farlo ricominciare e la selezione di uscita era proprio sulla scanf come posso fare?.

    Scusa ma come hai fatto a mettere il codice in quel modo nel post?

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    167
    Per il codice: devi mettere prima del codice la parola
    code racchiusa tra parentesi quadre.
    Alla fine metti di nuovo code tra quadre e dopo la quadra di apertura metti lo slash / (un po' come i tag HTML solo che lì usi le parentesi angolari)

    Per lo scanf un metodo per risolverlo è mettere così:
    scanf("%s",stringa); //al posto di un char usi una stringa(char[2])
    printf("hai digitato %c",stringa[0]);
    Non so se sia il migliore perchè il C non lo uso da tempo.

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.