Felmérő lesz 2026. február 11-én, szerdán, az alábbiakból:
- for ciklus és feladatok
- do-while ciklus és feladatok
- ciklusok átírása egyik típusból a másikba
- oszthatósággal kapcsolatos feladatok (lnko, lkkt, prímteszt,
prímtényezős felbontás és ezekhez hasonlóak)
Tétel
Hivatalból 2 pont jár, a munkaidő 45 perc.
A változat
1.
Adott az alábbi C++ program:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| #include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int x = 1;
while (n >= 6) {
if (n % 5 == 0) {
cout << x << " ";
}
else {
x = x+2;
}
n--;
}
cout << endl; return 0;
}
|
- Kövessük nyomon a végrehajtást, ha a bemenete a 16-os szám! Mi kerül a kimenetre? (1p)
- Írjuk át a while ciklust do-while ciklussá úgy, hogy a program viselkedése ne változzon! (Le kell írni a teljes programot.) (1p)
- Írjuk át a while ciklust for ciklussá úgy, hogy a program viselkedése ne változzon! (Le kell írni a teljes programot.) (1p)
- (opcionális, +0.67pont) Melyek azon n értékek, amelyekre a program 67 darab számot ír ki?
2.
Adott x és y pozitív egész számoknak határozzuk meg a legnagyobb közös osztóját és legkisebb közös többszörösét! (1p)
Megoldás:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| #include <iostream>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
int szorzat = a * b;
while (a != b) {
if (a > b)
a -= b;
else
b -= a;
}
cout << "lnko: " << a << endl;
cout << "lkkt: " << szorzat / a << endl;
return 0;
}
|
3.
Adott egy egynél nagyobb pozitív egész szám. Ha prím, akkor írjuk ki a „nem tetszik” üzenetet, különben határozzuk meg a legkisebb és legnagyobb valódi osztójának összegét! (1p)
Megoldás:
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 hany = 0;
int legkisebb = 0;
int legnagyobb = 0;
for (int i = 2; i < n; i++) {
if (n % i == 0) {
hany++;
if (legkisebb == 0) {
legkisebb = i;
}
legnagyobb = i;
}
}
if (hany == 0)
cout << "nem tetszik" << endl;
else
cout << legkisebb + legnagyobb << endl;
return 0;
}
|
4.
A bemeneten adott az n pozitív egész szám (n ≤ 106).
- Írjuk ki a prímtényezőit szóközzel elválasztva! (1p)
- Számítsuk ki a páros hatványon megjelenő prímtényezőinek összegét! (1p)
Példa: n = 300-ra a kimenet:
2 3 5
7
Megoldás:
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
32
| #include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int d = 2;
int osszeg = 0;
while (n > 1) {
int hatvany = 0;
while (n % d == 0) {
n = n / d;
hatvany++;
}
if (hatvany >= 1) {
cout << d << " ";
if (hatvany % 2 == 0)
osszeg = osszeg + d;
}
d++;
}
cout << endl;
cout << osszeg << endl;
return 0;
}
|
5.
Adott n pozitív egész szám esetén állítsuk elő az alábbi n soros kimenetet! (1p)
1
1 2
1 2 3
1 2 3 4
...
1 2 3 4 5 ... n
Megoldás:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| #include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
for (int sor = 1; sor <= n; sor++) {
for (int oszlop = 1; oszlop <= sor; oszlop++)
cout << oszlop << " ";
cout << endl;
}
return 0;
}
|
B változat
1.
Adott az alábbi C++ program:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| #include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int x = 1;
while (n >= 8) {
if (n % 7 == 0) {
cout << x << " ";
}
else {
x = x+1;
}
n--;
}
cout << endl; return 0;
}
|
- Kövessük nyomon a végrehajtást, ha a bemenete a 22-es szám! Mi kerül a kimenetre? (1p)
- Írjuk át a while ciklust do-while ciklussá úgy, hogy a program viselkedése ne változzon! (Le kell írni a teljes programot.) (1p)
- Írjuk át a while ciklust for ciklussá úgy, hogy a program viselkedése ne változzon! (Le kell írni a teljes programot.) (1p)
- (opcionális, +0.67pont) Melyek azon n értékek, amelyekre a program 67 darab számot ír ki?
Megoldás - b:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| #include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int x = 1;
if (n >= 8) {
do {
if (n % 7 == 0) {
cout << x << " ";
}
else {
x = x+1;
}
n--;
} while (n >= 8);
}
cout << endl; return 0;
}
|
Megoldás - c:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| #include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int x = 1;
while (n >= 8) {
if (n % 7 == 0) {
cout << x << " ";
}
else {
x = x+1;
}
n--;
}
cout << endl; return 0;
}
|
Más megoldás - c:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| #include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int x = 1;
for (int i = n; i >= 8; i--)
{
if (i % 7 == 0) {
cout << x << " ";
}
else {
x = x+1;
}
}
cout << endl; return 0;
}
|
Megint más megoldás - c:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| #include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int x = 1;
for (; n >= 8; n--) {
if (n % 7 == 0) {
cout << x << " ";
}
else {
x = x+1;
}
}
cout << endl; return 0;
}
|
2.
Adott egy egynél nagyobb pozitív egész szám. Ha prím, akkor írjuk ki a „baj van” üzenetet,
különben határozzuk meg a legkisebb és legnagyobb valódi osztójának szorzatát! (1p)
3.
Adott x és y pozitív egész számoknak határozzuk meg a legnagyobb közös osztóját
és legkisebb közös többszörösét! (1p)
4.
A bemeneten adott az n pozitív egész szám (n ≤ 106).
- Írjuk ki a prímtényezőit szóközzel elválasztva! (1p)
- Számítsuk ki a páratlan hatványon megjelenő prímtényezőinek összegét! (1p)
Példa: n = 90-re a kimenet:
2 3 5
7
5.
Adott n pozitív egész szám esetén állítsuk elő az alábbi n soros kimenetet! (1p)
1
2 1
3 2 1
4 3 2 1
...
n n-1 ... 3 2 1
Megoldás:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| #include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
for (int sor = 1; sor <= n; sor++) {
for (int oszlop = sor; oszlop >= 1; oszlop--)
cout << oszlop << " ";
cout << endl;
}
return 0;
}
|