Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <string>
- #include <iomanip>
- #include <stdio.h>
- #include <cstdlib>
- #define MAX 100
- using namespace std;
- struct zapis
- {
- int sifra;
- string opis;
- float edinecnacena;
- int vleznakolicina;
- int izleznakolicina;
- float danocnastapka;
- float iznos;
- int datum;
- };
- bool proveridata(int data)
- {
- int year=data/10000;
- int month=(data/100)%100;
- int day=data%100;
- if(day < 1 || day > 31)
- return false;
- else
- if(month < 1 || month > 12)
- return false;
- if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 31)
- return false;
- else if ((month == 2) && (year % 4 == 0) && day > 29)
- return false;
- else if ((month == 2) && (year % 4 != 0) && day > 28)
- return false;
- return true;
- }
- void vlez(struct zapis artikal[], int i)
- {
- do
- {
- cout<<"Vnesi sifra na artikal :";
- cin>>artikal[i].sifra;
- if(artikal[i].sifra<1 || artikal[i].sifra>99999)
- cout<<"Vnesovte nevalidna sifra"<<endl;
- }while(artikal[i].sifra<1 || artikal[i].sifra>99999);
- do
- {
- cout<<"Vnesete opis na artikal (Vnesete . za kraj) ";
- getline(cin,artikal[i].opis,'.');
- if(artikal[i].opis.size()>30)
- cout<<"Vnesovte opis podolg od 30 karakteri"<<endl;;
- }while(artikal[i].opis.size()>30);
- cout<<"Vnesi edinecna cena ";
- cin>>artikal[i].edinecnacena;
- do
- {
- cout<<"Vnesi vlezna kolicina na artikal :";
- cin>>artikal[i].vleznakolicina;
- if(artikal[i].vleznakolicina<0 || artikal[i].vleznakolicina>99999)
- cout<<"Vnesovte nevalidna kolicina"<<endl;
- }while(artikal[i].vleznakolicina<0 || artikal[i].vleznakolicina>99999);
- artikal[i].izleznakolicina=0;
- artikal[i].danocnastapka=0;
- do
- {
- cout<<"Vnesi datum vo format GGMMDD :";
- cin>>artikal[i].datum;
- if(!proveridata(artikal[i].datum))
- cout<<"Nevaliden datum ";
- }while(!proveridata(artikal[i].datum));
- }
- void izlez(struct zapis artikal[], int i)
- {
- do
- {
- cout<<"Vnesi sifra na artikal :";
- cin>>artikal[i].sifra;
- if(artikal[i].sifra<1 || artikal[i].sifra>99999)
- cout<<"Vnesovte nevalidna sifra"<<endl;
- }while(artikal[i].sifra<1 || artikal[i].sifra>99999);
- do
- {
- cout<<"Vnesete opis na artikal (Vnesete . za kraj) ";
- getline(cin,artikal[i].opis,'.');
- if(artikal[i].opis.size()>30)
- cout<<"Vnesovte opis podolg od 30 karakteri"<<endl;;
- }while(artikal[i].opis.size()>30);
- cout<<"Vnesi edinecna cena ";
- cin>>artikal[i].edinecnacena;
- artikal[i].vleznakolicina=0;
- do
- {
- cout<<"Vnesi izlezna kolicina na artikal :";
- cin>>artikal[i].izleznakolicina;
- if(artikal[i].izleznakolicina<1 || artikal[i].izleznakolicina>99999)
- cout<<"Vnesovte nevalidna kolicina"<<endl;
- }while(artikal[i].izleznakolicina<1 || artikal[i].izleznakolicina>99999);
- cout<<"Vnesi danocna stapka :";
- cin>>artikal[i].danocnastapka;
- do
- {
- cout<<"Vnesi datum vo format GGMMDD :";
- cin>>artikal[i].datum;
- if(!proveridata(artikal[i].datum))
- cout<<"Nevaliden datum ";
- }while(!proveridata(artikal[i].datum));
- }
- int main ()
- {
- struct zapis artikal[MAX];
- int n,stavka;
- cout<<"Vnesete broj na artikli "<<endl;
- cin>>n;
- for (int i=0;i<n;i++)
- {
- cout<<"Vnesete 1 za vlez ili 2 za izlez :";
- cin>>stavka;
- if(stavka==1)
- {
- vlez(artikal,i);
- artikal[i].iznos=artikal[i].vleznakolicina*artikal[i].edinecnacena;}
- else
- if(stavka==2)
- {
- izlez(artikal,i);
- artikal[i].iznos=(artikal[i].edinecnacena-(artikal[i].edinecnacena*artikal[i].danocnastapka)/100)*artikal[i].izleznakolicina;}
- }
- ofstream out;
- out.open("vnos.dat");
- for(int i=0;i<n;i++)
- {
- out<<setw(5)<<artikal[i].sifra<<" ";
- out<<setw(30)<<artikal[i].opis<<" ";
- out<<fixed<<setw(12)<<setprecision(2)<<artikal[i].edinecnacena<<" ";
- out<<setw(6)<<artikal[i].vleznakolicina<<" ";
- out<<setw(6)<<artikal[i].izleznakolicina<<" ";
- out<<fixed<<setw(10)<<setprecision(2)<<artikal[i].danocnastapka<<" ";
- out<<fixed<<setw(15)<<setprecision(2)<<artikal[i].iznos<<" ";
- if(artikal[i].datum<1000)
- out<<setw(6)<<"000"<<artikal[i].datum<<" ";
- else
- if(artikal[i].datum<10000)
- out<<setw(6)<<"00"<<artikal[i].datum<<" ";
- else if(artikal[i].datum<100000)
- out<<setw(6)<<"0"<<artikal[i].datum<<" ";
- else out<<setw(6)<<artikal[i].datum<<" ";
- out<<endl;
- }
- out.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement