Zelio bih da ograničim broj unosa znakova kod unosa matičnog broja radnika na 13 znakova- brojeva
Je li to moguće, i ako je, kako?
Hvala unaprijed!
Evo i programa:
#include <iostream>
#include <fstream>
using namespace std;
//deklariranje sloga
struct tradnik{
int mat_br;
char ime_prez[35];
char spol;
int god_rodj;
};
//definiranje varijable radnik koja je tipa tradnik
tradnik radnik;
//funkcija unosa podataka u datoteku
void unos_podataka_u_datoteku(){
fstream dat;
char dalje;
dat.open("radnici.dat",ios::out | ios::binary);
do{
cout << "Maticni broj: ";
cin >> radnik.mat_br;
cout << "Ime i prezime: ";
cin.ignore();
cin.getline (radnik.ime_prez, sizeof(radnik.ime_prez));
cout << "Spol(m/z): ";
cin >> radnik.spol;
cout << "Godina rodjenja: ";
cin >> radnik.god_rodj;
dat.write((char *) &radnik,sizeof(radnik));
cout << "Zelite li unositi jos radnika? (d/n)";
cin >> dalje;
} while (dalje=='d');
dat.close();
};
//funkcija ispisa podataka o svim radnicima
void ispis_podataka_o_svim_radnicima(){
fstream dat;
dat.open("radnici.dat",ios::in | ios::binary);
while (1){
dat.read((char *) &radnik,sizeof(radnik));
if (dat.eof()) break;
cout << "Maticni broj: " << radnik.mat_br << endl;
cout << "Ime i prezime: " << radnik.ime_prez << endl;
cout << "Spol: " << radnik.spol << endl;
cout << "Godina rodjenja: " << radnik.god_rodj << endl;
}
dat.close();
};
//funkcija ispisa podataka o jednom radniku sa trazenim maticnim brojem
void ispis_podataka_o_zadanom_radniku(int mbr){
fstream dat;
int brojac=0;
dat.open("radnici.dat",ios::in | ios::binary);
while (1){
dat.read((char *) &radnik,sizeof(radnik));
if (dat.eof()) break;
if (radnik.mat_br==mbr){
cout << "Maticni broj: " << radnik.mat_br << endl;
cout << "Ime i prezime: " << radnik.ime_prez << endl;
cout << "Spol: " << radnik.spol << endl;
cout << "Godina rodjenja: " << radnik.god_rodj << endl;
brojac++;
}
}
if (brojac==0)
cout << "Radnik s maticnim brojem " << mbr << " nije nadjen u datoteci."<<endl;
dat.close();
};
//funkcija ispisa podataka o radnicima odredjenog spola
void ispis_podataka_po_spolu(char spol){
fstream dat;
int brojac=0;
dat.open("radnici.dat",ios::in | ios::binary);
while (1){
dat.read((char *) &radnik,sizeof(radnik));
if (dat.eof()) break;
if (radnik.spol==spol){
cout << "Maticni broj: " << radnik.mat_br << endl;
cout << "Ime i prezime: " << radnik.ime_prez << endl;
cout << "Spol: " << radnik.spol << endl;
cout << "Godina rodjenja: " << radnik.god_rodj << endl;
brojac++;
}
}
if (brojac==0)
cout << "U datoteci ne postoji ni jedan radnik sa trazenim spolom." << endl;
dat.close();
};
//funkcija ispisa podataka o radnicima rodjenim u odredjenom rasponu godina
void ispis_podataka_po_godinama(int god1, int god2){
fstream dat;
int brojac=0;
dat.open("radnici.dat",ios::in | ios::binary);
while (1){
dat.read((char *) &radnik,sizeof(radnik));
if (dat.eof()) break;
if (radnik.god_rodj>god1 && radnik.god_rodj<god2){
cout << "Maticni broj: " << radnik.mat_br << endl;
cout << "Ime i prezime: " << radnik.ime_prez << endl;
cout << "Spol: " << radnik.spol << endl;
cout << "Godina rodjenja: " << radnik.god_rodj << endl;
brojac++;
}
}
if (brojac==0)
cout << "U datoteci ne postoji ni jedan radnik u trazenom rasponu godina."<<endl;
dat.close();
};
// main funkcija iz koje se vrsi pozivanje ostalih funkcija
int main()
{
int izbor, mbr, god1, god2;
char spol;
do
{
cout <<"Izaberite :" <<endl<<endl;
cout <<"1. Unos podataka u datoteku"<<endl;
cout <<"2. Ispis svih zapisa iz datoteke"<<endl;
cout <<"3. Ispis podataka o zadanom radniku"<<endl;
cout <<"4. Ispis podataka po spolu"<<endl;
cout <<"5. Ispis podataka po godinama"<<endl;
cout <<"0. Izlaz iz programa"<<endl;
cin >> izbor;
switch (izbor)
{
case 1:unos_podataka_u_datoteku();break;
case 2:ispis_podataka_o_svim_radnicima();break;
case 3: cout << "Unesite maticni broj radnika: ";
cin >> mbr;
ispis_podataka_o_zadanom_radniku(mbr);break;
case 4: cout << "Unesite spol radnika: ";
cin >> spol;
ispis_podataka_po_spolu(spol);break;
case 5: cout << "Unesite manju godinu: ";
cin >> god1;
cout << "Unesite vecu godinu: ";
cin >> god2;
ispis_podataka_po_godinama(god1, god2);break;
case 0: cout << "Kraj programa" << endl;
}
} while (izbor!=0);
system("PAUSE");
return EXIT_SUCCESS;
}