DOMANDA Dev C++ Inserire Programma In Un Ciclo Infinito

lobelis

Utente Attivo
121
0
Ciao a tutti, qualcuno sarebbe così gentile da dirmi dove sbaglio? Ho provato ad inserire questo programma in un ciclo infinito, ma non funziona!!!!
Grazie mille
C:
//inventare un programma che utilizzi lo switch case e del metodo setw

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int n;
int risposta;
int i=1;

cout<<"Inserisci un numero che vada da 1 a 10 e io ti mostrerò nel calcolatore davanti a te in pochissimi attimi di secondo la sua tabellina"<<endl;
cin>>n;

do
{
cout<<"Inserisci un numero che vada da 1 a 10 e io ti mostrerò nel calcolatore davanti a te in pochissimi attimi di secondo la sua tabellina"<<endl;
cin>>n;

switch(n)
{
case 1:cout<<endl<<setw(5)<<"i"<<setw(8)<<"n"<<setw(8)<<"n*i"<<endl;
while(i<=10)
{
cout<<endl<<setw(5)<<i<<setw(8)<<n<<setw(8)<<n*i;
}
break;

case 3:cout<<endl<<setw(5)<<"i"<<setw(8)<<"n"<<setw(8)<<"n*i"<<endl;
while(i<=10)
{
cout<<endl<<setw(5)<<i<<setw(8)<<n<<setw(8)<<n*i<<endl;
}
break;
case 5:cout<<endl<<setw(5)<<"i"<<setw(8)<<"n"<<setw(8)<<"n*i"<<endl;
while(i<=10)
{
cout<<endl<<setw(5)<<i<<setw(8)<<n<<setw(8)<<n*i<<endl;
}
break;

case 7:cout<<endl<<setw(5)<<"i"<<setw(8)<<"n"<<setw(8)<<"n*i"<<endl;
while(i<=10)
{
cout<<endl<<setw(5)<<i<<setw(8)<<n<<setw(8)<<n*i<<endl;
}
break;

case 9:cout<<endl<<setw(5)<<"i"<<setw(8)<<"n"<<setw(8)<<"n*i"<<endl;
while(i<=10)
{
cout<<endl<<setw(5)<<i<<setw(8)<<n<<setw(8)<<n*i<<endl;

}
break;

case 2:cout<<endl<<setw(5)<<"i"<<setw(8)<<"n"<<setw(8)<<"n*i"<<endl;
while(i<=10)
{
cout<<endl<<setw(5)<<i<<setw(8)<<n<<setw(8)<<n*i<<endl;
}
break;

case 4:cout<<endl<<setw(5)<<"i"<<setw(8)<<"n"<<setw(8)<<"n*i"<<endl;
while(i<=10)
{
cout<<endl<<setw(5)<<i<<setw(8)<<n<<setw(8)<<n*i<<endl;
}
break;

case 6:cout<<endl<<setw(5)<<"i"<<setw(8)<<"n"<<setw(8)<<"n*i"<<endl;
while(i<=10)
{
cout<<endl<<setw(5)<<i<<setw(8)<<n<<setw(8)<<n*i<<endl;
}
break;

case 8:cout<<endl<<setw(5)<<"i"<<setw(8)<<"n"<<setw(8)<<"n*i"<<endl;
while(i<=10)
{
cout<<endl<<setw(5)<<i<<setw(8)<<n<<setw(8)<<n*i<<endl;
}
break;

case 10:cout<<endl<<setw(5)<<"i"<<setw(8)<<"n"<<setw(8)<<"n*i"<<endl;
while(i<=10)
{
cout<<endl<<setw(5)<<i<<setw(8)<<n<<setw(8)<<n*i<<endl;
}
break;

default: cout<<"mmmh, mi sa che hai inserito un numero sbagliato"<<endl;
}
cout<<"Vuoi rifarlo????? (si=1/no=0)"<<endl;
cin>>risposta;

i++;
}
while(risposta=1);

