# Shkenca > Informatikë dhe Internet > Arti i programimit >  C++ - Kontrollimi i tipit te te dhenave

## florxhi

Jam duke bere nje projekt ne c++, dhe doja te dija a ka ndonje funksion, qe..
psh. kur nje perdorues fut te dhenat nqs se nje date kerkohet e tipit int, dhe perdoruesi fut char, keshtu qe programmi me shkon ne loop, doja te dija a ka ndonje funksion per kete lloj problemi.

----------


## Ardi_Pg_ID

Ka mundesi te kontrollohet ne shume menyra po ama po te kishe vene pjesen e kodit qe ti ke do kishim bere dicka me te sakte per ty nje menyre eshte kjo nese do te kerkosh moshen psh



```
#include <iostream>

 int main(void)
 {
   int mosha = 0;
 
   while ((cout << "Sa Vjec je? ")
          && !(cin >> mosha)) {
     cout << "Ky nuk eshte nje numur; ";
     cin.clear();
     cin.ignore(1000, '\n');
   }
 
   cout << "Ti Je " << mosha << " vjec\n";
   ...
 }
```


Ose nje gje e tille!



```
while(!(cout << "Fut nje numur" && cin >> nje numur int)) 
   {
      cout <<  "Gabim!! Fut nje numur; 
      cin.clear();
      cin.ignore(1000, '\n');
}
```

pra ka shume menyra

per me tepere posto pjesen e kodit qe do te kontrllosh


Ardi

----------


## florxhi

Flm plako do ti provoj keto, pjesen e kedit se kam tashi po do ta postoj ate pjesen qe dua te vej funksioni sepse si kod mund te shkoj 1000 deri 1500 rrjeshta.  :kryqezohen:  gjithsisi flm

----------


## edspace

Ardi,

(cout << "Sa Vjec je? ") && !(cin >> mosha) 

N&#235; kodin m&#235; lart, C++ nuk garanton q&#235; kushtet do kontrollohen n&#235; t&#235; nj&#235;jt&#235;n renditje q&#235; jan&#235; shkruajtur. Pra, p&#235;rpiluesi &#235;sht&#235; i lir&#235; t&#235; kontrolloj&#235; n&#235; fillim cin dhe pastaj mund t&#235; kontrolloj&#235; cout. N&#235; fakt, n&#235;se !cin rezulton n&#235; fals (dmth cin = vertete), at&#235;her&#235; cout mund t&#235; mos ekzekutohet fare sepse C++ ka "lazy evaluation" (kontrollim me pertaci). 

Gjithashtu, mqns mosha &#235;sht&#235; num&#235;r pozitiv, cin duhet t&#235; k&#235;rkoj&#235; nj&#235; unsigned int. 

P&#235;r t&#235; eliminuar k&#235;to probleme, kodi mund t&#235; shkruhet k&#235;shtu: 



```

#include <iostream>
 using namespace std;
 int main(int argc, char *argv[])
{
    unsigned int mosha = 0;
    bool gabim = true;
     do {
        cout << endl << "Sa vjec je? ";
        cin >> mosha;
        gabim = cin.fail();
        cin.clear();
        cin.ignore(1000, '\n');
    } while (gabim);
     cout << "Ti je " << mosha << " vjec." << endl;
    return EXIT_SUCCESS;
} 


```


(cin >> int) pranon vet&#235;m numrin e par&#235; q&#235; jep p&#235;rdoruesi dhe injoron shkronjat ose numrat e tjer&#235; q&#235; vijn&#235; m&#235; pas. V&#235;r re se pranohen vet&#235;m numrat 0-4294967295; numrat e tjer&#235; e tejkalojn&#235; p&#235;rkufizimin e tipit unsigned int. 

Sa vjec je? 15
Ti je 15 vjec.

Sa vjec je? 15 30
Ti je 15 vjec.

Sa vjec je? 15.25
Ti je 15 vjec.

Sa vjec je? 0.15
Ti je 0 vjec.

Sa vjec je? 0015
Ti je 15 vjec.

Sa vjec je? 15asdf
Ti je 15 vjec.

Sa vjec je? asdf 15

Sa vjec je? 15 asdf
Ti je 15 vjec.

Sa vjec je? 4294967296

Sa vjec je? 4294967295
Ti je 4294967295 vjec.

Sa vjec je? -0

Sa vjec je? -1

Sa vjec je? -111111

----------


## Ardi_Pg_ID

edi faleminderit perkorigjimin e specifikimin.
Ka kohe pa zene c++ me dore nje arsye me teper per tu kthyer librave perseri

----------


## florxhi

Ky eshte nje pjese e programit qe me duhet ai funksioni
Me falni qe po shfrytezoj disponibilitetin juaj.




```

  class Studente {
      private:
              string  head;                        
              string  nome;           //Emri studentit
              string  cogn;           // Mbiemri studetit
              int     matri;          // Matricola studentit
              int     anno;           // Viti i shkolles
              int     gg,mm,aa;       // Data e lindjes
              string  reca;           // Banimi
              string  e_mail;         // Adresa emailit
      public:                              
             void leggi()
                 {
                        
                       cout << "Fut emrim"<< endl;   
                         getline(cin,nome);
                       cout << "Fut mbiemrin"<< endl;
                         getline(cin,cogn); 
                       cout<<"Fut banimin"<<endl;
                         getline(cin,reca);
                       cout<<"Fut adresen e-mail-it"<<endl;
                         getline(cin,e_mail);  
                       cout<<"Fut ditelindjen  (gg/mm/aa)"<< endl; 
   
                 do{      
                          cin >> gg >> sep >> mm >> sep >> aa;
           if((gg<0 || gg>31) || ( mm<0 || mm>12) || (aa>2005)) 
                           cout<<"Te dhenat gabim, riprovo"                   
      }while((gg<0 || gg>31) || (mm<0 || mm>12) ||  (aa>2005));                              
                         
                        cout << "Fut matricolen"<< endl;
                    
                         cin>>matri;  // Ne kete pjese me duhet funksioni qe ta kontrolloj
                       cout << "Fut vitin shkollor"<< endl;
                         cin>>anno; // Ne kete pjese me duhet ai funksioni   
                          
                       }
.....
........ 


```

----------

