[C++] Cifre decimali

di il
20 risposte

[C++] Cifre decimali

Ciao a tutti, e' il primo post che scrivo insieme al il mio primo problema. Devo scrivere un programma che, letta da input una sequenza di interi terminata da -1, controlli che siano tutte cifre decimali (0-9), calcoli il numero che si ottiene giustapponendo le cifre, e verifichi se il numero
ottenuto è divisibile per 3. Il programma dovrebbe, ad esempio, stampare solo la stringa VUOTO quando il primo numero inserito e' -1, invece esegue anche i punti successivi stampando anche altro. Potreste dirmi in quale punto sbaglio? Non riesco proprio ad uscirne. Grazie mille!

#include <iostream>
using namespace std;
int main ()
{
  int a, somma=0;
  bool decimale=false;
  cin>>a;

  if (a == -1)
  cout<<"VUOTO";

  if (a != -1)
  {
    while (a != -1)
    {
      somma=(somma*10)+a;
      if (a>=0 && a<=9)
      decimale=true;
      
      cin>>a;
     }
   }

   if (decimale==false)
   cout<<"ERRORE";

   else if (decimale==true && somma%3==0)
    cout<<somma<<"SI";

   else
    cout<<somma<<"NO";

    return 0;
  }
  

20 Risposte

  • Re: [C++] Cifre decimali

    Dicci cosa ti stampa dopo VUOTO
  • Re: [C++] Cifre decimali

    Dopo che visualizzi VUOTO esiste altro codice che viene eseguito, mi pare normale che succeda quello che dici.
  • Re: [C++] Cifre decimali

    In pratica stampa VUOTO0NO, esegue tutti i casi. Invece dovrebbe eseguire i casi in modo tale che se uno dei valori inseriti da input non è una cifra decimale, deve essere stampata esclusivamente la stringa ERRORE, senza endl, né spaziature. Se la sequenza in input è vuota, deve stampare esclusivamente la stringa VUOTO.
    Se i valori inseriti sono tutte cifre decimali, deve essere inviato in stampa il numero che si ottiene giustapponendo le cifre, e sulla riga successiva, la stringa SI (senza endl, né spaziature) se il numero è divisibile per 3, mentre se non e' divisibile per 3 stampare il numero che si ottiene seguito da NO.
  • Re: [C++] Cifre decimali

    In pratica ... hai detto nuovamente cosa deve fare il programma ma non hai letto bene la mia risposta
  • Re: [C++] Cifre decimali

    Si l'ho letta, ma mi servirebbe una spiegazione se possibile, dato che sono alle prime armi. Mi hai detto che fa cosi' perche' esiste un altro codice che viene eseguito, ma allora come posso fare per far si che -1 faccia da tappo e quando lo inserisco come primo numero esca SOLO la scritta vuoto?
  • Re: [C++] Cifre decimali

    Hai scritto tu quel codice? Hai inserito tu la if che controlla il valore -1 ?

    Tutto il resto del codice dopo questa if deve stare in una else così da non essere eseguita se hai inserito il -1
  • Re: [C++] Cifre decimali

    Si ho scritto tutto io. Anche se metto else non funziona come dovrebbe e continua a stampare vuoto0no, per questo ho deciso di provare a chiedere aiuto qui. Non riesco a capire se e' completamente sbagliato oppure e' un preciso punto che va modificato.
  • Re: [C++] Cifre decimali

    Magari mostra come hai usato quella else ... Ti ho detto che TUTTO il resto del codice va nella else ma se non mostri cosa hai scritto...
  • Re: [C++] Cifre decimali

    Ho provato a riscriverlo cosi'
    
    #include <iostream>
    using namespace std;
    int main ()
    {
      int a, somma=0;
      bool decimale=false;
      cin>>a;
    
      if (a == -1)
      cout<<"VUOTO";
    
      else 
      {
        while (a != -1)
        {
          somma=(somma*10)+a;
          if (a>=0 && a<=9)
          decimale=true;
          cin>>a;
         }
        
          if (decimale==false)
          cout<<"ERRORE";
    
          if else (decimale==true && somma%3==0)
          cout<<somma<<"SI";
    
          else
          cout<<somma<<"NO";
       }
     
       return 0;
    }
    
  • Re: [C++] Cifre decimali

    E così ti scrive solo VUOTO e basta come volevi nel caso di -1, giusto?
  • Re: [C++] Cifre decimali

    No ecco perche' sto uscendo pazza ahahahahah
  • Re: [C++] Cifre decimali

    Mi scuso anche se sto facendo perdere tempo, ma proprio non riesco a capire cosa devo correggere.
  • Re: [C++] Cifre decimali

    Con l'ultimo codice cosa succede? Sicura di avere ricompilato?
  • Re: [C++] Cifre decimali

    Si si, sicuro. Se inserisco come primo numero -1 continua ad uscire VUOTO0NO. Comunque anche il decimale adesso non funziona bene perche' se inserisco una serie di numeri come 4 5 3 15 3 -1, dovrebbe stampare il NO perche' c'e' il 15. Invece stampa 453153 SI
Devi accedere o registrarti per scrivere nel forum
20 risposte