Ciklusok használata
1.
Írjuk ki 100-szor azt a szöveget, hogy “kenyelmetlen a billentyuzet”.
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 n = 100;
for (int i = 1; i <= n; i++)
cout << "kenyelmetlen a billentyuzet" << endl;
cout << "--------------" << endl;
// más megoldás:
int i = 1;
while (i <= n) {
cout << "kenyelmetlen a billentyuzet" << endl;
i++;
}
return 0;
}
|
2.
Írjunk ki az alábbi példákhoz hasonló háromszöget
n sorral (n-t a felhasználó adja meg).
Pl. n=5 n=3
***** ***
**** **
*** *
**
*
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;
/*
for (int i = 1; i <= n; i++) {
// n-i+1 darab *-ot kell kiírni
for (int j = 1; j <= n-i+1; j++)
cout << "*";
cout << endl;
}
*/
// VAGY:
for (int i = n; i >= 1; i--) {
// i darab *-ot kell kiírni
for (int j = 1; j <= i; j++)
cout << "*";
cout << endl;
}
return 0;
}
|
3.
Beolvasunk egy n természetes számot, számoljunk
el n-ig kettesével (a páros számokat írjuk csak ki).
Pl. n = 7-re: 2 4 6
n = 6-ra: 2 4 6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| #include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
for (int i = 2; i <= n; i+=2)
cout << i << " ";
cout << endl;
return 0;
}
|
4.
Adott egy n term. szám, írjuk ki:
a) hány osztója van
b) mennyi a páratlan osztók összege
c) prímszám, összetett szám vagy egyik sem?
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
33
| #include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int hany_oszto = 0;
int osszeg = 0;
for (int i = 1; i <= n; i++)
if (n % i == 0) {
hany_oszto++;
if (i % 2 != 0) {
osszeg += i;
}
}
cout << "osztok szama: " << hany_oszto << endl;
cout << "ptlan osztok osszege: " << osszeg << endl;
if (hany_oszto == 2)
cout << "prim" << endl;
else if (n <= 1)
cout << "nem prim, nem is osszetett" << endl;
else
cout << "osszetett" << endl;
cout << endl;
return 0;
}
|
5.
Két szám ln.k.o-jának meghatározása.
(ld. tavalyi anyag)
Sorozatok
6.
Adott n, majd n darab term. szám. Határozzuk meg:
a) az összegüket
b) a páratlanok átlagát
c) hány olyan egymás melleti számpár van,
amik relatív prímek (ln.k.o-juk 1)
d) milyen hosszú a leghosszabb, egymás melletti
0-kból álló rész?
Pl.
10
1 2 3 4 6 0 0 9 0 4
kimenet:
a) 29
b) 4.33
c) 3
d) 2
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
| #include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int osszeg = 0;
int paratlan_ossz = 0;
int paratlan_db = 0;
int elozo = 0;
int hany_jo_par = 0;
int akt_resz_hossz = 0;
int maximum = 0;
for (int i = 1; i <= n; i++) {
int elem;
cin >> elem;
osszeg += elem;
if (elem % 2 != 0) {
paratlan_ossz += elem;
paratlan_db++;
}
// lnko(elem, elozo) = ?
int lnko = 0;
for (int i = 1; i <= elem && i <= elozo; i++)
if (elem%i == 0 && elozo % i == 0)
lnko = i;
if (lnko == 1)
hany_jo_par++;
elozo = elem;
if (elem == 0) {
akt_resz_hossz++;
}
else {
if (maximum < akt_resz_hossz)
maximum = akt_resz_hossz;
akt_resz_hossz = 0;
}
}
if (maximum < akt_resz_hossz)
maximum = akt_resz_hossz;
cout << "osszeg: " << osszeg << endl;
cout << "paratlanok atlaga: "
<< (double) paratlan_ossz / paratlan_db << endl;
cout << "rel. prim parok: " << hany_jo_par << endl;
cout << "leghosszabb 0-s resz hossza: " << maximum << endl;
return 0;
}
|
7.
Beolvasunk egy n term. számot! Tekintsük azt
a sorozatot, aminek az első két tagja
f(1) = 1,
f(2) = 2,
a többit pedig az
f(n) = f(n-1) + 3*f(n-2) (bármely n >= 3)
képlet adja meg.
a) Írjuk ki a sorozat első n tagját!
b) Írjuk ki a sorozat első n tagját visszafelé.
Pl. n = 5
a) 1 2 5 11 26
b) 26 11 5 2 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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
| #include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
if (n == 1) {
cout << "a) " << 1 << endl;
cout << "b) " << 1 << endl;
}
else if (n == 2) {
cout << "a) " << 1 << " " << 2 << endl;
cout << "b) " << 2 << " " << 1 << endl;
}
else { // n >= 3
cout << "a) " << 1 << " " << 2 << " ";
// f(n) = f(n-1) + 3*f(n-2)
// 3*f(n-2)+f(n-1) = f(n)
int x = 1, y = 2;
for (int i = 3; i <= n; i++) {
int uj = y + 3*x;
cout << uj << " ";
x = y;
y = uj;
}
cout << endl;
cout << "b) " << y << " " << x << " ";
// f(n) = f(n-1) + 3*f(n-2)
// f(n-2) = (f(n) - f(n-1)) / 3
while (x != 1) {
int uj = (y - x) / 3;
cout << uj << " ";
y = x;
x = uj;
}
cout << endl;
}
return 0;
}
|
Számjegyek feldolgozása
8.
Adott egy n term szám, írjuk ki a tükörképét!
Pl. n = 123-ra az eredmény 321
Pl. n = 120-ra az eredmény 21
HF.
9.
Adott egy n term szám, írjuk ki azt a számot,
ami csak a páratlan számjegyeit tartalmazza
fordított sorrendben.
Pl. n = 123-ra az eredmény 31
HF.
10.
Adott egy n term szám, írjuk ki azt a számot,
ami csak a páratlan számjegyeit tartalmazza
eredeti sorrendben.
Pl. n = 123-ra az eredmény 13
HF.
11.
Számítsuk ki adott számban a számjegyek összegét!
Pl. n = 123-ra az eredmény 6
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;
while (n != 0)
{
int ut_szj = n%10;
osszeg += ut_szj;
n = n / 10;
}
cout << osszeg << endl;
return 0;
}
|
Hogy lenne ugyanez szorzattal?
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 szorzat = 1;
do
{
int ut_szj = n%10;
szorzat *= ut_szj;
n = n / 10;
}
while (n != 0);
cout << szorzat << endl;
return 0;
}
|