1 #include <iostream>
2 #include <fstream>
3 #include <string>
4 #include <stdlib.h>
5
6 using namespace std;
7
8 struct uz{
9 int n, r; // n - nap sorszáma, r - amatőr rádiós azonosítója
10 string uzenet;
11 } adas[220]; //11 nap 20 rádiós, max 11*20=220 adás lehet
12
13 int N; // Fájlból beolvasott sorok száma, azaz az ADAS tömb elemeinek száma
14
15 void kiir(int ssz)
16 {
17 cout << "----------------------------------" << endl;
18 cout << ssz << ". feladat" << endl;
19 cout << "----------------------------------" << endl;
20 }
21
22 void F1()
23 {
24 string enter;
25
26 ifstream fbe;
27 fbe.open("veetel.txt");
28 int i=0;
29 while(!fbe.eof())
30 {
31 fbe >> adas[i].n;
32 fbe >> adas[i].r;
33
34 cout << i << " " << adas[i].n << " " << adas[i].r << endl;
35
36 getline(fbe,enter); //Muszáj beolvasni egyet a getline-nal, hogy a következő getline a rendes sort olvassa be!!!
37 getline(fbe,adas[i].uzenet);
38 cout << adas[i].uzenet << endl;
39
40 i++;
41 }
42 fbe.close();
43 N=i-1; // A szokásos forrásfájlvégi üres sor miatt!!!!
44 cout << "Adatok száma: " << N << endl;
45 }
46
47 void F2()
48 {
49 //Egy hülye feladat...
50 cout << "Az első üzenet rögzítője: " << adas[0].r << endl;
51 cout << "Az utolsó üzenet rögzítője: " << adas[N-1].r << endl;
52 }
53
54 void F3()
55 {
56 string keres="farkas";
57 int talal;
58
59 for(int i=0;i<N;i++) //kiválogatás
60 {
61 talal=adas[i].uzenet.find("farkas");
62 if(talal>=0)
63 {
64 cout << adas[i].n << ". nap " << adas[i].r << ". rádióamatőr" << endl;
65 }
66 }
67 }
68
69 void F4()
70 {
71 int napok[11]={0};
72 for(int i=0;i<N;i++) //megszámlálás, egy tipikus feladat (LOTTÓ, stb.)
73 {
74 napok[adas[i].n-1]++;
75 }
76 //kiírás
77 for(int i=0;i<11;i++)
78 {
79 cout << i+1 << ". nap: " << napok[i] << " rádióamatőr" << endl;
80 }
81 }
82
83 void F5()
84 {
85 string alap="";
86 for(int i=0;i<90;i++) alap=alap+'#'; // Létrehozunk egy alap szöveget 90 # karakterből
87
88 string ujuzenet[11]; // Ebben lesznek a helyreállított üzenetek a 11 napra vonatkozóan
89 for(int i=0;i<11;i++) ujuzenet[i]=alap; //Kezdetben csupa # karaktert talrtalmaznak, 90 hosszúságban
90 for(int i=0;i<N;i++) //Minden adatot megnézünk
91 {
92 for(int j=0;j<90;j++) //Minden eredeti üzenet is 90 karakteres
93 {
94 if(adas[i].uzenet[j]!='#') //Ha nem #-t tartalmazó karakternél vagyunk, akkor...
95 {
96 ujuzenet[adas[i].n-1][j]=adas[i].uzenet[j]; //Az adott napnak megfelelő (adas[i].n-1) új üzenet megkapja az adott
97 //eredeti üzenet karakterét! Kihasználjuk, hogy nincs ellentmondás
98 //az egyes üzenetek között
99 }
100 }
101 }
102
103 //Kiírás a képernyőre és a fájlba is!
104 ofstream fki;
105 fki.open("adaas.txt");
106 for(int i=0;i<11;i++)
107 {
108 cout << i+1 << ". nap: " << ujuzenet[i] << endl;
109 fki << ujuzenet[i] << endl;
110 }
111 fki.close();
112 }
113
114 bool szame(string szo)
115 {
116 bool valasz=true;
117 for(int i=0;i<szo.length();i++)
118 {
119 if(szo[i]<'0' || szo[i]>'9') valasz=false;
120 }
121 return valasz;
122 }
123
124 void F7()
125 {
126 int nap, radios, felnott, kolyok, found;
127 string f_temp,k_temp;
128 cout << "Adja meg a nap sorszámát! "; cin >> nap;
129 cout << "Adja meg a rádióamatőr sorszámát! "; cin >> radios;
130 int i=0, p1, p2;
131 //KERESÉS
132 while(i<N&&!(adas[i].n==nap&&adas[i].r==radios))
133 {
134 i++;
135 }
136 if(i<N)
137 {
138 p1=adas[i].uzenet.find('/');
139 f_temp=adas[i].uzenet.substr(0,p1);
140 p2=adas[i].uzenet.find(' ');
141 k_temp=adas[i].uzenet.substr(p1+1,p2-p1-1);
142
143 if(szame(f_temp)&&szame(k_temp))
144 {
145 felnott=atoi(f_temp.c_str());
146 kolyok=atoi(k_temp.c_str());
147
148 cout << "Megfigyelt egyedek száma: " << felnott+kolyok;
149 }
150 else
151 {
152 cout << "Nincs információ";
153 }
154 }
155 else
156 {
157 cout << "Nincs ilyen feljegyzés";
158 }
159
160 cout << endl;
161 }
162
163 int main()
164 {
165 setlocale(LC_ALL, "hun");
166 kiir(1);
167 F1();
168 kiir(2);
169 F2();
170 kiir(3);
171 F3();
172 kiir(4);
173 F4();
174 kiir(5);
175 F5();
176 kiir(7);
177 F7();
178 return 0;
179 }