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

Elemi alkalmazások fejlesztése I.

Hasonló előadás


Az előadások a következő témára: "Elemi alkalmazások fejlesztése I."— Előadás másolata:

1 Elemi alkalmazások fejlesztése I.
Maximumkeresés tömbökben Elemi alkalmazások fejlesztése I. Készítette: Gregorics Tibor: Szabóné Nacsa Rozália: Lektorálta: Szendrei Rudolf:

2 Feladat 4 7 9 6 Keressük meg egy tömb valamely maximális elemét.
Az eredményt írjuk ki a szabványos outputra. 4 7 9 6 Maximális elemek

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

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

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

6 Maximumkeresés tétele: tömbökre
max, ind, i := v.lov, v.lob, v.lob+1 i  v.hib max < v[i] max, ind:= v[i], i SKIP i:=i+1

7 "Kódolás"

8 Speciális értékadások
j = i++; j = i; i = i+1; j = ++i; j = i = i+1; i++ i = i+1 i-- i = i-1 i+= a i = i+a i-= a i = i-a i*= a i = i*a i/= a i = i/a i%= a i = i%a i = j = k; j = k;i = k;

9 For utasítás program_1 feltétel mag program_2
for(program_1;feltétel;program_2){ mag } ciklusváltozó for(int i=0;i<n;i++){ mag } for(int i=0;i<n;i++) utasítás;

10

11 Tömbök indexelése 4 7 9 6 v[0] v[3] v[n-1] v.lob  0 v.hib  n-1
Az első elem indexe: 0. Az utoló elem indexe: n-1. 4 7 9 6 v[0] v[3] v[n-1] v.lob  0 v.hib  n-1 v.lov  v[0]

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

13 Main függvény int main() { //Adatok beolvasása //Maximumkeresés 1
//Eredmény megjelenítése return 0; } 1 visszatérési érték 2 3

14 Main függvény 2 int main() { //Adatok beolvasása //Maximumkeresés
//Eredmény megjelenítése return 0; } 1 1 2 2 3

15 max, ind, i := v.lov, v.lob, v.lob+1
i  v.hib max < v[i] max, ind:= v[i], i SKIP //Maximumkeresés int ind, max ; max=v[0]; ind = 0; for(int i=1; i<n; i++){ if( v[i]>max ){ max = v[i]; ind = i; } i:=i+1

16 Main függvény 3 int main() { //Adatok beolvasása //Maximumkeresés 1
//Eredmény megjelenítése return 0; } 1 2 2 3 3

17 //Eredmény megjelenítése
cout << "A tömb egyik maximális eleme: " << max << "." << endl ; cout << "Ez a tömb " << ind+1 << ". eleme." << endl; A tömb egyik maximális eleme: 9. Ez a tömb 7. eleme.

18 Main függvény 1 int main() { //Adatok beolvasása //Maximumkeresés 1
//Eredmény megjelenítése return 0; } 1 1 2 2 3 3

19 Háromféle megoldás a tömb használatára
konstans tömb statikus helyfoglalású tömb dinamikus helyfoglalású tömb

20 Konstans tömb létrehozása
A tömb elemeinek értékét a program futása közben nem változtatjuk meg. A tömb egész számokat tartalmaz const int v[] = {4, 7, 0, 9, 6, 7, 9, 4}; const int n = sizeof(v)/sizeof(v[0]); implicit konverzió A tömb elemszámát a program futása közben nem változtatjuk meg. n a tömb elemeinek száma.

21 A tömb megjelenítése 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.

22 Statikus helyfoglalású tömb létrehozása és feltöltése
A tömb egész számokat tartalmaz A tömb elemeinek számára adott felső korlát. 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]; } n a tömb elemeinek száma. A tömb elemeinek beolvasása A tömb elemszámát a program futása közben olvassuk be és ellenőrizzük

23 Dinamikus helyfoglalású tömb létrehozása és feltöltése
A tömb egész számokat tartalmaz n a tömb elemeinek száma. 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 elemszámát a program futása közben olvassuk be és ellenőrizzük A tömb elemei számára lefoglal elegendő helyet A tömb elemeinek beolvasása

24 new és delete v[0] v[1] v[2] v[3] v[0] v[1] v[2] v[3] int *v;
v =new int[4]; 2 v[0] v[1] v[2] v[3] delete[ ] v; 3 v[0] v[1] v[2] v[3] Amikor nincs rá tovább szükségünk, felszabadítjuk a lefoglalt területet.

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

26 cout << "Adja meg a tomb elemeit!" << endl;
for(int i=0; i<n; i++){ cout << i+1 << ". elem: "; cin >> v[i]; } //Maximumkeresés int ind, max ; max=v[0]; ind = 0; for(int i=1; i<n; i++){ if( v[i]>max ){ 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; }

28 Adatellenőrzés (egészek beolvasása)
#include <string> int i; string str; cin >> str; i = atoi(str.c_str()); bool hiba = (i == 0 && str != ”0”); atoi() atof()

29 Do-while utasítás mag feltétel mag do{ mag }while ( feltétel )

30 Ellenőrzött adatbevitel
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 Program végtelenítése
do{ // Beolvasás // Főprogram // Kiíratás cout << endl << ”Futtassam újra? (I/N) ”; Char ch; cin >> ch; }while(ch!=’n’ && ch!=’N’)

32 Vége


Letölteni ppt "Elemi alkalmazások fejlesztése I."

Hasonló előadás


Google Hirdetések