Witam,
Mam takie zadanie:
Na dysku jest plik, gdzie dane są zapisane w takim formacie
4
11 22 33 44
3
11 222 22
gdzie, pierwsza liczba określa ilość liczb w pierwszym ciągu, następnie są liczby z tego ciągu, później liczba określająca ilość liczb w drugim ciągu i poniżej te liczby. Mam je odczytać z pliku, sprawdzić czy liczby w ciągu się powtarzają oraz dać na wyjście ile liczb się powtórzyło i je wypisać np.
2
11
22
Napisałem taki kod:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void otworz(ifstream &file)
{
while(true)
{
string nazwa_pliku;
cout << "Podaj nazwe pliku : ";
getline(cin,nazwa_pliku);
file.open(nazwa_pliku.c_str());
if(file.is_open()) return;
file.open((nazwa_pliku+".txt").c_str());
if(file.is_open()) return;
cout<<"Podana nazwa pliku jest nieprawidłowa! Plik nie istnieje"<<endl;
}
};
unsigned odczyt (ifstream &file, int &m, int &n)
{
int i;
file >> m;
unsigned int *T_1 = new unsigned int [m];
for (i=0; i<=m; i++)
{
file >> T_1[i];
};
file >> n;
unsigned int *T_2 = new unsigned int [n];
for (i=0; i<=n; i++)
{
file >> T_2[i];
};
};
void porownaj (ifstream &file, int &m, int &n, unsigned *T_1, unsigned *T_2)
{
int a,b,c,liczba_powtorzen;
unsigned int *T_3= new unsigned int [m];
liczba_powtorzen=0;
for (a=0; a<=m; a++)
{
for(b=0; b<=n; b++)
{
if (T_1[a] == T_2[b])
for (c=0; c<liczba_powtorzen || T_2[c] == T_3[liczba_powtorzen]; c++)
{
if (T_2[c] != T_3[liczba_powtorzen])
T_2[c] = T_3[liczba_powtorzen];
};
};
};
cout<<"liczba powtorzen to: "<<liczba_powtorzen;
};
int main()
{
int m,n;
ifstream file;
otworz(file);
odczyt(file,m,n);
porownaj(file,m,n);
getchar();
getchar();
return 0;
}
Zamieszałem się jednak kompletnie w przekazywaniu zmiennych pomiędzy funkcjami, jak to rozpisać, żeby działało?
Z góry dzięki za pomoc,