Cod sursa(job #2130797)

Utilizator me.justmeAndreea Ion me.justme Data 13 februarie 2018 22:02:03
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 3.33 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("date1.in");
ofstream out("date1.out");
int n;
struct persoana
{
    char nume[20];
    char prenume[20];
    char numar[11];
    char email[50];

} contact[100];

void citire(int &p)
{
    in>>n;
    for(int i=1; i<=p; i++)
    {
        in>>contact[i].nume;
        in>>contact[i].prenume;
        in>>contact[i].numar;
        in>>contact[i].email;
    }
}
void adaug(int &i)
{
    cout<<"Numele contactului: ";
    cin>>contact[i].nume;
    cout<<"Prenumele contactului: ";
    cin>>contact[i].prenume;
    cout<<"Numarul de telefon al contactului: ";
    cin>>contact[i].numar;
    cout<<"E-mailul contactului: ";
    cin>>contact[i].email;
    i++;
}
void afisare(int &m)
{
    for(int i = 0; i <= m; i++)
    {
        cout<<contact[i].nume<<" ";
        cout<<contact[i].prenume<<" ";
        cout<<contact[i].numar<<" ";
        cout<<contact[i].email<<endl;
    }
}
void sortare(int &q)
{
    for(int i=1; i<q; i++)
        for(int j=i+1; j<=q; j++)
            if(strcmp(contact[i].nume, contact[j].nume)>0)
                swap(contact[i], contact[j]);
            else if(strcmp(contact[i].nume, contact[j].nume)==0)
                    if(strcmp(contact[i].prenume, contact[j].prenume)>0)
                        swap(contact[i], contact[j]);
}
char nume_stergere[20];
char prenume_stergere[20];
char numar_stergere[11];
char email_stergere[50];
int h;
void stergere(int &r)
{
    cout<<"Numele contactului pe care il stergeti: ";
    cin>>nume_stergere;
    cout<<"Prenumele contactului pe care il stergeti: ";
    cin>>prenume_stergere;
    cout<<"Numarul de telefon al contactului pe care il stergeti: ";
    cin>>numar_stergere;
    cout<<"E-mailul contactului pe care il stergeti: ";
    cin>>email_stergere;
    int i;
    for(i=1; i<=r; i++)
        if(strstr(contact[i].nume, nume_stergere)&&strstr(contact[i].prenume, prenume_stergere)&&strstr(contact[i].numar, numar_stergere)&&strstr(contact[i].email, email_stergere))
        {
            for(int j=i; j<r; j++)
                contact[j]=contact[j+1];
            r--;
            h=1;
        }
    if(h==1)
        cout<<"Contactul a fost sters!"<<endl;
    else
        cout<<"\nDatele introduse nu sunt corecte sau contactul nu se afla in agenda telefonica. Puteti repeta incercarea alegand optiunea 2."<<endl;
}
int main()
{
    int optiune;
    cout<<"MENIU"<<endl;
    cout<<"Daca doriti sa adaugati un contact apasati tasta: 1"<<endl;
    cout<<"Daca doriti sa stergeti un contact apasati tasta: 2"<<endl;
    cout<<"Daca doriti sa afisati lista de contacte apasati tasta: 3"<<endl<<endl;
    citire(n);
    sortare(n);
    n++;
    char tasta[]="da";
    while(strchr(tasta,'da')||strchr(tasta,'DA')||strchr(tasta,'Da'))
    {
    cout<<"Optiunea este: ";
    cin>>optiune;
    switch (optiune)
		{
		case 1:
		    {
		        adaug(n);
		        sortare(n);
                break;
		    }

        case 2:
            {
                stergere(n);
                sortare(n);
                break;
            }
		case 3:
		    {
		        afisare(n);
			    break;
		    }

		}
    cout<<"Doriti sa alegeti alta optiune? Daca da, tastati <<da>>. "<<endl;
    cin>>tasta;
    }
    return 0;
}