Laborfeladat
1. Számítsuk ki és írjuk ki két szám legnagyobb közös osztóját,
legkisebb közös többszörösét, szorzatát és összegét. A két számot
egy "input.txt" fileból olvassuk be, ahol a két szám az első két sorban van
3. Hozzunk létre egy
1D tömböt, amely "n" hosszúságú, majd használva a rand függvényt, 1 és
1000 között adjunk értéket miden elemének.
Keressük meg a 3 legnagyobb elemet, majd ezek átlagát írjuk ki egy
"eredmeny.txt" fileba.
4. Oldjuk meg a 2 es feladatot tömbrendezés nélkül.
Pluszfeladatok:
1. Egy számsor elemét a sor helyi csúcsának nevezzük,
A bac.txt állomány egy, legalább kettő és legtöbb 106 természetes számból álló számsort tartalmaz. A számok a [0,103] intervallumból vannak, és egy-egy szóközzel vannak elválasztva. A képernyőre írassa ki egy-egy szóközzel elválasztva, az állományban megadott sor minden helyi csúcsát. Tervezzen a futási idő és a memóriahasználat szempontjából hatékony algoritmust.
Forrás: Érettségi 2019 III/3
2. A bac.txt állomány legkevesebb két és legtöbb 106 természetes számot tartalmaz a [0,103]
intervallumból, a számok szóközzel vannak elválasztva egymástól. A sorozatnak legalább egy páros
és legalább egy páratlan eleme van. Írassuk ki a képernyőre a sorozat tagjait, szóközzel
elválasztva, úgy hogy a páratlan tagok a páros tagok előtt jelenjenek meg, és úgy a páratlan
tagokból álló, mint a páros tagokból álló részsorozat elemei, növekvő sorrendben jelenjenek meg,
ahogy a példa mutatja. Tervezzen a végrehajtási idő szempontjából hatékony algoritmust.
Forrás: Pótérettségi 2019 III/3
Megoldás az 1es feladathoz:
Megoldott feladat:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
//szukseges valtozok deklaralasa
int a,b,x,y,lkkt;
string sor;
//a file deklaralasa, ahonnan a szamokat beolvassuk
fstream inputfile("input.txt");
//ha sikerult kinyitni a filet
if(inputfile.is_open()){
//olvasd ki az elso szamot
inputfile >> a;
//olvasd ki a masodik szamot
inputfile >> b;
}
//mivel az lnko szamitasanal egymasbol kell kivonjuk a szamokat, ezert szukseg lesz cserevaltozokra
x=a;
y=b;
//lnko algoritmus, a nagyobbol addig vonjuk ki a kisebbet, amig egyenloek nem lesznek
while(x!=y){
if(x>y){
x=x-y;
} else {
y=y-x;
}
}
//eredmenyek kiiratasa
cout<<"A legnagyobb kozos oszto:"<<x<<endl;
lkkt=(a*b)/x;
cout<<"A legkisebb kozos tobszoros:"<<lkkt<<endl;
p=a+b;
cout<<"A ket szam osszege:"<<p<<endl;
d=a*b;
cout<<"A ket szam szorzata:"<<d;
return 0;
}
#include <iostream>
using namespace std;
int main()
{
//szukseges valtozok deklaralasa
int a,b, hatvany, temp, ujszam = 0;
cout << "a="; cin >> a; cout << "b="; cin >> b; //megszamoljuk, hogy hany szamjegye van a masodik szamnak, de elotte lementjuk temp = b; while( temp > 0) { //megszamoljuk, hogy 10 melyik hatvanyaval kell szorozni az elso szamot, hogy a masodikat egyszeruen hozzaadjuk hatvany *= 10; temp /= 10; } ujszam = a*hatvany + b; cout >> ujszam;
return 0;
}