32
Készítette: Gregorics Tibor: [email protected] Szabóné Nacsa Rozália: [email protected] Lektorálta: Szendrei Rudolf: [email protected] Maximumkeresés tömbökben Maximumkeresés tömbökben

Elemi alkalmazások fejlesztése I

Embed Size (px)

DESCRIPTION

Maximumkeresés tömbökben. Elemi alkalmazások fejlesztése I. Készítette: Gregorics Tibor: [email protected] Szabóné Nacsa Rozália: [email protected] Lektorálta: Szendrei Rudolf: [email protected]. 4. 7. 0. 9. 6. 7. 9. 4. Feladat. Keressük meg egy tömb valamely maximális elemét. - PowerPoint PPT Presentation

Citation preview

Page 1: Elemi alkalmazások fejlesztése I

Készítette:Gregorics Tibor: [email protected]óné Nacsa Rozália: [email protected]

Lektorálta: Szendrei Rudolf: [email protected]

Maximumkeresés tömbökbenMaximumkeresés tömbökben

Page 2: Elemi alkalmazások fejlesztése I

Keressük meg egy tömb valamely maximális elemét.Az eredményt írjuk ki a szabványos outputra.

Keressük meg egy tömb valamely maximális elemét.Az eredményt írjuk ki a szabványos outputra.

Maximális elemek Maximális elemek

4 7 0 9 6 7 9 4

FeladatFeladat

Page 3: Elemi alkalmazások fejlesztése I

MegoldásMegoldás

Adatok előkészítéseAdatok előkészítése1

3

Itt biztosítjuk, hogy a feladat elvégzéséhez szükséges adatok megfelelő formában álljanak

rendelkezésünkre .

Itt biztosítjuk, hogy a feladat elvégzéséhez szükséges adatok megfelelő formában álljanak

rendelkezésünkre .

Absztrakt megoldó programAbsztrakt megoldó program

Eredmény megjelenítéseEredmény megjelenítése

A számítások elvégzéséhez felhasználunk egy maximunkeresést.

A számítások elvégzéséhez felhasználunk egy maximunkeresést.

Itt írjuk ki a maximális elem értékét és azt, hogy ez a tömb

hányadik eleme.

Itt írjuk ki a maximális elem értékét és azt, hogy ez a tömb

hányadik eleme.

2

Page 4: Elemi alkalmazások fejlesztése I

f: függvény m: az értelmezési tartomány alsó határa n: az értelmezési tartomány felső határa max: a maximális elem értéke ind: a maximális elem indexe i: segédváltozó

f: függvény m: az értelmezési tartomány alsó határa n: az értelmezési tartomány felső határa max: a maximális elem értéke ind: a maximális elem indexe i: segédváltozó

Maximumkeresés tétele: Maximumkeresés tétele: állapottérállapottér

Maximumkeresés tétele: Maximumkeresés tétele: előfeltételelőfeltétel

m n m n

Page 5: Elemi alkalmazások fejlesztése I

Maximumkeresés tétele: Maximumkeresés tétele: struktogramstruktogram

max, ind, i := f(m), m, m+1

max < f(i)

max, ind:=f(i), i

SKIP

i n

i:=i+1

Page 6: Elemi alkalmazások fejlesztése I

max, ind, i := v.lov, v.lob, v.lob+1

max < v[i]

max, ind:=v[i], i

SKIP

i v.hib

i:=i+1

Maximumkeresés tétele: Maximumkeresés tétele: tömbökretömbökre

Page 7: Elemi alkalmazások fejlesztése I
Page 8: Elemi alkalmazások fejlesztése I

i++ i = i+1i-- i = i-1i+= a i = i+ai-= a i = i-ai*= a i = i*ai/= a i = i/ai%= a i = i%a

i = j = k; j = k;i = k;

j = i++; j = i; i = i+1; j = ++i; j = i = i+1;

Page 9: Elemi alkalmazások fejlesztése I

mag

feltétel

for(program_1;feltétel;program_2){mag

}

program_1

program_2

for(int i=0;i<n;i++){mag

}

ciklusváltozó

for(int i=0;i<n;i++) utasítás;

Page 10: Elemi alkalmazások fejlesztése I
Page 11: Elemi alkalmazások fejlesztése I

4 7 0 9 6 7 9 4

Az első elem indexe: 0.Az első elem indexe: 0. Az utoló elem indexe: n-1.Az utoló elem indexe: n-1.

v[0]v[0] v[n-1]v[n-1]v[3]v[3]

v.lob 0 v.hib n-1 v.lov v[0]

Page 12: Elemi alkalmazások fejlesztése I

4 7 0 9 6 7 9 4

Ha a vektor -1-dik vagy az n - dik elemére

hivatkozunk - SAJNOS!!!! - nincs hibajelzés, de természetesen ilyenkor akármi is történhet.

