|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2001
Città: Foggia
Messaggi: 2519
|
[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
__________________
mi sembra di essere tornato adolescente ai bei tempi.. che figata essere di nuovo su questo forum |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2008
Messaggi: 8226
|
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; }
__________________
System Failure |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Feb 2001
Città: Foggia
Messaggi: 2519
|
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
__________________
mi sembra di essere tornato adolescente ai bei tempi.. che figata essere di nuovo su questo forum |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2008
Messaggi: 8226
|
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"
__________________
System Failure |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
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.
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jul 2008
Messaggi: 8226
|
Esattamente
__________________
System Failure |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:05.



















