Structuri c++

Problema:

   O agentie de turism tine evidenta clientilor sai. Despre fiecare client se memoreaza: numele destinatia vacantei, pretul, numarul de zile, data plecarii in vacanta.
    Datele se citesc din fisierul agentie.txt .

  • Afisarea in ordine alfabetica destinatiile oferite de agentie.
  • Afisati clientii ce pleaca in data x (x citit de la tastatura ).
  • Unde pleaca turistul x (x citit de la tastatura ) si cat plateste.
  • Cati clienti isi petrec vacanta la destinatia x (x citit de la tastatura ).


Program in Code Blocks :





#include <fstream>
#include <iostream>
#include <string.h>

using namespace std;

struct data
{
    int zi,l,an;
};
struct client
{
    char nume[25],dest[15];
    int nrz;
    float pret;
    data dp;
};
void citire (client a[10],int &n)
{
    int i;
    ifstream f("agentie.txt");
    f>>n;
    for(i=1;i<=n;i++)
    {
        f.get();
        f.get(a[i].nume,20);
        f.get();
        f.get(a[i].dest,10);
        f>>a[i].dp.zi>>a[i].dp.l>>a[i].dp.an>>a[i].pret>>a[i].nrz;
    }
    f.close();
}
void afisare (client a[10],int n)
{
    int i;
    for(i=1;i<=n;i++)
    {
        cout<<"\n"<<a[i].nume<<endl;
        cout<<"Dest "<<a[i].dest<<endl;
        cout<<"Dataplecarii " <<a[i].dp.zi<<" "<<a[i].dp.l<<" "<<a[i].dp.an<<" Pretul "<<a[i].pret<<" Numarul de zile "<<a[i].nrz;
    }
}
void sortare(client a[10],int n)
{
    client aux;
    int i,j;
    for(i=1;i<n;i++)
        for(j=i+1;j<=n;j++)
            if(strcmp(a[i].dest,a[j].dest)>0)
            {
                aux=a[i];
                a[i]=a[j];
                a[j]=aux;
            }
}
void datap(client a[10],int n)
{
    int i;
    data x;
    cin>>x.zi;
    cin>>x.l;
    cin>>x.an;
    for(i=1;i<=n;i++)
        if(a[i].dp.zi==x.zi && a[i].dp.l==x.l && a[i].dp.an==x.an) cout<<a[i].nume<<endl;
}
void plecare(client a[10],int n)
{
    int i;
    char x[25];
    cout<<"\nCiteste turistul ";
    cin.get();
    cin.get(x,25);
    for(i=1;i<=n;i++)
        if(strcmp(a[i].nume,x)==0)
            cout<<"\nTuristul pleaca in "<<a[i].dest<<" si plateste "<<a[i].pret<<endl;
}
void destinatie(client a[10],int n)
{
    int i,k;
    char x[10];
    cout<<"\nCiteste destinatia ";
    cin.get();
    cin.get(x,10);
    k=0;
    for(i=1;i<=n;i++)
        if(strcmp(a[i].dest,x)==0) k++;
    cout<<k<<" clienti isi petrec destinatia in "<<x;
}
int main()
{
    client a[10];
    int n;
    citire(a,n);
    afisare(a,n);
    cout<<"\nLista dupa sortare "<<endl;
    sortare(a,n);
    afisare(a,n);
    cout<<"\nCiteste o data "<<endl;
    datap(a,n);
    plecare(a,n);
    destinatie(a,n);
}


Exemplu de fisier din care se citesc date pentru acest program: http://informatica-surse.blogspot.ro/2018/05/exemplu-de-fisier-c.html

Comentarii

Postări populare de pe acest blog

Citire graf neorientat

Citirea si afisarea unui vector - Divide et Impera

Teste propuse pentru Bacalaureat, Informatica, 2020