Mam podany plik w której pierwszy jest rozmiar(ilość linii)
następnie tekst w każdej linii tekst w postaci:
Jan Kowalski 2015
program ma zapisać do tablicy tylko "2015" itd a następnie zapisać do pliku
zrobiłem taki kod kompiluje się lecz nie działa i nie mogę znaleźć błędu
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
using namespace std;
string *wczytaj(ifstream &plik, int &n){
string linia;
getline(plik, linia);
n=atoi(linia.c_str());
string* t= new string [n];
for(int i=0; i<n; i++)
plik>>t[i];
return t;
}
string *znajdz(string* t, const int n, int &ilosc){
ilosc=0;
int j=0;
for(int i=0; i<n; i++){
if (t[i].find("20") != string::npos)
ilosc++;
}
string *t2= new string[ilosc];
for(int i=0; i<n; i++){
if (t[i].find("20") != string::npos){
t2[j]=t[i];
j++;
}
}
return t2;
}
void zapdopliku(ofstream &z, string*t, const int n){
z<<n<<endl;
for(int i=0; i<n ;i++)
z<<t[i]<<endl;
}
int main()
{
ifstream plik;
plik.open("dane.txt");
if(!plik.good()){
cout<<"Blad na pliku!"<<endl;
exit(-1);
}
ofstream zapisz;
zapisz.open("zapisuje_dane.txt");
int rozmiar=0, rozmiar2=0;
string* tab=0;
string* tab2=0;
tab=wczytaj(plik, rozmiar);
tab2=znajdz(tab, rozmiar, rozmiar2);
cout<<rozmiar2<<endl;
for(int i=0; i<rozmiar2; i++)
cout<<tab2[i]<<endl;
zapdopliku(zapisz, tab2, rozmiar2);
plik.close();
zapisz.close();
if(tab!=0)
delete []tab;
if(tab!=0)
delete []tab2;
return 0;
}