Professional Documents
Culture Documents
Deklarálása:
float a;
Műveletek: +, -, *, /
6/4 és 6/4. közti különbség: Az első kifejezés értéke 1 lesz a második kifejezés értéke 1.5
#include <iostream>
using namespace std;
int main()
{
float a,b,c;
a=6/4;
b=(float)6/4;
c=6/4.;
cout << a << endl<< b<< endl<< c;
return 0;}
a=6/4; Kiértékelődik a kifejezés majd a kapott érték átadódik a jobb oldali változónak (a), szükség
esetén végbemegy a konvertálás (mivel a 6 és 4 is egész számok, ezért az eredmény is egész lesz, hiába,
hogy az eredmény az a változóba kerül, ami valós. Ilyenkor adatvesztés történhet – az int alsóbbrendű
mint a float)
b=float(6)/4; Vagy b=6/float(4); Ahhoz hogy a helyes eredményt megkapjuk explicit konvertáló
operatort használunk (vagyis a 6-ost valóssá konvertáljuk, vagy a 4-es a második esetben) nem módosítja
a típust, csak a kifejezés kiértékelésére érvényes.
Más megoldás:
c=6/4.; vagy c=6./4; 4. a 4-es mint valós szám, 6. a 6-os mint valós szám
Példák:
1. Mi az eredménye a programrészletnek?
Megjegyzés: Az ‘\n’ az endl-t helyettesíti. Mindegy melyiket használom.
e=a+b+d;
cout << "e=" << e<< '\n'; // a kiírt érték 11.5 lesz
c=d*a;
cout << "c=" << c<< endl; // a kiírt érték 12 lesz, hiába hogy az a*d=5*2.5=12.5, az eredmény a
c int típusó változóba kerül, adatvesztés történik és csak a 12 marad
meg
e=d*a;
cout << "e=" << e<< '\n'; // a kiírt érték 12.5 lesz, float=float*int, vagyis az eredmény marad
valós
e=a/2;
cout << "e=" << e<< '\n'; // a kiírt érték 2 lesz
e=a/2.;
cout << "e=" << e<< '\n'; // a kiírt érték 2.5 lesz
2. Adottak a, b int típusú és c,d float típusú adatok. Milyen az alábbi kifejezések típusai?
a+b a+d a/b a/d c+d c/2 a+c*2
3. Mi az eredménye a programrészletnek?
int a,b=8;
float x,y;
a=5;
x=3.14;
y=2;
cout<<a+b<<’\n’;
cout<<a-x<<’\n’;
cout<<b-y<<’\n’;
cout<<a/x<<’\n’;
cout<<b%a<<endl;
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
{…
srand(time(0));
cout << "[-10;20]" << endl;
cout << rand() % 31 - 10 << " ";
}
Feladatok:
1. Mi az eredménye a programrészletnek?
a)
int a=5, b=4;
float e;
e=sqrt(pow(a,2)+pow(b,2));
cout << "e=" << e<< '\n';
cout << endl;
float x=2.8, y=1.2, z,t;
cout << "x=" << x<< " y=" << y << '\n';
z=floor(x); t=ceil(x);
cout << "z=" << z<< " t=" << t << '\n';
z=floor(y); t=ceil(y);
cout << "z=" << z<< " t=" << t << '\n';
b)
int a=5, b=4, c;
float d=2.5, e;
c=d;
cout << "c=" << c<< '\n';
e=a/b;
cout << "e=" << e<< '\n';
e=float(a)/b;
cout << "e=" << e<< '\n';
e=a+b+d;
cout << "e=" << e<< '\n';
c=d*a;
cout << "c=" << c<< '\n';
e=d*a;
cout << "e=" << e<< '\n';
e=a/2;
cout << "e=" << e<< '\n';
e=a/2.;
cout << "e=" << e<< '\n';
e=sqrt(pow(a,2)+pow(b,2));
cout << "e=" << e<< '\n';
cout << endl;
float x=2.8, y=1.2, z,t;
cout << "x=" << x<< " y=" << y << '\n';
z=floor(x); t=ceil(x);
cout << "z=" << z<< " t=" << t << '\n';
z=floor(y); t=ceil(y);
cout << "z=" << z<< " t=" << t << '\n';
c)
float a=3.33, b;
int c=3, d;
b=a/c; c=b;
d=c/2.;
a=7/2;
cout<<a<<" "<<b<<" "<<c<<" "<<d;
d) float a=3.5, c, e;
int b=5, d, f;
c=a-b;
e=floor(c);
d=a;
f=7./3;
cout<<ceil(a)<<" "<<b/2.<<" "<<c<<" "<<d<<" "<<e<<" "<<f;
A cin utasítás
Ahhoz, hogy még általánosabb legyen a program a bemeneti adatokat beolvasásásra használjuk a cin
utasítást:
cin>>változó neve;
pl.
int hossz, szel;
cout<<”Olvasd be egy teglalap hosszusagat”;
cin>>hossz;
cout<<”Olvasd be egy teglalap szelesseget”;
cin>>szel;
(Megoldott feladat) Írjunk programot, amely beolvas három egész számot. Egy változóba kiszámolja a
számtani középarányosukat egy másikba a mértani középarányosukat és kiírassa az eredményt a
képernyőre.
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int a, b, c; Futtatás után a program várja, hogy az a
float ma, mg; változónak olvassunk be egy értéket. Majd a b
cout<<"a="; cin>>a; változónak és a c-nek. Miután beolvastuk, egy-egy
cout<<"b="; cin>>b; enterrel elválasztva, kiírja az eredményt.
cout<<"c="; cin>>c;
ma=(a+b+c)/3;
cout<<ma<<endl;
mg=sqrt(a*b*c);
cout<<mg<<'\n';
return 0;
}
Feladatok:
1. Olvassuk be egy könyv árát az x változóba, és két egymás utáni drágulás százalékos értékét (a és b
változók). Számítsuk ki, majd írassuk a képernyőre a könyv új árát.
2. Olvassunk be egy egész számot az x változóba, számítsuk ki, majd írassuk a képernyőre az
E(x)=(x+2)/(x2+6) valós kifejezés értékét.
1 1 1
3. Számítsuk ki, majd írassuk a képernyőre az 𝐸 = 𝑎 + 𝑏 + 𝑐 valós kifejezést, ahol a, b, c egész típusúak.
𝑎
6+
4+ 𝑏
5
4. Számítsuk ki, majd írassuk a képernyőre az 𝐸 = 3 1 𝑎 valós kifejezést, ahol a, b egész típusúak.
3+ +
3 𝑏
𝑎
√1+𝑏
5. Számítsuk ki, majd írassuk a képernyőre az 𝐸 = 𝑎2 + 𝑎 valós kifejezést, ahol a, b egész
2+ 𝑏
√3
típusúak.
6. Egy kosárban van n alma és m körte. Határozzuk meg és írassuk a képernyőre az almák és körték
arányát, valamint az összgyümölcs hány százaléka az alma?
7. Számítsuk ki egy kör területét és kerületét, ha ismerjük az átmérőjét.
8. Számítsuk ki egy henger teljesfelszínét és térfogatát, ha ismerjük az alap átmérőjét valamint a henger
magasságát.
9. Számítsátok ki egy derékszögű háromszög átfogóját és területét, ha ismerjük a két befogót.
10. Adott két pont a síkban: x1, y1, x2, y2,. Határozzuk meg a két pont által határolt szakasz hosszát.
11. Generáljunk három véletlenszerű kétjegyű számot, majd írassuk ki a számtani középarányosukat.
12. Generáljunk egy véletlenszerű háromjegyű Generáljunk egy véletlenszerű háromjegyű, valamint egy
véletlenszerű kétjegyű számot. Határozzuk meg a számok ötödik hatványainak különbségének az
utolsó számjegyét.
13. Kérd be Árpi órabérét. Ezután kérd be a ledolgozott időt órában és percben. Számold ki Árpi bérét 1
tizedes jegyre kerekítve.
14. Olvasd be egy piskótatorta átmérőjét és magasságát, valamint a ráteendő krém vastagságát cm-ben.
Számold ki mennyi krémre van szükség a torta bevonásához, ha 5 %-os a ráhagyás.
15. Mi az eredménye az alábbi programrészletnek:
float x=3.54,y=4.5,z;
int a=16,b=10,c;
a=y;
cout<<a<<" "<<y<<endl;
cout<<a/b<<endl;
c=x+y;
cout<<c<<endl;
z=2*x+c/b;
cout<<z<<endl;
z=z+(float)a/b;
cout<<z<<endl;
c=x+y+z;
cout<<c<<endl;
z=a/2.+b/2.+c/2.;
cout<<z<<endl;
z=ceil(x+y)+floor(x+y);
cout<<z<<endl;
Tesztek
1. Melyik értéket írja ki a következő C/C++ programrészlet, tudva, hogy x és y egész típusú
változók, z pedig egy valós változó?
x=30;
y=5;
z=(x+y)/6.0;
z=floor(z*100);
z=z/100;
cout<<z;
3. Az x és y változók valós típusúak. Határozza meg azt az utasítást, amely egyenértékű a mellékelt
utasítással. y=x*x;
a. y=sqrt(x); b. y=pow(x,2); c. y=floor(x); d. y=ceil(x);
4. Az x és y valós változók pozitív értékeket tárolnak. Adja meg a mellékelt kifejezés C/C++
nyelvre való átírását.
float x,y;
int z,t;
x=30.858;
y=7.158;
z=x-y;
t=x+y;
cout<<z<<" "<<t<<endl;
z=float(x)+ceil(y);
cout<<z<<endl;
z=10; t=3;
cout<<z/t/2.<<endl;
cout<<abs(t-z)<<endl;
cout<<(int)y/2.;
8. Az a, b, c egész típusú változók és d valós típusú változó. Melyik utasítással kapja a d változó az a, b
és c középarányosát?
a) d=(a+b+c)/3; b) d=a/3.+(float)b/3+c/3.;
c) d=(a+b+c)*2/6; d) d=a/3.+b/3+c/3;