Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

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

Hasonló előadás


Az előadások a következő témára: "Készítette: Gregorics Tibor: Szabóné Nacsa Rozália: Lektorálta: Szendrei Rudolf: Maximumkeresés tömbökben."— Előadás másolata:

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

2 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 Feladat

3 Megoldás Adatok előkészítése 13 Itt biztosítjuk, hogy a feladat elvégzéséhez szükséges adatok megfelelő formában álljanak rendelkezésünkre. Absztrakt megoldó program Eredmény megjelenítése 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. 2

4 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: állapottér Maximumkeresés tétele: előfeltétel m  n

5 Maximumkeresés tétele: struktogram max, ind, i := f(m), m, m+1 max < f(i) max, ind:= f(i), i SKIP i  n i:=i+1

6 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: tömbökre

7

8 i++i = i+1 i--i = i-1 i+= ai = i+a i-= ai = i-a i*= ai = i*a i/= ai = i/a i%= ai = i%a i = j = k; j = k;i = k; j = i++; j = i; i = i+1; j = ++i; j = i = i+1; 

9 mag feltétel for(program_1;feltétel;program_2){ mag } program_1 program_2 for(int i=0;i

10

11 Az első elem indexe: 0. Az utoló elem indexe: n-1. v[0] v[n-1] v[3] v.lob  0 v.hib  n-1 v.lov  v[0]

12 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!!!!! v[-1] v[n] Index túlcsordulás

13 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; } 123 visszatérési érték

14 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; }

15 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 int ind, max ; max=v[0]; ind = 0; for(int i=1; imax ){ max = v[i]; ind = i; } //Maximumkeresés int ind, max ; max=v[0]; ind = 0; for(int i=1; imax ){ max = v[i]; ind = i; }

16 int main() { //Adatok beolvasása //Maximumkeresés //Eredmény megjelenítése return 0; }

17 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;

18 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; }

19 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

20 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. 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. Konstans tömb létrehozása implicit konverzió

21 cout << " A tömb elemei: "; for (int i=0; i

22 int v[100]; int n; cout << "Adja meg a tomb elemszamat!" << endl; cin >> n;// Kell még egy ellenőrzés: 0> 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. 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ése A tömb elemeinek beolvasása A tömb elemeinek beolvasása

23 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> 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 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ése A tömb elemeinek beolvasása A tömb elemeinek beolvasása

24 new és delete v =new int[4]; v[0]v[1]v[2]v[3] int *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

25 #include 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 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];

26 cout << "Adja meg a tomb elemeit!" << endl; for(int i=0; i> v[i]; } //Maximumkeresés int ind, max ; max=v[0]; ind = 0; for(int i=1; imax ){ max = v[i]; ind = i; } cout << "Adja meg a tomb elemeit!" << endl; for(int i=0; i> v[i]; } //Maximumkeresés int ind, max ; max=v[0]; ind = 0; for(int i=1; imax ){ max = v[i]; ind = i; }

27 //Eredmény megjelenítése cout << "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ése cout << "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; }

28 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) #include atoi() atof()

29 mag feltétel do{ mag }while ( feltétel ) mag

30 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);

31 do{ // Beolvasás // Főprogram // Kiíratás cout << endl << ”Futtassam újra? (I/N) ”; Char ch; cin >> ch; }while(ch!=’n’ && ch!=’N’)

32


Letölteni ppt "Készítette: Gregorics Tibor: Szabóné Nacsa Rozália: Lektorálta: Szendrei Rudolf: Maximumkeresés tömbökben."

Hasonló előadás


Google Hirdetések