A feladat leírását, melynek a megoldását közzéteszem, innen töltheted le.
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;
class uzenet
{
public:
int ora;
int perc;
string szam;
string uzenet;
int hossz;
string toString()
{
stringstream ss;
ss << "ora: " << ora << ", perc: " << perc
<< ", szam: " << szam << ", uzenet: "
<< uzenet << endl;
return ss.str();
}
};
int main()
{
// 1. feladat
cout << endl << "1. feladat" << endl;
int meret;
ifstream input("sms.txt");
input >> meret;
uzenet uzenetek[meret];
string tmp;
for( int i = 0; i < meret; i++ )
{
input >> uzenetek[i].ora >> uzenetek[i].perc >> uzenetek[i].szam;
input.get();
/* vagy
input >> uzenetek[i].ora >> uzenetek[i].perc >> uzenetek[i].szam;
getline(input, tmp);
*/
/* vagy
input >> uzenetek[i].ora >> uzenetek[i].perc >> uzenetek[i].szam;
input.ignore(1, '\n');
*/
getline(input, uzenetek[i].uzenet);
uzenetek[i].hossz = uzenetek[i].uzenet.length();
// cout << uzenetek[i].toString();
}
// 2. feladat
cout << endl << "2. feladat" << endl;
if( meret > 10 )
{
cout << uzenetek[9].uzenet << endl;
}
else
{
cout << uzenetek[meret-1].uzenet << endl;
}
// 3. feladat
cout << endl << "3. feladat" << endl;
int min = 0;
int max = 0;
for( int i = 1; i < meret; i++ )
{
if( uzenetek[i].hossz > uzenetek[max].hossz )
{
max = i;
}
if( uzenetek[i].hossz < uzenetek[min].hossz )
{
min = i;
}
}
cout << "A leghosszabb uzenet adatai: " << uzenetek[max].ora
<< " " << uzenetek[max].perc << " " << uzenetek[max].szam
<< " " << uzenetek[max].uzenet << endl;
cout << "A legrovidebb uzenet adatai: " << uzenetek[min].ora
<< " " << uzenetek[min].perc << " " << uzenetek[min].szam
<< " " << uzenetek[min].uzenet << endl;
// 4. feladat
cout << endl << "4. feladat" << endl;
int hosszok[5] = {0};
for( int i = 0; i < meret; i++ )
{
if( uzenetek[i].hossz <= 20 )
{
hosszok[0]++;
}
else if( uzenetek[i].hossz >= 21 && uzenetek[i].hossz <= 40 )
{
hosszok[1]++;
}
else if( uzenetek[i].hossz >= 41 && uzenetek[i].hossz <= 60 )
{
hosszok[2]++;
}
else if( uzenetek[i].hossz >= 61 && uzenetek[i].hossz <= 80 )
{
hosszok[3]++;
}
else // a többi úgyis maximum 100 hosszú lehet
{
hosszok[4]++;
}
// valójában nem kell ennyi vizsgálat, ha megfelelő sorrendben vizsgáljuk
/*
if( uzenetek[i].hossz <= 20 )
{
hosszok[0]++;
}
else if( uzenetek[i].hossz <= 40 )
{
hosszok[1]++;
}
else if( uzenetek[i].hossz <= 60 )
{
hosszok[2]++;
}
else if( uzenetek[i].hossz <= 80 )
{
hosszok[3]++;
}
else
{
hosszok[4]++;
}
*/
}
cout << "1-20 " << hosszok[0] << endl;
cout << "21-40 " << hosszok[1] << endl;
cout << "41-60 " << hosszok[2] << endl;
cout << "61-80 " << hosszok[3] << endl;
cout << "81-100 " << hosszok[4] << endl;
/* 4. feladat megoldása többszörös megszámlálással
int hosszok[5] = {0};
for( int i = 0; i < meret; i++ )
{
hosszok[(uzenetek[i].hossz-1) / 20]++;
}
cout << "1-20 " << hosszok[0] << endl;
cout << "21-40 " << hosszok[1] << endl;
cout << "41-60 " << hosszok[2] << endl;
cout << "61-80 " << hosszok[3] << endl;
cout << "81-100 " << hosszok[4] << endl;
*/
// 5. feladat
cout << endl << "5. feladat" << endl;
int orak[24] = {0};
for( int i = 0; i < meret; i++ )
{
orak[uzenetek[i].ora]++;
}
int szum = 0;
for( int i = 0; i < 24; i++ )
{
if( orak[i] > 10 )
{
szum += orak[i] - 10;
}
}
cout << szum << endl;
// 6. feladat
cout << endl << "6. feladat" << endl;
int db = 0;
for( int i = 0; i < meret; i++ )
{
if( uzenetek[i].szam == "123456789" )
{
db++;
}
}
if( db < 2 )
{
cout << "nincs elegendo uzenet" << endl;
}
else
{
int barino[db];
db = 0;
for( int i = 0; i < meret; i++ )
{
if( uzenetek[i].szam == "123456789" )
{
barino[db] = uzenetek[i].ora*60 + uzenetek[i].perc;
db++;
}
}
max = barino[1] - barino[0];
for( int i = 2; i < db; i++ )
{
if( barino[i] - barino[i-1] > max )
{
max = barino[i] - barino[i-1];
}
}
cout << max / 60 << ":" << max % 60 << endl;
}
// 7. feladat
cout << endl << "7. feladat" << endl;
int meret2 = meret+1;
uzenet uzenetek2[meret+1];
for( int i = 0; i < meret; i++ )
{
uzenetek2[i] = uzenetek[i];
}
cout << "Ora: ";
cin >> uzenetek2[meret2-1].ora;
cout << "Perc: ";
cin >> uzenetek2[meret2-1].perc;
cout << "Telefonszam: ";
cin >> uzenetek2[meret2-1].szam;
cin.get();
cout << "Uzenet: ";
getline(cin, uzenetek2[meret2-1].uzenet);
uzenetek2[meret2-1].hossz = uzenetek2[meret2-1].uzenet.length();
for( int i = 0; i < meret2; i++ )
{
cout << uzenetek2[i].toString();
}
// 8. feladat
cout << endl << "8. feladat" << endl;
ofstream output("smski.txt");
for( int i = 0; i < meret2-1; i++ )
{
for( int j = i+1; j < meret2; j++ )
{
if( uzenetek2[i].szam > uzenetek2[j].szam )
{
uzenet csere = uzenetek2[i];
uzenetek2[i] = uzenetek2[j];
uzenetek2[j] = csere;
}
}
}
string elozo = "";
for( int i = 0; i < meret2; i++ )
{
if( uzenetek2[i].szam != elozo )
{
output << uzenetek2[i].szam << endl;
elozo = uzenetek2[i].szam;
}
output << uzenetek2[i].ora << " " << uzenetek2[i].perc
<< " " << uzenetek2[i].uzenet << endl;
}
return 0;
}
Ha hibát találsz benne, kérlek jelezd!

A feladatot nem sikerült helyesen linkelni. Valami focival kapcsolatos feladatleírás van ott.
Köszönöm, elvileg javítottam.