View Full Version : [C++] Dare vincoli alle variabili
Salve,
mi affaccio ora ora sul c++ e mi serve una cosa che credo sia banale.. ma non sono riuscito a trovare da nessuna parte:
se io voglio creare una variabile intera matricola e voglio darle questi vincoli:
il numero di matricola è un numero a sei cifre, che varia fra 255312 e 499999
come faccio?
Grazie mille :)
Andrea
Perseverance
09-10-2009, 21:42
Il numero viene inserito da tastiera giusto?
#include <iostream>
using namespace std;
int main()
{
int matricola;
cout << "Dammi la matricola:\t";
cin >> matricola;
//Se la matricola è minore di... OR || maggiore di...
if(matricola < 255312 || matricola > 499999)
cout << "Matricola non valida";
else
cout << "OK"<<endl;
//system("pause");
return 0;
}
Ah ecco...
quindi l'unica è agire sull'implementazione.. credevo ci fossero delle statement (che nel C non ho trovato) e invece niente anche qui... tutti d'accordo?
Eppure il professore mi sembra che parlò di un'allocazione con subrange in modo da limitare anche l'uso della memoria.. non ne sapete nulla ?
Cmq grazie mille :D
Perseverance
20-10-2009, 22:34
In C++ puoi crearti dei tipi personali di dati, i predefiniti sono gli int, float, double e via dicendo. Forse la soluzione "automatica" è costruirti un tipo di dato concreto\astratto ed implementare i vincoli nella dichiarazione.
Ad esempio un altro modo per fissare dei limiti sup e inf ad una variabile che viene modificata a tempo di esecuzione senza intervento umano, è usare il mod % per scaricarci il resto della divisione, tipo
...
offset = 20;
while(...)
int temp = offsett + variabile_y % 50;
...
Così facendo temp può assumere valori da 20 a 70. Xò non è che la puoi usare così a caso.
Fortunatamente in altri linguaggi ad alto livello esiste la clausola CHECK che permette di fare quello che dici te:
CHECK variabile BEETWEN x AND y
Non credo che esista qualcosa di equivalente in c++ in modo diretto, ma te lo devi creare da solo in maniera "derivata"
tomminno
20-10-2009, 23:16
Esiste sempre la possibilità di crearsi una classe NumeroDiMatricola utilizzabile come un intero nelle espressioni (tramite operator int() ), che implementi i controlli sulla validità del numero al momento del set e che sollevi un'eccezione se questo non è valido.
Perseverance
21-10-2009, 10:23
Esattamente
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.