DOMANDA Dubbio risoluzione con array con C++

  • Autore discussione Autore discussione MPG
  • Data d'inizio Data d'inizio
Pubblicità
Oltre all'exit (1) che non so cosa mettere non capisco perchè metti:
while (dim < 2 && j < 3);
e questo
while (temp < 0 || temp>9);

Nel do while il ciclo continua finchè la condizione del while diventa falsa giusto per cui non capisco bene ..
Se deve uscire fuori per piu' di 3 tentativi non dovrebbe essere while (dim < 2 && j > 3)?
Inoltre per
while (temp < 0 || temp>9);
se il temp fosse che so i o 2 cosa succederebbe?
 
Oltre all'exit (1) che non so cosa mettere non capisco perchè metti:
while (dim < 2 && j < 3);
e questo
while (temp < 0 || temp>9);

Nel do while il ciclo continua finchè la condizione del while diventa falsa giusto per cui non capisco bene ..
Se deve uscire fuori per piu' di 3 tentativi non dovrebbe essere while (dim < 2 && j > 3)?
Inoltre per
while (temp < 0 || temp>9);
se il temp fosse che so i o 2 cosa succederebbe?
Qua manca della logica.
Un ciclo viene eseguito finché la condizione è verificata, un ciclo while(true) o while(1) viene eseguito all’infinito ad esempio.

Il primo ciclo deve uscire se dim è maggiore uguale di 2 o è stato eseguito 3 volte. Di questa proposizione va scritta la negazione (o complementare).
Stessa cosa per l’appartenenza all’intervallo.

Date due proposizioni p e q, la negazione di p e q è non-p o non-q. Di p o q non-p e non-q
 
OK capito!
Ma al posto di exit (1) che non so cosa significhi cosa si mette a questo punto in c++? E' un equivalente tipo di return 0 o di cosa?
Vorrei provare il tutto che vada con codeblocks ma intanto mi blocca nell'exit(1).
 
OK capito!
Ma al posto di exit (1) che non so cosa significhi cosa si mette a questo punto in c++? E' un equivalente tipo di return 0 o di cosa?
Vorrei provare il tutto che vada con codeblocks ma intanto mi blocca nell'exit(1).
exit() è standard di C++ e anzi deriva addirittura dal C.
Il prototipo è dichiarato in cstdlib
 
Non lo abbiamo fatto, se provi con codeblocks a mettere il tuo listato e provare non va si blocca li'.....
 
Certo che ce ne sono:
per esempio basta definire, all'inizio del programma, una variabile booleana fallimento inizializzata a false;
se si verifica la condizione di fallimento invece di exit metti la variabile a true;
però tutte le istruzioni che ora hai messo dopo exit le devi inserire in un blocco if
C:
if(!fallimento) {
   // le istruzioni se NON c'è fallimento
}
 
Ultima modifica:
Ho capito ma se l'exit non l'abbiamo ancora fatto ci sono alternative?
L’exit non lo farai mai comunque.
Guarda che è compreso nel C++ eh. Non è magia nera che nessuno conosce al di fuori di questo forum.
Sostituto può essere return 1 ma non è come exit().
 
Si pero' purtroppo ti dico che il prof non l'ha mai spiegato, non è che non voglio usarlo.....
RIpeto mi interessava in pratica capire che cosa esattamente fa l'exit (1) proprio perchè non so esattamente la sua proprieta'.
 
Si pero' purtroppo ti dico che il prof non l'ha mai spiegato, non è che non voglio usarlo.....
RIpeto mi interessava in pratica capire che cosa esattamente fa l'exit (1) proprio perchè non so esattamente la sua proprieta'.
Te l’ho scritto sopra mi pare.
Termina il processo del programma con codice d’errore 1.
 
Ho fatto cosi' come mi hai detto ma dopo che mi permette di scrivere dei numeri (esempio scrivo 2, 3 e 4 o anche 1,1 e 1) il programma si ferma .....

Codice:
//Scrivere un programma che chieda all'utente la dimensione di un array (>=2, max 3 tentativi) e faccia inserire nell'array dim valori compresi tra 1 e 9.
//Se i valori inseriti sono esterni all'intervallo, il programma li trascura. L'array deve essere popolato fino al riempimento completo. Successivamente il programma stampa il contenuto del vettore.

#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
    int dim, j = 0;

    do
    {
        cin >> dim;
        ++j;
    } while (dim < 2 && j < 3);

    if (j == 3)
        exit(1);

    int array[dim];

    for (int i = 0; i < dim; i++)
    {
        int temp;
        do
        {
            cin >> temp;

        } while (temp < 0 || temp>9);

        array[i] = temp;
    }
    }
 
Ultima modifica:
Ho fatto cosi' come mi hai detto ma dopo che mi permette di scrivere dei numeri (esempio scrivo 2, 3 e 4 o anche 1,1 e 1) il programma si ferma .....

Codice:
//Scrivere un programma che chieda all'utente la dimensione di un array (>=2, max 3 tentativi) e faccia inserire nell'array dim valori compresi tra 1 e 9.
//Se i valori inseriti sono esterni all'intervallo, il programma li trascura. L'array deve essere popolato fino al riempimento completo. Successivamente il programma stampa il contenuto del vettore.

#include 
#include 
using namespace std;

int main()
{
int dim, j = 0;

do
{
cin >> dim;
++j;
} while (dim < 2 && j < 3);

if (j == 3)
exit(1);

int array[dim];

for (int i = 0; i < dim; i++)
{
int temp;
do
{
cin >> temp;

} while (temp < 0 || temp>9);

array[i] = temp;
}
}

Se non vuoi usare exit(1) basta mettere nel if (j!=3) e mettere tutto quello sotto tra le graffe ... alla fine metti il solito return 0


Inviato da iPhone tramite App ufficiale di Tom\\\'s Hardware Italia Forum
 
Pubblicità
Pubblicità
Indietro
Top