1.
Adott n elemű sorozat (n < 100). Mennyi az első és utolsó páros elem
között található elemek összege? (Feltéve, hogy van legalább egy páros
elem 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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
| #include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream be("input.txt");
int t[100];
int n;
be >> n;
for (int i = 0; i < n; i++)
be >> t[i];
// hol az első páros? (fordított végigjárással)
/*
int poz_elso_paros = -1;
for (int i = n-1; i >= 0; i--)
if (t[i] % 2 == 0)
poz_elso_paros = i;
*/
// hol az első páros? (másképp, plusz feltétellel)
int poz_elso_paros = -1;
for (int i = 0; i < n; i++)
if (t[i] % 2 == 0 && poz_elso_paros == -1)
poz_elso_paros = i;
// hol az utolsó páros
int poz_utolso_paros = -1;
for (int i = 0; i < n; i++)
if (t[i] % 2 == 0)
poz_utolso_paros = i;
// mennyi köztük az összeg?
int osszeg = 0;
for (int i = poz_elso_paros+1; i < poz_utolso_paros; i++)
osszeg = osszeg + t[i];
cout << osszeg << endl;
return 0;
}
|
HF: Kövessük nyomon a fentebbi kódot az alábbi bemenetekre:
a.
7
11 20 6 5 8 7 2
b.
6
1 5 6 4 7 9
c.
6
1 5 3 4 7 9
2.
Adott n elemű sorozat (n < 100). Minden elem esetén írjuk ki, hogy hány
nála kisebb elem található a sorozatban.
Ötlet: két for-t használunk egymásban, minden elem esetén végigmegyünk újra a tömbön,
és megszámoljuk, hogy hány nála kisebb elem van.
for (i ...) {
int db = 0;
for (j ...)
if (...)
db++;
cout << t[i] << ": " << db << endl;
}
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 n;
cin >> n;
int t[100];
for (int i = 0; i < n; i++)
cin >> t[i];
for (int i = 0; i < n; i++) {
int db = 0;
for (int j = 0; j < n; j++) {
if (t[j] < t[i])
db++;
}
cout << t[i] << ": " << db << endl;
}
return 0;
}
|
3. HF
Adott n elemű sorozat. Minden elem esetén írjuk ki, hogy hány nála
nagyobb prímszám található a sorozatban.
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 t[100];
for (int i = 0; i < n; i++)
cin >> t[i];
for (int i = 0; i < n; i++) {
int db = 0;
for (int j = 0; j < n; j++) {
if (t[j] > t[i]) {
// megnézzük, hogy t[j] prímszám-e
int hany_oszto = 0;
for (int k = 1; k <= t[j]; k++)
if (t[j] % k == 0)
hany_oszto++;
if (hany_oszto == 2)
db++;
}
}
cout << t[i] << ": " << db << endl;
}
return 0;
}
|
4.
Adott n elemű sorozat. Gyűjtsük össze egy tömbbe azokat az
elemeket, amelyek prímek, majd írjuk ki ezeket a megjelenésük fordított
sorrendjében.
Példa:
bemenet: 7
1 4 2 6 7 11 7
új tömb: 2 7 11 7
kimenet: 7 11 7 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
| #include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int t[100];
for (int i = 0; i < n; i++)
cin >> t[i];
int n_uj = 0;
int uj[100];
for (int i = 0; i < n; i++) {
int db = 0;
for (int d = 1; d <= t[i]; d++)
if (t[i] % d == 0)
db++;
if (db == 2) { /* t[i] prím? */
uj[n_uj] = t[i];
n_uj++;
}
}
for (int i = n_uj-1; i >= 0; i--)
cout << uj[i] << " ";
cout << endl;
return 0;
}
|
5.
Adott n és az A1, A2, … An pontok korrdinátái (pontonként
két-két valós szám). Írjuk ki annak a két pontnak a sorszámát, amelyek
legközelebb vannak egymáshoz.
Példa bemenetre:
3
1 2
3 4
-2 5
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
| #include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n;
cin >> n;
int x[100];
int y[100];
for (int i = 0; i < n; i++)
cin >> x[i] >> y[i];
double minimum = INT_MAX;
int hol_i, hol_j;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
if (i != j) {
double dx = x[i] - x[j];
double dy = y[i] - y[j];
double tav = sqrt(dx*dx + dy*dy);
// minimumkeresés
if (tav < minimum) {
minimum = tav;
hol_i = i;
hol_j = j;
}
}
cout << "(" << x[hol_i] << "," << y[hol_i] << ") es ("
<< x[hol_j] << "," << y[hol_j] << ")" << endl;
return 0;
}
|
6. HF
Írjuk ki egy tömb azon elemeit, amelyek többszörösei az utolsó elemnek!
https://www.pbinfo.ro/probleme/546/afisare0
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;
cin >> n;
int tomb[1000];
for (int i = 0; i < n; i++)
cin >> tomb[i];
for (int i = 0; i < n; i++) {
// többszöröse-e az utolsónak?
if (tomb[i] % tomb[n-1] == 0) {
cout << tomb[i] << " ";
}
}
cout << endl;
return 0;
}
|
7.
Adott egy n elemű tömb. Írjuk ki a páros indexen levő elemeket az indexek növekvő sorrendjében, majd
a páratlan indexen levő elemeket az indexek csökkenő sorrendjében! Az elemek 1-től sorszámozottak.
https://www.pbinfo.ro/probleme/488/afisare
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
| #include <iostream>
using namespace std;
int main()
{
int a[1001];
int n;
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i];
/*
for (int i = 1; i <= n; i++)
if (i % 2 == 0)
cout << a[i] << " ";
cout << endl;
for (int i = n; i >= 1; i--)
if (i % 2 == 1)
cout << a[i] << " ";
cout << endl;
*/
// VAGY:
for (int i = 2; i <= n; i+=2)
cout << a[i] << " ";
cout << endl;
int imax = n;
if (imax % 2 == 0)
imax--;
for (int i = imax; i >= 1; i-=2)
cout << a[i] << " ";
cout << endl;
return 0;
}
|
8.
Adott egy n elemű tömb. Írjuk ki az elemeit a következő sorrendben: első, utolsó, második,
utolsó előtti stb.
https://www.pbinfo.ro/probleme/489/afisare1
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
| #include <iostream>
using namespace std;
int main()
{
int a[1000];
int n;
cin >> n;
for (int i = 0; i < n; i++)
cin >> a[i];
/*
for (int i = 0; i < n/2; i++)
cout << a[i] << " " << a[n-i-1] << " ";
if (n % 2 == 1)
cout << a[n/2];
cout << endl;
*/
// VAGY:
int i = 0, j = n-1;
while (i <= j) {
cout << a[i] << " ";
if (j != i)
cout << a[j] << " ";
i++;
j--;
}
cout << endl;
return 0;
}
|
9. HF
Adott egy n elemű különböző értékeket tartalmazó tömb. Meg kell határozni a legkisebb és
legnagyobb elem (1-től sorszámozott) indexét.
https://www.pbinfo.ro/probleme/553/pozminmax
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
| #include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int t[1001];
for (int i = 1; i <= n; i++)
cin >> t[i];
int maximum = t[1];
int max_helye = 1;
int minimum = t[1];
int min_helye = 1;
for (int i = 2; i <= n; i++) {
if (t[i] < minimum) {
minimum = t[i];
min_helye = i;
}
if (t[i] > maximum) {
maximum = t[i];
max_helye = i;
}
}
cout << min_helye << " " << max_helye << endl;
return 0;
}
|
Vagy:
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
| #include <iostream>
#include <climits>
using namespace std;
int main()
{
int n;
cin >> n;
int t[1001];
for (int i = 1; i <= n; i++)
cin >> t[i];
int maximum = INT_MIN;
int max_helye;
int minimum = INT_MAX;
int min_helye;
for (int i = 1; i <= n; i++) {
if (t[i] < minimum) {
minimum = t[i];
min_helye = i;
}
if (t[i] > maximum) {
maximum = t[i];
max_helye = i;
}
}
cout << min_helye << " " << max_helye << endl;
return 0;
}
|
10. HF
Adott egy n elemű tömb. Meg kell határozni, hogy hány olyan eleme van, amely egyenlő a legnagyobb
és legkisebb érték közötti különbséggel.
https://www.pbinfo.ro/probleme/547/numarare6
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
| #include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int t[1000];
for (int i = 0; i < n; i++)
cin >> t[i];
int maximum = t[0];
int minimum = t[0];
for (int i = 1; i < n; i++) {
if (t[i] < minimum)
minimum = t[i];
if (t[i] > maximum)
maximum = t[i];
}
//cout << minimum << " " << maximum << endl;
int kulonbseg = maximum - minimum;
int hany = 0;
for (int i = 0; i < n; i++)
if (t[i] == kulonbseg)
hany++;
cout << hany << endl;
return 0;
}
|
11.
Adott egy n elemű tömb. Meg kell határozni, hogy hány olyan elempár alkotható az elemeiből, amelynek mindkét
tagjában ugyanaz a tízesek számjegye.
https://www.pbinfo.ro/probleme/4380/numarareperechi1
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
| #include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int t[200];
for (int i = 0; i < n; i++)
cin >> t[i];
int db = 0;
for (int i = 0; i < n; i++) {
for (int j = i+1; j < n; j++) {
int szj1 = t[i] / 10 % 10;
int szj2 = t[j] / 10 % 10;
if (szj1 == szj2)
db++;
}
}
cout << db << endl;
return 0;
}
|