Ha a vektor -1-dik vagy az n - dik elemére

hivatkozunk - SAJNOS!!!! - nincs hibajelzés, de természetesen ilyenkor akármi is történhet.

? ?

TILOS ILYET CSINÁLNI!!!!!TILOS ILYET CSINÁLNI!!!!!

v[-1] v[n]

Index túlcsordulásIndex túlcsordulás

Page 13: Elemi alkalmazások fejlesztése I

int main(){ //Adatok beolvasása

//Maximumkeresés

//Eredmény megjelenítése

return 0;}

int main(){ //Adatok beolvasása

//Maximumkeresés

//Eredmény megjelenítése

return 0;}

1

2

3

visszatérési értékvisszatérési érték

Page 14: Elemi alkalmazások fejlesztése I

int main(){ //Adatok beolvasása

//Maximumkeresés

//Eredmény megjelenítése

return 0;}

int main(){ //Adatok beolvasása

//Maximumkeresés

//Eredmény megjelenítése

return 0;}

1

2

3

2

1

Page 15: Elemi alkalmazások fejlesztése I

max, ind, i := v.lov, v.lob, v.lob+1

max < v[i]

max, ind:=v[i], i

SKIP

i v.hib

i:=i+1

//Maximumkeresésint ind, max ;max=v[0]; ind = 0; for(int i=1; i<n; i++){

if( v[i]>max ){max = v[i]; ind = i;

}}

//Maximumkeresésint ind, max ;max=v[0]; ind = 0; for(int i=1; i<n; i++){

if( v[i]>max ){max = v[i]; ind = i;

}}

Page 16: Elemi alkalmazások fejlesztése I

int main(){ //Adatok beolvasása

//Maximumkeresés

//Eredmény megjelenítése

return 0;}

2

33

2

1

Page 17: Elemi alkalmazások fejlesztése I

A tömb egyik maximális eleme: 9.Ez a tömb 7. eleme.

//Eredmény megjelenítése

cout << "A tömb egyik maximális eleme: " << max << "." << endl ; cout << "Ez a tömb " << ind+1 << ". eleme." << endl;

Page 18: Elemi alkalmazások fejlesztése I

int main(){ //Adatok beolvasása

//Maximumkeresés

//Eredmény megjelenítése

return 0;}

int main(){ //Adatok beolvasása

//Maximumkeresés

//Eredmény megjelenítése

return 0;}

1

2

3

1

2

3

Page 19: Elemi alkalmazások fejlesztése I

konstans tömb

statikus helyfoglalású tömb

dinamikus helyfoglalású tömb

konstans tömb

statikus helyfoglalású tömb

dinamikus helyfoglalású tömb

Page 20: Elemi alkalmazások fejlesztése I

const int v[] = {4, 7, 0, 9, 6, 7, 9, 4};

const int n = sizeof(v)/sizeof(v[0]);

A tömb egész számokat tartalmaz

A tömb egész számokat tartalmaz

A tömb elemeinek értékét a program futása közben nem

változtatjuk meg.

A tömb elemeinek értékét a program futása közben nem

változtatjuk meg.

n a tömb elemeinek száma.

n a tömb elemeinek száma.

A tömb elemszámát a program futása közben nem változtatjuk

meg.

A tömb elemszámát a program futása közben nem változtatjuk

meg.

Konstans tömb létrehozásaKonstans tömb létrehozása

implicit konverzióimplicit konverzió

Page 21: Elemi alkalmazások fejlesztése I

cout << " A tömb elemei: ";for (int i=0; i<n; i++){

cout << v[i];if (i != (n-1)) cout << ", ";else cout << ". " << endl;

}

cout << " A tömb elemei: ";for (int i=0; i<n; i++){

cout << v[i];if (i != (n-1)) cout << ", ";else cout << ". " << endl;

}

A tömb elemei: 4,7,0,9,6,7,9.

A tömb megjelenítéseA tömb megjelenítése

Page 22: Elemi alkalmazások fejlesztése I

int v[100];int n;

cout << "Adja meg a tomb elemszamat!" << endl;cin >> n; // Kell még egy ellenőrzés: 0<n<=100

cout << "Adja meg a tomb elemeit!" << endl;for(int i=0; i<n; i++){

cout << i+1 << ". elem: ";cin >> v[i];

}

A tömb egész számokat tartalmaz

A tömb egész számokat tartalmaz

A tömb elemeinek számára adott felső korlát.

A tömb elemeinek számára adott felső korlát.

n a tömb elemeinek száma.

n a tömb elemeinek száma.

A tömb elemszámát a program futása közben olvassuk be és

ellenőrizzük

A tömb elemszámát a program futása közben olvassuk be és

ellenőrizzük