return 0;
}
 
Ultima modifica da un moderatore:

cdtux

Utente Èlite
1,829
911
CPU
I7 3770
Scheda Madre
Asrock Z77 Extreme 4
HDD
Samsung 850 pro 250GB
RAM
Corsair Vengeance LP 16GB
GPU
Gigabyte GTX1060 6GB
Monitor
Dell U2412M
PSU
Seasonic Focus Plus 650
Case
Corsair Graphite 760T
OS
Debian / Ubuntu
Sicuramente hai sbagliato sezione (hai postato in web development) e non hai usato il tag CODE per il codice.
Per quanto riguarda il resto, passo la palla a @Mursey
 

BAT

Moderatore
Staff Forum
Utente Èlite
22,948
11,581
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
A occhio e croce l'errore sembrerebbe nell'istruzione
while(risposta=1)
perché hai definito un int risposta senza assegnargli un valore ed il compilatore potrebbe (presumo) avergli assegnato il valore 0 (zero) che viene interpretato come falso
a parte questa correzione presumo che, in ogni caso, il test dovrebbe essere fatto con == (non con l'assegnazione =)
 
  • Mi piace
Reazioni: lobelis

lobelis

Utente Attivo
121
0
@BAT00cent grazie mille per avermi risposta. Ho fatto quello che mi ha detto ma mi esce questo nel compilatore: Screenshot (36).png

Ti riscrivo il programma modificato come hai detto tu:

Codice:
//invertare un programma che utilizzi lo switch case e del metodo setw
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    int n;
    int risposta =0;
    int i=1;
    
    
     cout<<"Inserisci un numero che vada da 1 a 10 e io ti mostrerò nel calcolatore davanti a te in pochissimi attimi di secondo la sua tabellina"<<endl;
    cin>>n;
   
    
   do
    {
        cout<<"Inserisci un numero che vada da 1 a 10 e io ti mostrerò nel calcolatore davanti a te in pochissimi attimi di secondo la sua tabellina"<<endl;
    cin>>n;
   
   
     switch(n)
        {
        case 1:cout<<endl<<setw(5)<<"i"<<setw(8)<<"n"<<setw(8)<<"n*i"<<endl;
               while(i<=10) 
               {
                cout<<endl<<setw(5)<<i<<setw(8)<<n<<setw(8)<<n*i;
                i++;
               }   
        break;
        
             
        case 3:cout<<endl<<setw(5)<<"i"<<setw(8)<<"n"<<setw(8)<<"n*i"<<endl;
               while(i<=10) 
               {
                cout<<endl<<setw(5)<<i<<setw(8)<<n<<setw(8)<<n*i<<endl;
                i++;
               }
               break;
        case 5:cout<<endl<<setw(5)<<"i"<<setw(8)<<"n"<<setw(8)<<"n*i"<<endl;
               while(i<=10) 
               {
                cout<<endl<<setw(5)<<i<<setw(8)<<n<<setw(8)<<n*i<<endl;
                i++;
               }
               
               break;
               
        case 7:cout<<endl<<setw(5)<<"i"<<setw(8)<<"n"<<setw(8)<<"n*i"<<endl;
               while(i<=10) 
               {
                cout<<endl<<setw(5)<<i<<setw(8)<<n<<setw(8)<<n*i<<endl;
                i++;
               }
               
               break;
               
               
        case 9:cout<<endl<<setw(5)<<"i"<<setw(8)<<"n"<<setw(8)<<"n*i"<<endl;
               while(i<=10) 
               {
                cout<<endl<<setw(5)<<i<<setw(8)<<n<<setw(8)<<n*i<<endl;
                i++;
               }
               
               break;
               
        case 2:cout<<endl<<setw(5)<<"i"<<setw(8)<<"n"<<setw(8)<<"n*i"<<endl;
               while(i<=10) 
               {
                cout<<endl<<setw(5)<<i<<setw(8)<<n<<setw(8)<<n*i<<endl;
                i++;
               }
               
               break;
               
               
        case 4:cout<<endl<<setw(5)<<"i"<<setw(8)<<"n"<<setw(8)<<"n*i"<<endl;
               while(i<=10) 
               {
                cout<<endl<<setw(5)<<i<<setw(8)<<n<<setw(8)<<n*i<<endl;
                i++;
               }
               
               break;
               
               
        case 6:cout<<endl<<setw(5)<<"i"<<setw(8)<<"n"<<setw(8)<<"n*i"<<endl;
               while(i<=10) 
               {
                cout<<endl<<setw(5)<<i<<setw(8)<<n<<setw(8)<<n*i<<endl;
                i++;
               }
               
               break;
               
               
        case 8:cout<<endl<<setw(5)<<"i"<<setw(8)<<"n"<<setw(8)<<"n*i"<<endl;
               while(i<=10) 
               {
                cout<<endl<<setw(5)<<i<<setw(8)<<n<<setw(8)<<n*i<<endl;
                i++;
               }
               
               break;
               
               
        case 10:cout<<endl<<setw(5)<<"i"<<setw(8)<<"n"<<setw(8)<<"n*i"<<endl;
               while(i<=10) 
               {
                cout<<endl<<setw(5)<<i<<setw(8)<<n<<setw(8)<<n*i<<endl;
                i++;
               }
               
               break;
               
               default: cout<<"mmmh, mi sa che hai inserito un numero sbagliato"<<endl;
              
        }
     cout<<"Vuoi rifarlo????? (si=1/no=0)"<<endl;
     cin>>risposta;
    }
while(risposta==1);
    
    return 0;
    
}
 

