Ciao a tutti, sono nuova nel forum e anche nel mondo della programmazione. Avrei bisogno di un consiglio per cercare di risolvere un problema nel mio programma.
Ho scritto un programma che, letta da input una sequenza di interi terminata da -1, controlli che sianotutte cifre decimali (0-9), calcoli il numero che si ottiene giustapponendo le cifre e verifichi se il numeroottenuto è divisibile per 3. L’output del programma deve rispettare le seguenti condizioni:
se uno dei valori inseriti da input non è una cifra decimale, deve essere stampata esclusivamente lastringa ERRORE, senza endl, né spaziature.
Se i valori inseriti sono tutte cifre decimali, deve essere inviato in stampa il numero che si ottienegiustapponendo 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 deve inviare in stampa il numero seguito da NO.
Infine, se la sequenza in input è vuota, deve stampare esclusivamente la stringa VUOTO, senza endl, néspaziature.
Ora, quando io inserisco ad esempio -1, invece di stampare solo VUOTO mi stampa VUOTO0NO, e non riesco proprio a capire il punto in cui sbaglio. Inserisco qui il programma che ho scritto, spero proprio che qualcuno riesca a darmi una mano o anche solo un consiglio per capire dove sbaglio.
#include <iostream>
using namespace std;
int main ()
{
int a, somma=0;
bool decimale=false;
cin>>a;
if (a == -1)
cout<<"VUOTO";
if else (a != -1)
{
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;
}