Program pobierający dane z pliku tekstowego

0

Mam zrobić program obliczający ilośc
połączeń z każdego numeru i wypisać max ilość połączeń
oraz podać z jakiego numeru (dane pobieramy z pliku telefony.txt).
Błagam, pomózcie bo nie mam pomysłu jak to poprawić:

#include<iostream>
#include<string>
#include<fstream>
#include<sstream>

using namespace std;

int main()
{
ifstream dane("telefony.txt");
if(!dane)
   {
    cout<<"Nie ma takiego dokumentu"<<endl;
    system("pause");
    return 1;
   }
//--------------------------------
string linia,telefon;
int i=0;
int j=0;
int k=0;
int rozmiar=1000;
int tel=0;
string tab[rozmiar];
while (getline(dane,linia))
 {
 telefon=linia.substr(0,linia.length());
 tab[i]=telefon;
 i++;
 };
system("cls");
//--------------------------------  
for(j=0;j<rozmiar;j++)
{
k=0;
for(i=0;i<rozmiar;i++)
{
if (tab[j]==tab[i]) k++;
}

cout<<tab[j]<<"  "<<k<<"raz/y"<<endl;
}

cout<<endl<<"Najwiecej (45 razy) dzwoniono z numeru 728 257 806"<<endl;
//--------------------------------
dane.close();
system("pause");
}

 
0

Wczytujesz sobie numer z pliku, i przy zapisaniu go do jakiegoś stringa czy tablicy stringów, porównujesz ze wszystkimi wcześniejszymi zapisanymi numerami. Jesli taki już jest, zwiększasz sobie ilość jego wystąpień i 1, a jeśli nie ma, dopisujesz na koniec. Gdy wczytasz cały plik sprawdzasz przy którym z numerów jest największa wartość i to wypisujesz.

0

dalej nie wiem jak to skubnąc moze któs napisze jak to powinno wyglądać?
napisze mi to ktoś w kodzie?? Proszę bardzo.

0

Hmm mialem chwile to napisałem calosc, sprawdz czy daje Ci dobry wyniki(czy sie nie pomylilem gdzies:P)
Dalem wmiare sporo kometarza wiec powinno byc zrozumiale
Kod:

#include <iostream>
#include <string>
#include <vector>
#include<fstream>
using namespace std;

int main(){

ifstream dane("telefony.txt");
if(!dane)
{
	cout<<"Nie ma takiego dokumentu"<<endl;
	system("pause"); // chyba lepiej nie uzywac polecen systemowych do zatrzymania okienka konsoli
	return 1;
} // do tego momentu copy/paste od ciebie

vector<string> telefony; // vector na nasze telefony w postaci stringow
vector<int> ileWystapien; // kolejny vector ktory przechowa ilosc wystapien telefonu o tym samym indeksie
// zamiast 2 vectorow pewnie lepiej zrobic strukture zawierajaca obie te rzeczy i jeden vector

string telefon; // do tego stringa pobieramy linijke z telefonem
while (getline(dane, telefon)){
	bool czyZnaleziono = false; // potrzebne do sprawdzania czy dany numer istnieje juz w naszym vectorze
	for(int i = 0; i < telefony.size(); i++){
		if(telefon == telefony[i]){
			ileWystapien[i]+=1; // jesli juz istnial to ilosc wystapien jest zwiekszana o 1
			czyZnaleziono = true; // wiec juz nie bedziemy chcieli dodac nowego elementu do vectora
		}
	}
	if(czyZnaleziono==false){
		telefony.push_back(telefon);
		ileWystapien.push_back(1);
	}
}

//o ile nic nie pomylilem to znajdujemy tutaj najwiekszy element w vectorze :)
int max = ileWystapien[0];
int numer = 0;
for(int j = 0; j < ileWystapien.size(); j++){
	if(ileWystapien[j] > max){
		max = ileWystapien[j];
		numer = j;
	}
}

//wypisywanie
for(int k = 0; k < telefony.size(); k++){
	cout << telefony[k] << " wystapil " << ileWystapien[k] << " razy\n";
}
cout << "Max to numer " << telefony[numer] << " wystapil " << max << " razy\n";
return 0;

}

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