BAT

Moderatore
Staff Forum
Utente Èlite
22,948
11,581
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
Il tuo codice mi sembra un po' oscuro, se ho ben capito tu vuoi semplicemente stampare la tabellina di un certo numero (compreso tra 1 e 10) in base al numero scelto dall'utente, l'unica difficoltà che hai è nel fare un ciclo indefinito che ripeta l'esecuzione.
Non capisco il motivo dello switch e della complicazione del cout in output.
Ti allego un codice funzionante con 2 cicli indefiniti che fanno tutto ciò che ti serve in un terzo delle linee di codice:
l'unica verifica che fa è controllare che l'utente abbia davvero inserito un n. intero compreso tra 1 e 10 e una volta acquisito stampa la tabellina;
alla fine chiede se vuoi ripetere l'esercizo. tutto qua, usalo come base e vedrai che risolvi il tuo problema
Codice:
#include <iostream>
using namespace std;

int main(void) {
   char tasto = '1';
   cout << "\n----- INIZIO -----\n";
   do { // ciclo indefinito per leggere il carattere di risposta
       int k;
       do { // ciclo indefinito che si ripete fin quando non si inserisce un intero tra 1 e 10
          cout << "\nInserisci un numero intero compreso tra 1 e 10 --> ";
          cin >> k;
          if(k<1 || k>10) // ciclo indefinito per leggere l'input
             cout << "Numero fuori dall'intervallo, ripeti l'inserimento\n";
        }
        while(k<1 || k>10);
       cout << "\nTabellina del n. " << k << endl;
       for(int i=1; i<=10; i++)
          cout << k*i << "   ";
       cout << "\n\nAncora? (1=SI, altro tasto=NO) --> ";
       cin >> tasto;
   } while(tasto == '1');
   cout << "\n------ FINE ------\n";
   return 0;
}
 

lobelis

Utente Attivo
121
0
@BAT00cent
Lo ho fatto così lungo e complicato perchè la professoressa mi ha dato da fare un programma che mi dia la tabellina di un numero usando il ciclo switch e la tabulazione. Mi hai aiutato moltissimo comunque mi hai spiegato benissimo il tuo programma. Grazie mille:thanks:
 

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili