Risposta Multipla

di il
7 risposte

Risposta Multipla

Buona sera, vorrei dei consigli cortesemente su questo programma,dove calcolo il valore di x in base alla traccia fornita, successivamente effettuo una scelta se continuare oppure uscire, rimango un po'perplesso sul funzionamento del terzo case ,perchè dopo la seconda opzione di carattere errato esce dal programma, premetto che sono autodidatta ,e nemmeno studente, ma mi diletto ad imparare. Grazie e buona serata.

/*Traccia Algoritmo:
Sottraendo 2/5 ad un numero si ottiene come risultato i 2/5 del numero stesso
espressione per il calcolo:
(2/5)-x=(2/5)*x

*/

#include <stdio.h>
void scelta();//Void creata per scegliere la continuazione del programma
void Messaggio();////Stampa del messsaggio y OR n PER SELEZIONARE l'opzione di proseguire il programma o terminare
void Calcolo_Incognita();//Calcolo incognita secondo traccia
void main (void)
{

              //Richiamo la void
   Calcolo_Incognita();
   scelta();
}
void scelta()
{
     char Carattere;
     Calcolo_Incognita;
  //Proseguo finche la risposta è affermativa9/
  do{

  printf("Vuoi Continuare?\n");
  Messaggio();   //Richiamo la void Messggio
  scanf(" %c", &Carattere);
 // Discrimino le Opzioni di scelta
  switch (Carattere)
  {
  case 'y':
  case 'Y':
  Calcolo_Incognita();
  break;
  //Esco dal Programma
   case 'N':
   case 'n':
   break;
   default:
    //Reinserico il carattere perchè diverso da Y/N
    printf("Carattere Erratto:\n Inserisci Nuovamente il carattere di scelta \n \n");
     Messaggio();
     scanf(" %c", &Carattere);
     if(Carattere=='Y'|| Carattere=='y') Calcolo_Incognita();

     break;
   }


  }while (Carattere=='Y' || Carattere=='y');


}

void Messaggio()
{
     //printf("Vuoi Continuare?\n");
  printf("Opzioni:\n"
         "1)y or Y to be continued\n"
         "2)N or n Exit\n");
}
//**************************************************
 void Calcolo_Incognita()
 {
       int Numeratore,Denominatore;
       int Risultato=0;
   do{
      printf("Inserisci il Numeratrore \n");
      scanf(" %d", &Numeratore);
    }while(Numeratore<=0) ;//Ripeto finchè è valida la condizione del ciclo

   do{
       printf("Inserisci il Denominatore \n");
       scanf(" %d", &Denominatore);
     }while(Denominatore<=0);//Ripeto finchè è valida la condizione del ciclo


      Risultato=(Numeratore+Denominatore);
      printf("Il Risultato vale: %d"
             "/"
             "%d ", Numeratore,Risultato);
 }


7 Risposte

  • Re: Risposta Multipla

    Le modifiche che devi apportare sono

    default:
         break;

    e alla fine del ciclo

    
      }while (Carattere!='N' && Carattere!='n');

    Rifletti sul perchè

    P.S. All'inizio della funzione scelta la linea

    Calcolo_Incognita;

    non ha alcun senso, eliminala 

    Comunque la struttura del programma dovrebbe essere diversa. 

  • Re: Risposta Multipla

    Considerando che la sottrazione non gode della proprietà commutativa, l'espressione di calcolo non è coerente con la traccia.

    Io non ho comunque capito lo scopo dell'esercizio… Non serve un programma per trovare l'incognita. È una sola… Cosa mi sfugge?

  • Re: Risposta Multipla

    Io mi sono soffermato sul problema lamentato…

    Per il resto… passo

  • Re: Risposta Multipla

    30/09/2024 - Antonio-Sim ha scritto:


    (2/5)-x=(2/5)*x

    meglio se: x-2/5=2/5x

    così hai:

    x=2/5x + 2/5

    x=(2x+2)/5

    5x=2x+2

    5x-2x=2

    3x=2

    x=2/3

    x= 0.666666

  • Re: Risposta Multipla

    01/10/2024 - Sgrubak ha scritto:


    Considerando che la sottrazione non gode della proprietà commutativa, l'espressione di calcolo non è coerente con la traccia.

    Io non ho comunque capito lo scopo dell'esercizio… Non serve un programma per trovare l'incognita. È una sola… Cosa mi sfugge?

    Era un esercizio ed ho voluto replicarlo in C, anche io avrei impostato l'esercizio come hai detto tu, ma sul gruppo era postato cosi.

  • Re: Risposta Multipla

    01/10/2024 - oregon ha scritto:


    Le modifiche che devi apportare sono

    default:
         break;

    e alla fine del ciclo

    
      }while (Carattere!='N' && Carattere!='n');

    Rifletti sul perchè

    P.S. All'inizio della funzione scelta la linea

    Calcolo_Incognita;

    non ha alcun senso, eliminala 

    Comunque la struttura del programma dovrebbe essere diversa. 

    Grazie Oregon per la cortesia,ho corretto il programma e funzione,mi aiuta a capire perchè la mia condizione espressa nel corpo del ciclo è errata?io Ragionavo di ripetere il ciclo finchè la risposta è affermativa,Grazie e buona serata.

  • Re: Risposta Multipla

    Appunto, il ciclo come l'avevi fatto si ripete solo con Y, mentre con N o errata esci. Mettendo “non N” come condizione, il ciclo si ripete sia con y (rifai l'operazione) che con l'errata (ritorni nel default). 

Devi accedere o registrarti per scrivere nel forum
7 risposte