Salve avrei una rogna con questo programma, in pratica lo scopo del programma è quello di infilare un 1 a caso in una delle celle dell'array e fare in modo che l'utente debba decidere se spostarlo di una cella a destra o a sinistra senza sapere dove sia precisamente, il programma deve dargli un messaggio d'errore se si tenta di spostare l'1 fuori dall'array.
Il programma va in loop infinito indipendentemente dalla scelta dando in continuazione l'output d'errore
codice:
//Spostamento valore in array, il programma randomizzerà la posizione del numero 1 all'interno di un array di grandezza 8
//e permetterà di spostarlo di una cella verso destra o verso sinistra tranne quando questo si troverà su uno dei due limiti
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
int riga[]= {0,0,0,0,0,0,0,0};//vettore "vuoto" di 8 elementi
int i,p,a; //i:indice, p:variabile per determinare la posizione casuale dell'1, a:variabile d'appoggio
char dir;//variabile che prende la scelta dell'utente
srand(time(0));
p=rand()%8;
riga[p]=1;
cout<<"Verso quale direzione vuoi spostare il valore? \"d\" per destra \"s\" per sinistra \n";
cin>>dir;
for (i=1;i<=8;i++){//ciclo per controllare le 8 celle
while(riga[i]=1){
if(dir=='s' && i !=1){
a=riga[i];
riga[i]=0;
riga[i-1]=a;}
else{cout<<"il valore si trova sul limite inferiore e non e' possibile spostarlo verso sinistra \n!";}
if(dir=='d' && i !=8){
a=riga[i];
riga[i]=0;
riga[i+1]=a;}
else{cout<<"il valore si trova sul limite superiore e non e' possibile spostarlo verso sinistra \n!";}}}
system ("pause");
}