Feladatgyűjtemény
1. Kifejezések
2. Vegyes feladatok
3. Programozási tételek
3.1.cpp
Számítsd ki egy szám faktoriálisát.
# include <iostream>
using namespace std;
int main() {
int number;
int counter = 1;
cin >> number;
int i = 1;
while (i <= number) {
counter = counter * i;
i++;
}
cout << counter << endl;
return 0;
}3.2.cpp
Add meg egy természetes szám osztóinak összegét.
# include <iostream>
using namespace std;
int main() {
int counter = 0;
int n;
cin >> n;
int i = 2;
while (i < n) {
if (n % i == 0) {
counter += i;
}
i++;
}
cout << counter << endl;
return 0;
}3.3.cpp
Add meg egy tetszőleges egész szám valódi osztóinak a számát.
# include <iostream>
using namespace std;
int main() {
int counter = 0;
int n;
cin >> n;
int i = 2;
while (i < n) {
if (n % i == 0) {
counter++;
}
i++;
}
cout << counter << endl;
return 0;
}3.4.cpp
Add meg egy természetes szám legnagyobb valódi osztóját.
# include <iostream>
using namespace std;
int main() {
int max = 2;
int n;
cin >> n;
int i = 2;
while (i < n) {
if (n % i == 0) {
if (i > max) {
max = i;
}
}
i++;
}
cout << max << endl;
return 0;
}3.5.cpp
Add meg két természetes szám legnagyobb közös osztóját.
# include <iostream>
using namespace std;
int main() {
int max = 1;
int n, m;
cin >> n >> m;
n = abs(n);
m = abs(m);
int i = 1;
while (i <= n and i <= m) {
if (n % i == 0 and m % i == 0) {
max = i;
}
i++;
}
cout << max << endl;
return 0;
}3.10.cpp
Add meg egy tetszőleges egész számsorról, hogy hány eleme kisebb az átlagánál.
# include <iostream>
# include <fstream>
# include <string>
# include <vector>
using namespace std;
int main() {
ifstream file("szamsorozat.txt");
int sum = 0, average, counter = 0;
if (file.good()) {
// beolvasás
vector<int> v;
while (file.good()) {
int a;
file >> a;
v.push_back(a);
sum += a;
}
file.close();
// átlag
average = sum / v.size();
int i = 0;
while (i < v.size()) {
if (v[i] < average) {
counter++;
}
i++;
}
cout << counter << endl;
} else {
cout << "nem sikerült a beolvasás" << endl;
}
return 0;
}3.11.cpp
Egy pozitív egész számokból álló számsorban add meg, hogy hány páros szám van.
# include <iostream>
using namespace std;
int main() {
int a, n;
int counter = 0;
cin >> n;
int i = 0;
while (i < n) {
cin >> a;
if (a % 2 == 0) {
counter++;
}
i++;
}
cout << counter << endl;
return 0;
}3.12.cpp
Egy tetszőleges számsorban add meg a legkisebb és a legnagyobb számot.
# include <iostream>
using namespace std;
int main() {
int n, a;
int min, max;
cin >> n;
cin >> a;
min = a;
max = a;
int i = 0;
while (i < n - 1) {
cin >> a;
if (a > max) {
max = a;
}
if (a < min) {
min = a;
}
i++;
}
cout << min << " " << max << endl;
return 0;
}3.13.cpp
Add meg egy tetszőleges pozitív számsorozat elemeinek a négyzetgyök-összegét.
# include <iostream>
using namespace std;
int main() {
int n, a;
int counter = 0;
cin >> n;
int i = 0;
while (i < n) {
cin >> a;
counter += a * a;
i++;
}
cout << counter << endl;
return 0;
}3.14.cpp
Add meg egy tetszőleges pozitív számsorozat elemeinek a négyzetgyök-összegét.
# include <iostream>
using namespace std;
int main() {
int n, c, d, i;
cin >> n;
int a[n];
int b[n];
i = 0;
while (i < n) {
cin >> c >> d;
a[i] = c;
b[i] = d;
i++;
}
i = 0, c = 0;
while (i < n) {
c += a[i] * b[i];
i++;
}
cout << c << endl;
return 0;
}3.15a.cpp és 3.15b.cpp
a, Egy szigorúan növő egész számsorban add meg a legnagyobb ugrást (szomszédos elemek közötti legnagyobb előforduló különbséget). b, Nem monoton számsorra is adj helyes eredményt.
# include <iostream>
# include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> sorozat;
while (sorozat.size() < n) {
int a;
cin >> a;
sorozat.push_back(a);
}
int max = 0;
int i = 0;
while (i < n - 1) {
if (abs(sorozat[i+1] - sorozat[i]) > max) {
max = abs(sorozat[i+1] - sorozat[i]);
}
i++;
}
cout << max << endl;
return 0;
}3.16.cpp
Add meg egy tetszőleges egész számsorban a szomszédos elemek átlagos különbségét.
# include <iostream>
# include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> sorozat;
while (sorozat.size() < n) {
int a;
cin >> a;
sorozat.push_back(a);
}
int max = 0, sum = 0, i = 0;
while (i < n - 1) {
sum += abs(sorozat[i+1] - sorozat[i]);
i++;
}
float average = sum / i;
cout << average << endl;
return 0;
}3.17a.cpp
Döntsd el három számról, hogy növekvő sorrendben vannak-e.
#include <iostream>
using namespace std;
int main() {
int a, b, c;
cin >> a >> b >> c;
if (a < b and a < c and b < c) {
cout << "igaz"
} else {
cout << "hamis"
}
return 0;
}3.17b.cpp
Tetszőleges sok számról döntsd el ugyanezt.
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> sorozat;
while (sorozat.size() < n) {
int a;
cin >> a;
sorozat.push_back(a);
}
bool nagyobb = true;
int i = 0;
while (i < sorozat.size() - 1 and nagyobb) {
if (sorozat[i] >= sorozat[i+1]) {
nagyobb = false;
}
i++;
}
if (nagyobb) {
cout << "a sorozat növekvő" << endl;
} else {
cout << "a sorozat csökkenő" << endl;
}
return 0;
}3.18.cpp
Add meg egy tetszőleges egész számsorban a prímszámok számát.
# include <iostream>
# include <vector>
using namespace std;
bool prim_e(int szam) {
if (szam == 1) {
return 0;
}
int i = 2;
while (i < szam) {
if (szam % i == 0) {
return 0;
}
i++;
}
return 1;
}
int main() {
int n;
cin >> n;
vector<int> sorozat;
while (sorozat.size() < n) {
int a;
cin >> a;
sorozat.push_back(a);
}
int counter = 0, i = 0;
while (i < sorozat.size()) {
if (prim_e(sorozat[i])) {
counter++;
}
i++;
}
cout << counter << endl;
return 0;
}3.19.cpp
Egy egész számról döntsd el, hogy prímszám-e.
# include <iostream>
# include <string>
using namespace std;
bool prim_e(int szam) {
if (szam == 1) {
return 0;
}
int i = 2;
while (i < szam) {
if (szam % i == 0) {
return 0;
}
i++;
}
return 1;
}
int main() {
int n;
cin >> n;
if (prim_e(n)) {
cout << "igaz" << endl;
} else {
cout << "hamis" << endl;
}
return 0;
}3.20.cpp
a, Sorold fel az első N prímszámot. b, Sorold fel a K-nál kisebb prímszámokat. c, Sorold fel az A és B közé eső prímszámokat.
# include <iostream>
# include <string>
using namespace std;
bool prim_e(int szam) {
if (szam == 1) {
return 0;
}
int i = 2;
while (i < szam) {
if (szam % i == 0) {
return 0;
}
i++;
}
return 1;
}
void a() {
int n;
cin >> n;
int i = 2, counter = 0;
while (counter != n) {
if (prim_e(i)) {
cout << i << " ";
counter++;
}
i++;
}
}
void b() {
int k;
cin >> k;
k--;
while (k != 0) {
if (prim_e(k)) {
cout << k << endl;
}
k--;
}
}
void c() {
int a, b;
cin >> a >> b;
while (a < b) {
if (prim_e(a)) {
cout << a << endl;
}
a++;
}
}
int main() {
a();
b();
c();
return 0;
}3.21.cpp
Egy tetszőleges szövegről add meg, hány kis “a” betű van benne.
# include <iostream>
# include <string>
using namespace std;
int main() {
string a;
cin >> a;
int counter = 0;
for (char &c: a) {
if (c == 'a') {
counter++;
}
}
cout << counter << endl;
return 0;
}3.22.cpp
Egy tetszőleges szövegről add meg, hány számjegy, hány nagybetű és hány kisbetű van benne.
# include <iostream>
# include <string>
using namespace std;
int main() {
string a;
cin >> a;
int num = 0, upper = 0, lower = 0;
for (char &c: a) {
if (isupper(c)) {
upper++;
}
if (islower(c)) {
lower++;
}
if (isdigit(c)) {
num++;
}
}
cout << num << " " << upper << " " << lower << endl;
return 0;
}3.23.cpp
Add meg egy tetszőleges szövegben, hogy melyik karakter fordul elő benne a legtöbbször.
# include <iostream>
# include <string>
using namespace std;
int main() {
string a;
cin >> a;
int maxnum = 1;
char maxchar = a[0];
int currentnum;
char currentchar;
for (char i: a) {
currentchar = i;
currentnum = 0;
for (char c: a) {
if (c == i) {
currentnum++;
}
}
if (currentnum > maxnum) {
maxnum = currentnum;
maxchar = currentchar;
}
}
cout << maxchar << ": " << maxnum << endl;
return 0;
}3.24.cpp
Add meg egy tetszőleges szövegből a leghosszabb sort.
# include <iostream>
# include <string>
using namespace std;
int main() {
int n;
cin >> n;
string a;
getline(cin, a);
string max = a;
int i = 0;
while (i < n) {
getline(cin, a);
if (a.size() > max.size()) {
max = a;
}
i++;
}
cout << max << endl;
return 0;
}3.28.cpp
a, Egy több soros szövegben add meg, hány sorában található meg az “alma” szó. b, Az “alma” helyett tetszőleges szöveget lehessen megadni. c, A szó összes előfordulásának a számát add meg.
# include <iostream>
using namespace std;
int hanyszorbenne(string s, string keresendo) {
int counter = 0, helper = 0;
for (char c: s) {
if (keresendo[helper] == c) {
helper++;
if (helper == keresendo.size()) {
counter++;
helper = 0;
}
} else {
if (c == keresendo[0]) {
helper = 1;
}
}
}
return counter;
}
void a() {
int n;
cin >> n;
int counter = 0, i = 0;
while (i < n + 1) {
string a;
getline(cin, a);
if (hanyszorbenne(a, "alma") != 0) {
counter++;
}
i++;
}
cout << counter;
}
void b() {
string szo;
int n;
int counter = 0, i = 0;
while (i < n + 1) {
string a;
getline(cin, a);
if (hanyszorbenne(a, szo) != 0) {
counter++;
}
i++;
}
cout << counter;
return 0;
}
void c() {
string szo;
int n;
cin >> szo >> n;
int counter = 0, i = 0;
while (i < n + 1) {
string a;
getline(cin, a);
counter += hanyszorbenne(a, szo);
i++;
}
cout << counter;
return 0;
}
int main() {
a();
b();
c();
return 0;
}4. Rekordok
4.1.cpp
Adott egy szövegfájl, ami egy recept hozzávalóit tartalmazza. A fájl minden sora egy számmal kezdődik, ami egy összetevőből szükséges mennyiség, majd vesszővel elválsztva tőle az összetevő neve jön. a, Add meg azt az összetevőt, amiből a legtöbb, és amiből a legkevesebb kell. b, Add meg, hány olyan összetevő van, amiből kevesebb, mint egy egységnyi kell. c, Add meg egy tetszőleges összetevőről, hogy mennyi kell belőle.
# include <iostream>
# include <fstream>
# include <vector>
# include <string>
using namespace std;
struct hozzavalo {
string nev;
int mennyiseg;
};
hozzavalo sorbeolvasas(ifstream &f) {
hozzavalo hozzavalo;
f >> hozzavalo.mennyiseg >> hozzavalo.nev >> ws;
getline(f, hozzavalo.nev) >> ws;
return hozzavalo;
}
vector<hozzavalo> beolvasas(ifstream &f) {
vector<hozzavalo> hozzavalok;
while (f.good()) {
hozzavalok.push_back(sorbeolvasas(f));
}
return hozzavalok;
}
void a(vector<hozzavalo> hozzavalok) {
hozzavalo min, max;
min = hozzavalok[0];
max = hozzavalok[0];
int i = 1;
while (i < hozzavalok.size()) {
if (hozzavalok[i].mennyiseg < min.mennyiseg) {
min = hozzavalok[i];
}
if (hozzavalok[i].mennyiseg > max.mennyiseg) {
max = hozzavalok[i];
}
i++;
}
cout << "min: " << min.nev << " (" << min.mennyiseg << ")" << endl;
cout << "max: " << max.nev << " (" << max.mennyiseg << ")" << endl;
}
void b(vector<hozzavalo> hozzavalok) {
int counter = 0, i = 1;
while (i < hozzavalok.size()) {
if (hozzavalok[i].mennyiseg < 1) {
counter++;
}
i++;
}
cout << counter << endl;
}
void c(vector<hozzavalo> hozzavalok) {
string a;
cin >> a;
int i = 0;
while (i < hozzavalok.size()) {
if (hozzavalok[i].nev == a) {
cout << hozzavalok[i].mennyiseg << endl;
return;
}
i++;
}
cout << "nincs ilyen hozzávaló" << endl;
}
int main() {
ifstream f("hozzavalok.txt");
if (f.good()) {
vector<hozzavalo> hozzavalok = beolvasas(f);
a(hozzavalok);
b(hozzavalok);
c(hozzavalok);
} else {
cout << "nem sikerült a beolvasás" << endl;
}
f.close();
return 0;
}5. Tömbös feladatok
5.1.cpp
Véletlen tömb: egy tömb elemeit töltsd fel véletlen számokkal. (A következő feladatok akár véletlennel, akár másképp feltöltött vektorokkal foglalkoznak)
# include <iostream>
using namespace std;
int main() {
int hossz = 4;
int sorozat[hossz];
int i = 0;
while (i < hossz) {
sorozat[i] = rand() % 10 + 1;
i++;
}
i = 0;
while (i < hossz) {
cout << sorozat[i] << endl;
i++;
}
return 0;
}6. Függvényes feladatok
6.2.cpp
Valósítsd meg az
int kozos(int a, int b)függvényt, ami a közös osztók számát adja vissza.
using namespace std;
int kozos(int a, int b) {
int counter = 0, i = 0;
int minimum;
if (a > b) {
minimum = b;
} else {
minimum = a;
}
while (i <= minimum) {
if (a % i == 0 and b % i == 0) {
counter++;
}
i++;
}
return counter;
}
int main() {
return 0;
}6.3.cpp
Valósítsd meg a
bool tokeletes(int a)függvényt, ami visszaadja, hogy a paraméterül kapott érték tökéletes szám-e.
using namespace std;
int osztoosszeg(int a) {
int i = 1, counter = 0;
while (i < a) {
if (a % i == 0) {
counter += i;
}
i++;
}
return counter;
}
bool tokeletes(int a) {
return a == osztoosszeg(a);
}
int main() {
return 0;
}6.4.cpp
Valósítsd meg a
bool baratsagos(int a, int b)függvényt, ami visszaadja, hogy a paraméterül kapott értékek barátságos számpárt alkotnak-e.
using namespace std;
int osztoosszeg(int a) {
int i = 0, counter = 1;
while (i < a) {
if (a % i == 0) {
counter+=i;
}
i++;
}
return counter;
}
bool baratsagos(int a, int b) {
return osztoosszeg(a) == b and osztoosszeg(b) == a
}
int main() {
return 0;
}6.5.cpp
Valósítsd meg az int
max(vector<int> v)függvényt, ami a paraméterül kapott vektor elemei közül a legnagyobbat adja vissza.
# include <vector>
using namespace std;
int max(vector<int> v) {
int max = v[0];
int i = 0;
while (i < v.size()) {
if (v[i] > max) {
max = v[i];
}
i++;
}
return max;
}
int main() {
return 0;
}