Zadanko, operacje na plikach

0

Witam, dostałem na zajęciach zadanie z operacji na plikach, co prawda udało mi się je zrobić ale wydaje mi się to trochę przekombinowane i zastanawiam się czy i jak to zrobić "ładniej", gdyż od tego zależy moja ocena. ( w załączniku plik .txt z adresami do zadania )

Zaprojektować i zaimplementować funkcję wyszukującą w pliku tekstowym osób o podanym
numerze GaduGadu oraz wypisującą na standardowe wyjście jej imię i wiek (liczba lat w bieżącym
roku). Dane pobrać z pliku z danymi o następujcym formacie:
numer_gg adres@email rok_urodzenia imie;
np.
12345 [email protected] 1999 Alicja;
2345 [email protected] 2000 Aleksandra;

 
#include <iostream>
#include <cstring>
#include <fstream>
#include <cstdlib>

using namespace std;

void czytaj(ifstream &fin, const string numer)
{
    string str= "abc";
    int x=0;
    while(str != numer)
    {
        fin>>str;
    }
    fin>>str;
    int y;
    fin>>y;
    x = 2013 - y;
    cout<<"\n\n"<<x<<endl;
    fin>>str;
    cout<<str<<endl;
}

int main()
{
    string numer;
    cout<<"Podaj szukany numer gg"<<endl;
    cin>>numer;
    ifstream fin;
    fin.open("adresy.txt");
    if(!fin.good())
    {
        cerr<<"blad otwarcia pliku z adresami"<<endl;
        fin.ignore();
        fin.clear();
        fin.close();
        exit(EXIT_FAILURE);
    }
    czytaj(fin, numer);

    fin.close();
    return 0;
}
0

np:

12345 [email protected] 1999 Alicja;
666 zlośliwe@dane 3333 Satan;
2345 [email protected] 2000 Aleksandra;

i szukaj numer 3333

0

Hmm pokombinuję, aczkolwiek nie wiem dlaczego gdy adresy są jeden pod drugim to wyrzuca mi błąd z plikiem

0

Miałem dzisiaj trochę czasu więc wyszło mi coś takiego

 #include <iostream>
#include <cstring>
#include <fstream>
#include <cstdlib>

using namespace std;

struct uzytkownicy           
{
    int gg;
    string email;
    int wiek;
    string imie;
};

void czytaj(ifstream &fin, uzytkownicy *adresy)   
{
    for(int i=0; i<7; i++)                       
    {
        fin>>adresy[i].gg;
        fin>>adresy[i].email;
        fin>>adresy[i].wiek;
        adresy[i].wiek = 2013 - adresy[i].wiek;
        fin>>adresy[i].imie;
    }
}

void szukaj( int numer, uzytkownicy *adresy)
{
    int i;
    for( i=0; i<7; i++)
    {
        if ( numer == adresy[i].gg)
        {
            cout<<"\nImie: "<<adresy[i].imie<<endl;
            cout<<"wiek: "<<adresy[i].wiek<<endl;
            break;
        }
    }
    if (numer != adresy[i].gg)
        cout<<"\nNie ma takiego numeru"<<endl;
}

int main()
{

    ifstream fin;
    fin.open("adresy.txt");
    if(!fin.good())
    {
        cerr<<"blad otwarcia pliku z adresami"<<endl;
        fin.ignore();
        fin.clear();
        fin.close();
        exit(EXIT_FAILURE);
    }
    int numer;
    cout<<"Podaj szukany numer gg"<<endl;
    cin>>numer;

    uzytkownicy adresy[7];           

    czytaj(fin, adresy);
    szukaj(numer, adresy);

    fin.close();
    return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1