2 pont hivatalból, a munkaidő 45 perc.
1. feladat
Megfelelő ciklusok használatával írjuk ki a következő számsorozatokat (n-t a billentyűzetről olvassuk be,
elég kódrészletet írni).
a) 1, 2, 3, ..., n (0.5 pont)
Megoldás:
1
2
3
4
| for (int i = 1; i <= n; i++)
cout << i << " ";
cout << endl;
|
b) 2, 4, 6, ..., 2n (0.5 pont)
Megoldás:
1
2
3
4
| for (int i = 1; i <= n; i++)
cout << 2*i << " ";
cout << endl;
|
c) 1, 3, 9, 27, 81, ..., 3^(n-1) (3 az (n-1). hatványon) (1 pont)
Megoldás:
1
2
3
| for (int i = 0; i < n; i++)
cout << pow(3, i) << " ";
cout << endl;
|
vagy:
1
2
3
4
5
6
7
| int hatvany = 1;
for (int i = 0; i < n; i++) {
cout << hatvany << " ";
hatvany = hatvany*3;
}
cout << endl;
|
2. feladat
Mit ír ki az n = 12345 bemenetre az alábbi algoritmus? Kövessük nyomon! (1 pont)
beolvas n
Amíg n > 0
| kiír n % 10
|
| Ha n % 2 = 0 akkor n <- n / 2
| különben n <- [n/10]
|
| kiír n+1
[]
Megoldás:
--+--------------------------------------
n | 12345 1234 617 61 6 3 0
--+--------------------------------------
Kimenet: 5 1235 4 618 7 62 1 7 6 4 3 1
3. feladat
Írjuk át úgy, hogy ne változzon a viselkedése!
a) for-ról while-ra:
1
2
| for (int i = 2; i < 100; i += 3)
cout << i;
|
Megoldás:
1
2
3
4
5
| int i = 2;
while (i < 100) {
cout << i;
i += 3;
}
|
b) while-ról do-while-ra:
1
2
3
4
| while (n > 0) {
n -= 5;
cout << n;
}
|
Megoldás:
1
2
3
4
5
6
| if (n > 0) {
do {
n -= 5;
cout << n;
} while (n > 0);
}
|
c) do-while-ról while-ra:
1
2
3
4
| do {
cout << n;
n /= 10;
} while (n > 9);
|
Megoldás:
1
2
3
4
5
6
| cout << n;
n /= 10;
while (n > 9) {
cout << n;
n /= 10;
}
|
4. feladat
Beolvasunk egy n pozitív egész számot. Írjuk ki, hogy hány prím osztója van! (1 pont)
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
| #include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int primosztok = 0;
for (int i = 2; i <= n; i++) {
// i osztó-e?
if (n % i == 0) {
// i prím-e?
int db = 0;
for (int j = 1; j <= i; j++)
if (i % j == 0)
db++;
if (db == 2)
primosztok++;
}
}
cout << primosztok << endl;
return 0;
}
|
5. feladat
Beolvassuk az a és b pozitív egészeket. Írjuk ki:
- a legkisebb közös többszörösüket; (0.5 pont)
- a közös osztóikat. (0.5 pont)
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
| #include <iostream>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
// a)
int tobbszoros = a;
while (tobbszoros % b != 0)
tobbszoros += a;
cout << tobbszoros << endl;
// b)
for (int i = 1; i <= a && i <= b; i++)
if (a % i == 0 && b % i == 0)
cout << i << " ";
cout << endl;
return 0;
}
|