Cześć mam pewien problem, ponieważ gdy wczytuje dane jednego użytkownika z pliku tekstowego to pokazuje mi oprócz tych danych jeszcze jedna szufladka w której pokazuje tylko Id a reszta jest pusta i nie mam pojęcia jak to rozwiązać próbowałem różnych metod stosując chyba prawidłowo, ale nie przynosiło skutku. Podsyłam cały kod żeby był kontekst, ale błąd występuje w częsci 101 linia/131 linia mniej więcej
Edit: Chyba dostrzegłem problem, bo zmienna Id jest pobierana ze zmiennej x i ona się zwiększa mimo wszystko w praktyce niezbyt wiem jak to rozwiązać.
#include <iostream>
#include <windows.h>
#include <string>
#include <fstream>
#include <cstdlib>
#include <regex>
using namespace std;
string hello,obrys,odpowiedz,komenda,dom;
int wynik=0,x=1;
int nr_linii=1;
regex regimie("[A-Z]{1}[a-z]{2,19}");
regex regnazwisko("[A-Z]{1}[a-z]{1,19}");
regex regmiejscowosc("[A-Z]{1}[A-Za-z\\-?\\s?]{2,39}");
regex regkod_pocztowy("[0-9]{2}-[0-9]{3}");
regex regulica("[A-Za-z0-9\\s\\-]{3,40}");
regex regnr_domu("[1-9]{1,3}[A-Z]{1,3}");
regex regnr_mieszkania("[1-9]{1,3}");
regex regpesel("[0-9]{11}");
regex regtelefon("[0-9]{9}");
regex regstan_konta("[0-9]{0,},[0-9]{2}");
bool regi;
bool regnazw;
bool regm;
bool regkod;
bool regul;
bool regnrdomu;
bool regnrm;
bool regpes;
bool regtel;
bool regstan;
string plik_tekstowy;
struct uzytkownik
{
string Id=to_string(x);
string obryss="=========================";
bool PF=false;
string imie;
string nazwisko;
string miejscowosc;
string ulica;
string kod_pocztowy;
string nr_domu;
string pesel;
string nr_tel;
string stan_konta;
string nr_mieszkania;
};
uzytkownik uzytkownicy[1000];
fstream plik;
void help();
void add();
void create();
void save();
int main()
{
obrys = ("====================================================================");
for(int i = 0; i < obrys.length() ; i++){
cout << obrys[i];
Sleep(10);}
cout<<endl;
hello = ("Witaj w mojej bazie danych \njezeli chcesz otrzymac pomoc jakie wpisywac polecenia wpisz help,\njesli chcesz zaczac dzialac wpisz jakas komende");
for(int i = 0; i < hello.length() ; i++){
cout << hello[i];
Sleep(10);}
cout<<endl;
for(int i = 0; i < obrys.length() ; i++){
cout << obrys[i];
Sleep(10);}
cout<<endl;
for(;;)
{
cout<<"<Podaj polecenie>: ";
cin>>komenda;
if(komenda=="help")
{
help();
continue;
}
else if (komenda=="create")
{
cout<<"Podaj nazwe pliku tekstowego do ktorego maja byc zapisane dane bez rozszerzenia .txt: ";
cin>>plik_tekstowy;
plik.open((plik_tekstowy+".txt"),ios::in);
if(plik.good()==true)
{
cout<<"baza zostala wybrana"<<endl;
}
else if(plik.good()==false)
{
cout<<"Utworzono baze danych"<<endl;
}
string linia;
int nr_linii=1;
int nowa_linia=1;
while(getline(plik,linia))
{
switch(nowa_linia)
{
case 1:uzytkownicy[x].Id=linia;break;
case 2:uzytkownicy[x].imie=linia;break;
case 3:uzytkownicy[x].nazwisko=linia;break;
case 4:uzytkownicy[x].miejscowosc=linia;break;
case 5:uzytkownicy[x].ulica=linia;break;
case 6:uzytkownicy[x].kod_pocztowy=linia;break;
case 7:uzytkownicy[x].nr_mieszkania=linia;break;
case 8:uzytkownicy[x].nr_domu=linia;break;
case 9:uzytkownicy[x].pesel=linia;break;
case 10:uzytkownicy[x].nr_tel=linia;break;
case 11:uzytkownicy[x].stan_konta=linia;break;
case 12:uzytkownicy[x].obryss=linia;break;
}
nr_linii++;
nowa_linia++;
if(nowa_linia==12)
{
x++;
nowa_linia=1;
}
uzytkownicy[x].PF=true;
}
plik.close();
continue;
}
else if (komenda=="add")
{
if(x==1000)
{
cout<<"baza jest pelna"<<endl;
continue;
}
else
add();
x++;
continue;
}
else if(komenda=="show")
{
for(x=1;x<=1000;x++)
{
if(uzytkownicy[x].PF==true)
{
cout<<"Id: "<<x<<endl;
cout<<"imie: " <<uzytkownicy[x].imie<<endl;
cout<<"nazwisko: " <<uzytkownicy[x].nazwisko<<endl;
cout<<"miejscowosc: " <<uzytkownicy[x].miejscowosc<<endl;
cout<<"Ulica: " <<uzytkownicy[x].ulica<<endl;
cout<<"kod_pocztowy: " <<uzytkownicy[x].kod_pocztowy<<endl;
cout<<"numerr_mieszkania: " <<uzytkownicy[x].nr_mieszkania<<endl;
cout<<"nr_domu: " <<uzytkownicy[x].nr_domu<<endl;
cout<<"pesel: " <<uzytkownicy[x].pesel<<endl;
cout<<"numer_telefonu: " <<uzytkownicy[x].nr_tel<<endl;
cout<<"stan_konta: " <<uzytkownicy[x].stan_konta<<endl;
cout<<uzytkownicy[x].obryss<<endl;
}
else
break;
}
continue;
}
else if(komenda=="close")
{
plik.close();
cout<<"Zamknieto baze danych";
continue;
}
else if(komenda=="delete")
{
cout<<"aedd"<<endl;
continue;
}
else if(komenda=="change")
{
cout<<"acdd"<<endl;
continue;
}
else if(komenda=="search")
{
cout<<"asdd"<<endl;
continue;
}
else if(komenda=="save")
{
plik.open(plik_tekstowy+".txt", ios::in | ios::app);
save();
plik.close();
continue;
}
else
{
cout<<"nie ma takiej komendy"<<endl;
continue;
}
}
return 0;
}
void help()
{
cout<<"================================================"<<endl;
cout<<"add - dodaj wiersz z informacjami o uzytkowniku "<<endl;
cout<<"close - zamykanie bazy danych "<<endl;
cout<<"delete - usuwanie uzytkownika z bazy danych"<<endl;
cout<<"change - zmiana danych uzytkownika "<<endl;
cout<<"search - wyszukaj uzytkownika/ow "<<endl;
cout<<"show - pokaz baze danych"<<endl;
cout<<"create - sluzy do utworzenia bazy danych\nale rowniez i do wybrania jezeli o danej nazwie baza istnieje"<<endl;
cout<<"================================================"<<endl;
}
void add()
{
for(int i=1;i<=10;i++)
{
uzytkownicy[x].PF=true;
if(i==1)
{
cout<<"Podaj imie: ";
getline(cin,uzytkownicy[x].imie);
regi=regex_match(uzytkownicy[x].imie,regimie);
if(regi==false)
{
cout<<"blad";
cout<<endl;
i--;
}
else
{
i++;
}
}
if(i==2)
{
cout<<"Podaj nazwisko: ";
getline(cin,uzytkownicy[x].nazwisko);
regnazw=regex_match(uzytkownicy[x].nazwisko,regnazwisko);
if(regnazw==false)
{
cout<<"blad";
cout<<endl;
i--;
}
else
{
i++;
}
}
if(i==3)
{
cout<<"Podaj miejscowosc: ";
getline(cin,uzytkownicy[x].miejscowosc);
regm=regex_match(uzytkownicy[x].miejscowosc,regmiejscowosc);
if(regm==false)
{
cout<<"blad";
cout<<endl;
i--;
}
else
{
i++;
}
}
if(i==4)
{
cout<<"Podaj kod pocztowy: ";
getline(cin,uzytkownicy[x].kod_pocztowy);
regkod=regex_match(uzytkownicy[x].kod_pocztowy,regkod_pocztowy);
if(regkod==false)
{
cout<<"blad";
cout<<endl;
i--;
}
else
{
i++;
}
}
if(i==5)
{
cout<<"Podaj ulice: ";
getline(cin,uzytkownicy[x].ulica);
regul=regex_match(uzytkownicy[x].ulica,regulica);
if(regul==false)
{
cout<<"blad";
cout<<endl;
i--;
}
else
{
i++;
}
}
if(i==6)
{
cout<<"Podaj nr domu: ";
getline(cin,uzytkownicy[x].nr_domu);
regnrdomu=regex_match(uzytkownicy[x].nr_domu,regnr_domu);
if(regnrdomu==false)
{
cout<<"blad";
cout<<endl;
i--;
}
}
if(i==7)
{
cout<<"Podaj nr mieszkania: ";
getline(cin,uzytkownicy[x].nr_mieszkania);
regnrm=regex_match(uzytkownicy[x].nr_mieszkania,regnr_mieszkania);
if(regnrm==false)
{
cout<<"blad";
cout<<endl;
i--;
}
else
{
i++;
}
}
if(i==8)
{
cout<<"Podaj pesel: ";
getline(cin,uzytkownicy[x].pesel);
regpes=regex_match(uzytkownicy[x].pesel,regpesel);
if(regpes==false)
{
cout<<"blad";
cout<<endl;
i--;
}
else
{
i++;
}
}
if(i==9)
{
cout<<"Podaj nr telefonu: ";
getline(cin,uzytkownicy[x].nr_tel);
regtel=regex_match(uzytkownicy[x].nr_tel,regtelefon);
if(regtel==false)
{
cout<<"blad";
cout<<endl;
i--;
}
else
{
i++;
}
}
if(i==10)
{
cout<<"Podaj stan konta: ";
getline(cin,uzytkownicy[x].stan_konta);
regstan=regex_match(uzytkownicy[x].stan_konta,regstan_konta);
if(regstan==false)
{
cout<<"blad";
cout<<endl;
i--;
}
else
cout<<"Dodano uzytkownika"<<endl;
}
}
}
void save()
{
for(x=1;x<=1000;x++)
{
if(uzytkownicy[x].PF==true)
{
plik<<uzytkownicy[x].Id<<endl;
plik<<uzytkownicy[x].imie<<endl;
plik<<uzytkownicy[x].nazwisko<<endl;
plik<<uzytkownicy[x].miejscowosc<<endl;
plik<<uzytkownicy[x].ulica<<endl;
plik<<uzytkownicy[x].kod_pocztowy<<endl;
plik<<uzytkownicy[x].nr_mieszkania<<endl;
plik<<uzytkownicy[x].nr_domu<<endl;
plik<<uzytkownicy[x].pesel<<endl;
plik<<uzytkownicy[x].nr_tel<<endl;
plik<<uzytkownicy[x].stan_konta<<endl;
plik<<uzytkownicy[x].obryss<<endl;
}
else
break;
}
}
![test.PNG](https://4programmers.net/assets/36748/xgkLmK8gY1PPHfljJvRUfuEEpSuALDsnivjXQio7.png)