Razor
u jelly?
- Член од
- 26 јануари 2007
- Мислења
- 2.544
- Поени од реакции
- 168
Значи вака за проект ми треба овоа програмче еве го кодот почнат ама ми дава грешка кај внесувањето на податоци кај датотеката. па ајде на помош се е добредојдено.
Цитат:
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
using namespace std;
struct Podatoci //definiranje na struktura so ime Podatoci
{ string Ime; //ime na vozac
string Prezime; //prezime na vozac
string RegistarskiBroj; //registarski broj na kola
int VremeNaVlez; //vreme na vlez na parking
int DataNaVlez; //data na vlez na parking
}Parking[200]; //deklaracija na niza Parking,od tip na strukturata Podatoci
int main(){
int i,j,pomosna,k=0; //Promenlivi i pomasna koi gi koristime kaj vnes na reden broj
int HH,MM,GG,DD; //Promenlivi za validizacija na vreme i data na vlez
bool Data=true;
int DataVlez;
int VremeVlez;
Podatoci proverka;
cout<<"*************************************************************"<<endl;
cout<<"Broj na kola na parking*****Data na vlez: Vreme na vlez: ";
do{ //Ciklusot raboti(se vrti) se dodeka Data=false
cin>>proverka.DataNaVlez; //Datata se vnesuva i se deli na 3 promenlivi
GG=DataVlez / 10000; //Den vo mesecot-GG
MM=(DataVlez % 10000)/100; //Mesec vo godinata-MM
DD=DataVlez % 100; //Poslednite cifri od godinata-DD
//Spored kalendarot datata moze da e najmalku 011000 a najmnogu 311299
if((DataVlez <010100) || (DataVlez >311299)){
cout<<"*Datata ne e pravilno vnesena obidete se povtorno*"<<endl; //datata ne e vo baraniot opseg
cout<<"Broj na kola na parking*****Data na vlez: Vreme na vlez: "; //povtorno se vrsi vnes na data
Data=false; //Ovaa promenliva ja postavuvame kaj sekoe ispituvanje na data
}
else{
switch(MM) //true ako e ispolnet uslovot, a false ako ne e ispolnet
{
case 01: //otkako datata ja razdelivme vo 3 promenlivi sega ispituvame za
case 03: //site mozni kombinacii na mesecot, so pomos na switch struktura
case 05: //pri sto davame uslov deka ako mesecite (MM) koi se so po 31 den
case 07: //imaat poveke denovi od 31, znaci toj datum ne e valide
case (10-2): //na toj nacin eliminirame golem del od moznite kombinacii na datite
case 10: //brojot 8 ne e vo oktalniot sistem i zatoa se zapisuva kako (10-2)
case 12: if (GG > 31) {
cout<<"*Datata ne e pravilno vnesena obidete se povtorno* "<<endl;
cout<<"Broj na kola na parking*****Data na vlez: Vreme na vlez: ";
Data=false;} //promenlivata go kontrolira uslovot
else Data=true; //i dobiva vrednost true ili false
break; //mora da se stavi break kaj switch strukturata
case 04: //opsegot go stesnuvame so toa sto gi isfrlame i broevite
case 06: //koi ne se datum, so pomos na mesecite od po 30 dena
case (10-1): //brojot 9 ne e vo oktalniot sistem i zatoa se zapisuva kako (10-1)
case 11: if (GG > 30) {
cout<<"*Datata ne e pravilno vnesena obidete se povtorno*"<<endl;
cout<<"Broj na kola na parking*****Data na vlez: Vreme na vlez: ";
Data=false;} //kontrola na uslovot
else Data=true;
break; // Fevruari ima 29 dena vo prestapna godina (godinata se deli so 4)
case 02: if (((2000 + DD)%4 == 0) && (((2000 + DD) % 100 != 0) || ((2000 + DD) % 400 == 0)) && (GG > 29)){ //2000+DD = godinata za koja se ispituva
cout<<"*Datata ne e pravilno vnesena obidete se povtorno*"<<endl; //koga prestapnata
cout<<"Broj na kola na parking*****Data na vlez: Vreme na vlez: "; //godina ima poveke od 29 dena
Data=false;} //toj datum ispga od opsegot, a koga godinata ne e prestapna
else if (((2000 + DD)%4 == 0) && (((2000 + DD) % 100 != 0) || ((2000 + DD) % 400 == 0)) && (GG > 28)){ //site datumi na koi ima poveke od
cout<<"*Datata ne e pravilno vnesena obidete se povtorno*"<<endl; //28 denovi, isto taka
cout<<"Broj na kola na parking*****Data na vlez: Vreme na vlez: "; //ispagaat i ne se dati
Data=false;} //otkako gi isfrlivme datite sto ne se mozni
else Data=true; //tie sto ostanuvaat se validni datumi
break;
default: {cout<<"*Datata ne e pravilno vnesena obidete se povtorno*"<<endl;
cout<<"Broj na kola na parking*****Data na vlez: Vreme na vlez: ";
Data=false;}; //site drugi datumi koi ne pocnuvaat od 01-12
break; //ne se validni datumi i DataMoze=false
}} //koga uslovot ne e ispolnet DataMoze=false (0), a datata postojano se vnesuva
}while (!(Data)); //koga uslovot =1, pa uslovot za ciklus izgleda !(Data)
if (Data==true) //koga uslovot =1, ciklusot prestanuva i se vrsi vnesuvanje na podatoci za sekoe vozilo posebno
cout<<"*************************************************************"<<endl;
for (i=0; i<=3; i++){
cout<<"Vnesi gi podatocite za "<<i+1<<" -to vozilo: "<<endl; //voved vo programata
cout<<"*************************************************************"<<endl; //pravenje tabela
// vnesuvanje na imeto na sopstvenikot Parking
cout<<"Vozilo["<<i+1<<"] -- Ime na sopstvenikot: ";
do{ //vleguvame vo ciklus za da ako ne e ispolnet dadeniot uslov za validacija za ime,
cin>> Parking.Ime; // podatocite da se vnesuvaat povtorno
if ((Parking.Ime).length()>15){ //postavuvanje uslov, ako dolzinata na imeto e pogolema od 15
cout<<"Vnesovte *ime* pogolemo od 15 karakteri, obidete se povtorno."<<endl; // karakteri, togas
cout<<"Vozilo["<<i+1<<"] -- Ime na sopstvenikot: ";} //odnovo se vnesuva imeto na sopstvenikot Parking
}while ((Parking.Ime).length()>15);//ciklusot trae dodeka ne se vnese ime so pomalku od 15 karakteri
// vnesuvanje na prezimeto na sopstvenikot Parking
cout<<"Vozilo["<<i+1<<"] -- Prezime na sopstvenikot: ";
do{ //vleguvame vo ciklus za da ako ne e ispolnet uslovot za validacija za prezime,
cin>> Parking.Prezime; // podatocite da se vnesuvaat povtorno
if ((Parking.Prezime).length()>15){ //postavuvanje uslov, ako dolzinata na prezimeto e pogolema od 15
cout<<"Vnesovte *prezime* pogolemo od 15 karakteri, obidete se povtorno."<<endl; // karakteri, togas
cout<<"Vozilo["<<i+1<<"] -- Prezime na sopstvenikot: ";} //odnovo se vnesuva prezimeto na sopstvenikot Parking
}while ((Parking.Prezime).length()>15); //ciklusot trae dodeka ne se vnese prezime so pomalku od 15 karakteri
// vnesuvanje na Registarski broj na vozilo Parking
cout<<"Vozilo["<<i+1<<"] -- Registarki Broj na vozilo: ";
do{ //vleguvame vo ciklus i ispituvame dali vneseniot broj e nadvor od rangot ili dali se povtoruva
cin>> Parking.RegistarskiBroj; //ako ne e vo rangot ili ako se povtoruva, povtorno se vnesuva
if ((Parking.RegistarskiBroj).length()>=9){//postavuvanje uslov, ako dolzinata na registarskiot broj e pogolema od 9
cout<<"Vnesovte *registarski broj* pogolemo od 9 karakteri, obidete se povtorno."<<endl; // karakteri, togas
cout<<"Vozilo["<<i+1<<"] -- Registarski broj na vozilo: ";} //odnovo se vnesuva registarskiot broj na voziloto Parking
}while ((Parking.RegistarskiBroj).length()>=9); //ciklusot trae dodeka ne se vnese registarski broj so pomalku ili ednakvo na 9 karakteri
//dodeluvanje na vrednosta na datata na vlez, vnesena na pocetokot
Parking.DataNaVlez = DataVlez; //i nejzino pecatenje
cout<<"Vozilo["<<i+1<<"] -- Data na Vlez: "<<Parking.DataNaVlez<<endl;
cout<<"*************************************************************"<<endl;
}
//dodeluvane na vrednost za vreme na vlez
Parking.VremeNaVlez = VremeVlez; //i nejzino pecatenje
cout<<"Vozilo["<<i+1<<"] -- Vreme na Vlez: "<<Parking.VremeNaVlez<<endl;
cout<<"*************************************************************"<<endl;
}
//kraj na ciklusot za vnesuvanje na podatocite
ofstream zapisuvanje; //za zapisuvanje vo datoteki
ifstream citanje; //za citanje vo datoteki
zapisuvanje.open("podatoci.dat" , ios:ut); //pocnuvame da zapisuvame vo datotekata podatoci (od nula)
for (int i=0; i<3; i++){ //so ovoj ciklus gi zapisuvame site podatoci za sekoj kompjuter vo datoteklata podatoci
zapisuvanje<<Parking.Ime;
zapisuvanje<<Parking.Prezime;
zapisuvanje<<Parking.RegistarskiBroj;
zapisuvanje<<Parking.VremeNaVlez;
zapisuvanje<<Parking.DataNaVlez;
}
zapisuvanje.close(); //zavrsuvame so zapisuvanjeto, ovaa datoteka e polna
citanje.open("sort.dat"); //pocnuvame da gi citame podatocite od datotekata vo koja se zapisani
for(int j =0; j<=2; j++) { //odbrojuvame za sekoe vozilo
for(int i=1; i<=2; i++) { // i go sporeduvame so sekoe drugo
if((Parking.VremeNaVlez) > (Parking[i-1].VremeNaVlez)) { //pri sporedbata se citaat od napravenata datoteka podatoci
Podatoci zamena1 = Parking; //gi sortirame spored vreme na vlez
Parking = Parking[i-1]; //od najrano do najkasno vreme
Parking[i-1] = zamena1;
}
}
} //otkako se sortirani po vreme gi sortirame po data
for(int j =0; j<=2; j++) { //pr. ako ima dve vozila so ist datum na vlez ,gi spoerduvame spored vremeto na vlez,toj so pomalo vreme ke bide prv
for(int i=1; i<=2; i++) {
if((Parking.DataNaVlez) < (Parking[i-1].DataNaVlez)) { //pri sporedbata se citaat od napravenata datoteka zapisuvanje
Podatoci zamena2 = Parking;
Parking = Parking[i-1];
Parking[i-1] = zamena2;
}
}
}
citanje.close(); //otkako e napraveno sortiranjeto i sporedbata, naredbata za citanje na datotekata podatoci ja zatvarame
//povtorno ja otvarame naredbata za citanje od datotekata podatoci (zaradi preglednost)
zapisuvanje.open("sort.dat", ios:ut); //sega datotekata podatoci e veke sortirana
for (i=0; i<=2; i++){ // so ovoj ciklus veke sortiranite podatoci gi vnesuvame vo datotekata sort.dat
zapisuvanje<<(Parking.Ime);
zapisuvanje<<(Parking.Prezime);
zapisuvanje<<(Parking.RegistarskiBroj);
zapisuvanje<<(Parking.VremeNaVlez);
zapisuvanje<<(Parking.DataNaVlez);
}
zapisuvanje.close(); //zapisuvanjeto vo sort.dat e zavrseno, datotekata e napravena
//citanjeto od datotekata podatoci.dat e zavrseno, veke ne ja koristime ovaa datoteka
citanje.open("sort.dat"); //datotekata sort.dat ja koristime kako vlezna datoteka za da ja dobieme
for (i=0; i<=2; i++){ //Vkupnata cena koja treba da se plati, toa go praveme so sobiranje na vrermeto na koristenje na parking so cenata na uslugata
VkupnaNadrgadbaMB = VkupnaNadrgadbaMB + PotrebnaNadrgadba;} //podocna ovoj podatok go koristime za dobivanje na cenata
citanje.close(); //citanjeta od ovaa datoteka zavrsuva otkako ja dobivame vkupnata memorija za nadgradba
Цитат:
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
using namespace std;
struct Podatoci //definiranje na struktura so ime Podatoci
{ string Ime; //ime na vozac
string Prezime; //prezime na vozac
string RegistarskiBroj; //registarski broj na kola
int VremeNaVlez; //vreme na vlez na parking
int DataNaVlez; //data na vlez na parking
}Parking[200]; //deklaracija na niza Parking,od tip na strukturata Podatoci
int main(){
int i,j,pomosna,k=0; //Promenlivi i pomasna koi gi koristime kaj vnes na reden broj
int HH,MM,GG,DD; //Promenlivi za validizacija na vreme i data na vlez
bool Data=true;
int DataVlez;
int VremeVlez;
Podatoci proverka;
cout<<"*************************************************************"<<endl;
cout<<"Broj na kola na parking*****Data na vlez: Vreme na vlez: ";
do{ //Ciklusot raboti(se vrti) se dodeka Data=false
cin>>proverka.DataNaVlez; //Datata se vnesuva i se deli na 3 promenlivi
GG=DataVlez / 10000; //Den vo mesecot-GG
MM=(DataVlez % 10000)/100; //Mesec vo godinata-MM
DD=DataVlez % 100; //Poslednite cifri od godinata-DD
//Spored kalendarot datata moze da e najmalku 011000 a najmnogu 311299
if((DataVlez <010100) || (DataVlez >311299)){
cout<<"*Datata ne e pravilno vnesena obidete se povtorno*"<<endl; //datata ne e vo baraniot opseg
cout<<"Broj na kola na parking*****Data na vlez: Vreme na vlez: "; //povtorno se vrsi vnes na data
Data=false; //Ovaa promenliva ja postavuvame kaj sekoe ispituvanje na data
}
else{
switch(MM) //true ako e ispolnet uslovot, a false ako ne e ispolnet
{
case 01: //otkako datata ja razdelivme vo 3 promenlivi sega ispituvame za
case 03: //site mozni kombinacii na mesecot, so pomos na switch struktura
case 05: //pri sto davame uslov deka ako mesecite (MM) koi se so po 31 den
case 07: //imaat poveke denovi od 31, znaci toj datum ne e valide
case (10-2): //na toj nacin eliminirame golem del od moznite kombinacii na datite
case 10: //brojot 8 ne e vo oktalniot sistem i zatoa se zapisuva kako (10-2)
case 12: if (GG > 31) {
cout<<"*Datata ne e pravilno vnesena obidete se povtorno* "<<endl;
cout<<"Broj na kola na parking*****Data na vlez: Vreme na vlez: ";
Data=false;} //promenlivata go kontrolira uslovot
else Data=true; //i dobiva vrednost true ili false
break; //mora da se stavi break kaj switch strukturata
case 04: //opsegot go stesnuvame so toa sto gi isfrlame i broevite
case 06: //koi ne se datum, so pomos na mesecite od po 30 dena
case (10-1): //brojot 9 ne e vo oktalniot sistem i zatoa se zapisuva kako (10-1)
case 11: if (GG > 30) {
cout<<"*Datata ne e pravilno vnesena obidete se povtorno*"<<endl;
cout<<"Broj na kola na parking*****Data na vlez: Vreme na vlez: ";
Data=false;} //kontrola na uslovot
else Data=true;
break; // Fevruari ima 29 dena vo prestapna godina (godinata se deli so 4)
case 02: if (((2000 + DD)%4 == 0) && (((2000 + DD) % 100 != 0) || ((2000 + DD) % 400 == 0)) && (GG > 29)){ //2000+DD = godinata za koja se ispituva
cout<<"*Datata ne e pravilno vnesena obidete se povtorno*"<<endl; //koga prestapnata
cout<<"Broj na kola na parking*****Data na vlez: Vreme na vlez: "; //godina ima poveke od 29 dena
Data=false;} //toj datum ispga od opsegot, a koga godinata ne e prestapna
else if (((2000 + DD)%4 == 0) && (((2000 + DD) % 100 != 0) || ((2000 + DD) % 400 == 0)) && (GG > 28)){ //site datumi na koi ima poveke od
cout<<"*Datata ne e pravilno vnesena obidete se povtorno*"<<endl; //28 denovi, isto taka
cout<<"Broj na kola na parking*****Data na vlez: Vreme na vlez: "; //ispagaat i ne se dati
Data=false;} //otkako gi isfrlivme datite sto ne se mozni
else Data=true; //tie sto ostanuvaat se validni datumi
break;
default: {cout<<"*Datata ne e pravilno vnesena obidete se povtorno*"<<endl;
cout<<"Broj na kola na parking*****Data na vlez: Vreme na vlez: ";
Data=false;}; //site drugi datumi koi ne pocnuvaat od 01-12
break; //ne se validni datumi i DataMoze=false
}} //koga uslovot ne e ispolnet DataMoze=false (0), a datata postojano se vnesuva
}while (!(Data)); //koga uslovot =1, pa uslovot za ciklus izgleda !(Data)
if (Data==true) //koga uslovot =1, ciklusot prestanuva i se vrsi vnesuvanje na podatoci za sekoe vozilo posebno
cout<<"*************************************************************"<<endl;
for (i=0; i<=3; i++){
cout<<"Vnesi gi podatocite za "<<i+1<<" -to vozilo: "<<endl; //voved vo programata
cout<<"*************************************************************"<<endl; //pravenje tabela
// vnesuvanje na imeto na sopstvenikot Parking
cout<<"Vozilo["<<i+1<<"] -- Ime na sopstvenikot: ";
do{ //vleguvame vo ciklus za da ako ne e ispolnet dadeniot uslov za validacija za ime,
cin>> Parking.Ime; // podatocite da se vnesuvaat povtorno
if ((Parking.Ime).length()>15){ //postavuvanje uslov, ako dolzinata na imeto e pogolema od 15
cout<<"Vnesovte *ime* pogolemo od 15 karakteri, obidete se povtorno."<<endl; // karakteri, togas
cout<<"Vozilo["<<i+1<<"] -- Ime na sopstvenikot: ";} //odnovo se vnesuva imeto na sopstvenikot Parking
}while ((Parking.Ime).length()>15);//ciklusot trae dodeka ne se vnese ime so pomalku od 15 karakteri
// vnesuvanje na prezimeto na sopstvenikot Parking
cout<<"Vozilo["<<i+1<<"] -- Prezime na sopstvenikot: ";
do{ //vleguvame vo ciklus za da ako ne e ispolnet uslovot za validacija za prezime,
cin>> Parking.Prezime; // podatocite da se vnesuvaat povtorno
if ((Parking.Prezime).length()>15){ //postavuvanje uslov, ako dolzinata na prezimeto e pogolema od 15
cout<<"Vnesovte *prezime* pogolemo od 15 karakteri, obidete se povtorno."<<endl; // karakteri, togas
cout<<"Vozilo["<<i+1<<"] -- Prezime na sopstvenikot: ";} //odnovo se vnesuva prezimeto na sopstvenikot Parking
}while ((Parking.Prezime).length()>15); //ciklusot trae dodeka ne se vnese prezime so pomalku od 15 karakteri
// vnesuvanje na Registarski broj na vozilo Parking
cout<<"Vozilo["<<i+1<<"] -- Registarki Broj na vozilo: ";
do{ //vleguvame vo ciklus i ispituvame dali vneseniot broj e nadvor od rangot ili dali se povtoruva
cin>> Parking.RegistarskiBroj; //ako ne e vo rangot ili ako se povtoruva, povtorno se vnesuva
if ((Parking.RegistarskiBroj).length()>=9){//postavuvanje uslov, ako dolzinata na registarskiot broj e pogolema od 9
cout<<"Vnesovte *registarski broj* pogolemo od 9 karakteri, obidete se povtorno."<<endl; // karakteri, togas
cout<<"Vozilo["<<i+1<<"] -- Registarski broj na vozilo: ";} //odnovo se vnesuva registarskiot broj na voziloto Parking
}while ((Parking.RegistarskiBroj).length()>=9); //ciklusot trae dodeka ne se vnese registarski broj so pomalku ili ednakvo na 9 karakteri
//dodeluvanje na vrednosta na datata na vlez, vnesena na pocetokot
Parking.DataNaVlez = DataVlez; //i nejzino pecatenje
cout<<"Vozilo["<<i+1<<"] -- Data na Vlez: "<<Parking.DataNaVlez<<endl;
cout<<"*************************************************************"<<endl;
}
//dodeluvane na vrednost za vreme na vlez
Parking.VremeNaVlez = VremeVlez; //i nejzino pecatenje
cout<<"Vozilo["<<i+1<<"] -- Vreme na Vlez: "<<Parking.VremeNaVlez<<endl;
cout<<"*************************************************************"<<endl;
}
//kraj na ciklusot za vnesuvanje na podatocite
ofstream zapisuvanje; //za zapisuvanje vo datoteki
ifstream citanje; //za citanje vo datoteki
zapisuvanje.open("podatoci.dat" , ios:ut); //pocnuvame da zapisuvame vo datotekata podatoci (od nula)
for (int i=0; i<3; i++){ //so ovoj ciklus gi zapisuvame site podatoci za sekoj kompjuter vo datoteklata podatoci
zapisuvanje<<Parking.Ime;
zapisuvanje<<Parking.Prezime;
zapisuvanje<<Parking.RegistarskiBroj;
zapisuvanje<<Parking.VremeNaVlez;
zapisuvanje<<Parking.DataNaVlez;
}
zapisuvanje.close(); //zavrsuvame so zapisuvanjeto, ovaa datoteka e polna
citanje.open("sort.dat"); //pocnuvame da gi citame podatocite od datotekata vo koja se zapisani
for(int j =0; j<=2; j++) { //odbrojuvame za sekoe vozilo
for(int i=1; i<=2; i++) { // i go sporeduvame so sekoe drugo
if((Parking.VremeNaVlez) > (Parking[i-1].VremeNaVlez)) { //pri sporedbata se citaat od napravenata datoteka podatoci
Podatoci zamena1 = Parking; //gi sortirame spored vreme na vlez
Parking = Parking[i-1]; //od najrano do najkasno vreme
Parking[i-1] = zamena1;
}
}
} //otkako se sortirani po vreme gi sortirame po data
for(int j =0; j<=2; j++) { //pr. ako ima dve vozila so ist datum na vlez ,gi spoerduvame spored vremeto na vlez,toj so pomalo vreme ke bide prv
for(int i=1; i<=2; i++) {
if((Parking.DataNaVlez) < (Parking[i-1].DataNaVlez)) { //pri sporedbata se citaat od napravenata datoteka zapisuvanje
Podatoci zamena2 = Parking;
Parking = Parking[i-1];
Parking[i-1] = zamena2;
}
}
}
citanje.close(); //otkako e napraveno sortiranjeto i sporedbata, naredbata za citanje na datotekata podatoci ja zatvarame
//povtorno ja otvarame naredbata za citanje od datotekata podatoci (zaradi preglednost)
zapisuvanje.open("sort.dat", ios:ut); //sega datotekata podatoci e veke sortirana
for (i=0; i<=2; i++){ // so ovoj ciklus veke sortiranite podatoci gi vnesuvame vo datotekata sort.dat
zapisuvanje<<(Parking.Ime);
zapisuvanje<<(Parking.Prezime);
zapisuvanje<<(Parking.RegistarskiBroj);
zapisuvanje<<(Parking.VremeNaVlez);
zapisuvanje<<(Parking.DataNaVlez);
}
zapisuvanje.close(); //zapisuvanjeto vo sort.dat e zavrseno, datotekata e napravena
//citanjeto od datotekata podatoci.dat e zavrseno, veke ne ja koristime ovaa datoteka
citanje.open("sort.dat"); //datotekata sort.dat ja koristime kako vlezna datoteka za da ja dobieme
for (i=0; i<=2; i++){ //Vkupnata cena koja treba da se plati, toa go praveme so sobiranje na vrermeto na koristenje na parking so cenata na uslugata
VkupnaNadrgadbaMB = VkupnaNadrgadbaMB + PotrebnaNadrgadba;} //podocna ovoj podatok go koristime za dobivanje na cenata
citanje.close(); //citanjeta od ovaa datoteka zavrsuva otkako ja dobivame vkupnata memorija za nadgradba