/* 2. felev, uj tematika, C++ nyelv A C++ nem obj,orient.ujdonsagai
8. gyak GEPESZ Egyszeru pelda osztalyra es
egyedre.
// 1. prg: cimszerinti ertekatadas referenciavaltozok segitsegevel:
/*
#include <stdio.h>
#include <conio.h>
#include <iostream.h> //ez az osztalydeklaracio kell a cin es cout-hoz
void szelsoertekek(int a, int b, int& max, int& min)
{
if (a > b) { max= a; min= b;} else {max= b; min= a;};
}
void main(void)
{ int c, d, nagy, kicsi;
clrscr();
cout << "Cimszerinti ertekatadas demo" << endl;
do
{cout << "Adj meg ket egesz szamot!" << endl;
cout << "c=";
cin >> c;
cout << "d=";
cin >> d;
szelsoertekek(c, d, nagy, kicsi);
cout << "A nagyobbik= " << nagy << ", a kisebbik= " << kicsi << endl;
}
while (c!=d);
cout << "vege." ;
getch();
}
*/
//2. pelda: Dinamikus memoriakezeles new es delete segitsegevel:
/*
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream.h>
//probaljuk ki nagyobb ertekkel is, pl 1600 !
#define db 16
void main()
{
randomize();
float * valosmut;
float * vektmut;
clrscr();
cout << "Dinamikusan foglalunk helyet egy valos skalarnak \
es egy vektornak" << endl;
valosmut = new float;
vektmut = new float[db];
if (!valosmut || !vektmut)
{ cout << "Memoriafoglalas sikertelen!" << endl; exit(1); }
*valosmut= random(25)/11.5;
for (int i=0; i<db; i++) vektmut[i]= random(25)/12.0;
//kiiratas:
for (i=0; i<db; i++)
cout << "vektmut[" << i << "]= " << vektmut[i] << endl;
cout << "*valosmut= " << *valosmut << endl;
cout << "Majd felszabaditjuk a foglalt helyeket. " << endl;
delete valosmut;
delete vektmut; //delete[] vektmut; Borland C++ Builder eseteben
getch();
}
*/
//3. pelda: Alapertelmezett fuggvenyargumentum, osztaly, egyed pelda
// Lásd előadásanyagot is!
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <iostream.h>
#include <ctype.h>
class Szovegparos
{private: char forras[80],
cel[80];
public: void MyStrncpy(int honnan=0, int mennyit=2000);
void SetForras(char forrasbe[]){strcpy(forras,forrasbe);}
void PrintCel(){puts(cel);}
};
Szovegparos obj;
char forrasbe[80];
int honnan, mennyit;
char c1,c2;
void main()
{clrscr(); c1='N'; c2='N';
puts("Add meg az s1 szoveget:");
gets(forrasbe); obj.SetForras(forrasbe);
cout << "Megadja a honnan poziciot? (I/N): " << endl;
if ((c1=toupper(getch())) == 'I')
{cout << "honnan= " ; cin >> honnan;}
if (c1=='I')
{
cout << "Megadja a mennyit erteket? (I/N): " << endl;
if ((c2=toupper(getch())) == 'I')
{cout << "mennyit= " ; cin >> mennyit;}
}
if (c2=='I') obj.MyStrncpy(honnan, mennyit);
else if (c1=='I') obj.MyStrncpy(honnan);
else obj.MyStrncpy();
obj.PrintCel();
getch();
}
void Szovegparos::MyStrncpy(int honnan, int mennyit)
{if (mennyit==2000) strncpy(cel, forras+honnan, strlen(forras)-honnan+1);
else strncpy(cel, forras+honnan, mennyit);
}
//forras: kerekparverseny, honnan: N, kiir: kerekparverseny
//forras: kerekparverseny, honnan=8, meddig: N : kiir:verseny
//forras: kerekparverseny, honnan=5, meddig: 3 : kiir: par