Sorozat: valahány szám egymás mellett
Általában meg lesz adva az is, hogy hány elemű.
Pl.
5
10 20 30 40 50
Hogy tudjuk beolvasni?
Pl. számítsuk ki az elemek összegét egy
sorozatban (adott az elemek száma, majd
az elemek).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| #include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int osszeg = 0;
// n-szer:
// beolvasunk és hozzáadjuk az összeghez
for (int i = 1; i <= n; i++) {
int szam;
cin >> szam;
//cout << "bejott " << szam << endl;
osszeg = osszeg + szam;
/*cout << "az osszeg most: " << osszeg << endl;
cout << "-----------" << endl;*/
}
cout << osszeg << endl;
return 0;
}
|
HF (hasonlóan): Adott sorozatnak számoljuk ki a szorzatát.
Minimum és maximumkeresés
Adott n, majd egy n elemű sorozat,
az elemek legfeljebb háromjegyű
természetes számok.
Keressük a sorozat legnagyobb elemét!
(maximumkeresés)
Pl.
5
1 8 2 9 1
Ötlet:
be: 1 max <- 1
be: 8 max <- 8
be: 2
be: 9 max <- 9
be: 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| #include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int maximum = -1;
for (int i = 1; i <= n; i++) {
int szam;
cin >> szam;
if (szam > maximum)
maximum = szam;
}
cout << maximum << endl;
return 0;
}
|
HF. keressük meg a legkisebb értéket!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| #include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int minimum = 1000;
for (int i = 1; i <= n; i++) {
int szam;
cin >> szam;
if (szam < minimum)
minimum = szam;
}
cout << minimum << endl;
return 0;
}
|
Feladatok
1. Adott sorozatban számítsuk ki az elemek átlagát!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| #include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int osszeg = 0;
for (int i = 1; i <= n; i++) {
int szam;
cin >> szam;
osszeg = osszeg + szam;
}
cout << (double) osszeg / n << endl;
return 0;
}
|
2. Adott sorozat esetén írjuk ki, hogy hányszor fordult elő az, hogy két egymás melletti elem azonos?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| #include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int elozo;
cin >> elozo;
int megoldas = 0;
for (int i = 2; i <= n; i++) {
int szam;
cin >> szam;
if (szam == elozo)
megoldas++;
elozo = szam;
}
cout << megoldas << endl;
return 0;
}
|
3. Adott sorozat esetén írjuk ki, hogy legtöbb hány egymás melletti 0 érték van benne.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| #include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int max_db = 0;
int db = 0;
for (int i = 1; i <= n; i++) {
int szam;
cin >> szam;
if (szam == 0)
db++;
else {
if (db > max_db)
max_db = db;
db = 0;
}
}
if (db > max_db)
max_db = db;
cout << max_db << endl;
return 0;
}
|
HF:
Adott sorozat esetén írjuk ki minden azonos elemekből álló részre ennek hosszát és
a benne levő elem értékét! (Szokás ezt run-length encoding-nak hívni.)
Példa:
bemenet: 12
1 1 2 3 3 3 4 4 5 5 1 1
kimenet:
2 db 1
1 db 2
3 db 3
2 db 4
2 db 5
2 db 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| #include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int elozo;
cin >> elozo;
int db = 1;
for (int i = 2; i <= n; i++) {
int szam;
cin >> szam;
if (szam == elozo)
db++;
else {
cout << db << " darab " << elozo << endl;
db = 1;
}
elozo = szam;
}
cout << db << " darab " << elozo << endl;
return 0;
}
|