Statikus helyfoglalású tömb létrehozása és feltöltéseStatikus helyfoglalású tömb létrehozása és feltöltése

A tömb elemeinek beolvasása

A tömb elemeinek beolvasása

Page 23: Elemi alkalmazások fejlesztése I

int* v;int n;

cout << "Adja meg a tomb elemszamat!" << endl;cin >> n; // Kell még egy ellenőrzés: n>0

v = new int[n];

cout << "Adja meg a tomb elemeit!" << endl;for(int i=0; i<n; i++){

cout << i+1 << ". elem: ";cin >> v[i];

}

A tömb egész számokat tartalmaz

A tömb egész számokat tartalmaz

A tömb elemei számára lefoglal elegendő helyet

A tömb elemei számára lefoglal elegendő helyet

n a tömb elemeinek száma.

n a tömb elemeinek száma.

A tömb elemszámát a program futása közben olvassuk be és

ellenőrizzük

A tömb elemszámát a program futása közben olvassuk be és

ellenőrizzük

Dinamikus helyfoglalású tömb létrehozása és feltöltéseDinamikus helyfoglalású tömb létrehozása és feltöltése

A tömb elemeinek beolvasása

A tömb elemeinek beolvasása

Page 24: Elemi alkalmazások fejlesztése I

new és deletenew és delete

v =new int[4];v =new int[4];

v[0] v[1] v[2] v[3]

int *v;int *v;

delete[ ] v;delete[ ] v;

v[0] v[1] v[2] v[3]Amikor nincs rá tovább

szükségünk, felszabadítjuk a lefoglalt területet.

Amikor nincs rá tovább szükségünk, felszabadítjuk

a lefoglalt területet.

1

2

3

Page 25: Elemi alkalmazások fejlesztése I

#include <iostream>using namespace std;int main(){//Adatok beolvasása

int* v;int n;

cout << "Adja meg a tomb elemszamat!" << endl;cin >> n;if(n<=0){

cout << "Hibás adat!" << endl;char ch; cin >> ch;exit(1);

}v = new int[n];

#include <iostream>using namespace std;int main(){//Adatok beolvasása

int* v;int n;

cout << "Adja meg a tomb elemszamat!" << endl;cin >> n;if(n<=0){

cout << "Hibás adat!" << endl;char ch; cin >> ch;exit(1);

}v = new int[n];

Page 26: Elemi alkalmazások fejlesztése I

cout << "Adja meg a tomb elemeit!" << endl;for(int i=0; i<n; i++){

cout << i+1 << ". elem: ";cin >> v[i];

}

//Maximumkeresésint ind, max ;max=v[0]; ind = 0; for(int i=1; i<n; i++){

if( v[i]>max ){max = v[i]; ind = i;

}}

cout << "Adja meg a tomb elemeit!" << endl;for(int i=0; i<n; i++){

cout << i+1 << ". elem: ";cin >> v[i];

}

//Maximumkeresésint ind, max ;max=v[0]; ind = 0; for(int i=1; i<n; i++){

if( v[i]>max ){max = v[i]; ind = i;

}}

Page 27: Elemi alkalmazások fejlesztése I

//Eredmény megjelenítésecout << "A tömb egyik maximális eleme: "

<< max << "." << endl ;

cout << "Ez a tömb " << ind+1 << ". eleme." << endl;

delete[] v;

char ch;

cin >> ch;

return 0;}

//Eredmény megjelenítésecout << "A tömb egyik maximális eleme: "

<< max << "." << endl ;

cout << "Ez a tömb " << ind+1 << ". eleme." << endl;

delete[] v;

char ch;

cin >> ch;

return 0;}

Page 28: Elemi alkalmazások fejlesztése I

int i;

string str;

cin >> str;

i = atoi(str.c_str());

bool hiba = (i == 0 && str != ”0”);

int i;

string str;

cin >> str;

i = atoi(str.c_str());

bool hiba = (i == 0 && str != ”0”);

Adatellenőrzés (egészek beolvasása)Adatellenőrzés (egészek beolvasása)

#include <string>#include <string>

atoi()atof()

Page 29: Elemi alkalmazások fejlesztése I

mag

feltétel

do{mag

}while ( feltétel )

mag

Page 30: Elemi alkalmazások fejlesztése I

bool hiba;do{

cout << endl << ”Kérek egy természetes számot:”; string str;cin >> str;n = atoi(str.c_str());if(hiba = ((n==0 && str!=”0”) || n<0))

cout << ”Hibás adat!”;}while(hiba);

Page 31: Elemi alkalmazások fejlesztése I

do{// Beolvasás

// Főprogram

// Kiíratás

cout << endl << ”Futtassam újra? (I/N) ”; Char ch; cin >> ch;

}while(ch!=’n’ && ch!=’N’)

Page 32: Elemi alkalmazások fejlesztése I