INFORMATIKA tétel 2017

Hasonló dokumentumok
INFORMATIKA tétel 2019

INFORMATIKA tétel 2018

INFORMATIKA javítókulcs 2016

Felvételi tematika INFORMATIKA

Programozás C nyelven (13. ELŐADÁS) Sapientia EMTE

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

Programozás II. 2. Dr. Iványi Péter

1. Alapok. Programozás II

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

Maximum kiválasztás tömbben

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is

Adatbázis rendszerek Gy: Algoritmusok C-ben

C programozás. { Márton Gyöngyvér, 2009 } { Sapientia, Erdélyi Magyar Tudományegyetem }

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

/* Az iter függvény meghívása és a visszatérő érték átadása a gyok változóba */ gyok = iter( n, a, e ) ;

Szerző Lővei Péter LOPSAAI.ELTE IP-08PAEG/25 Daiki Tennó

1. numere.txt n (1 n 10000) n növekvő kilenc a) Pascal/C++ Például: NUMERE.TXT

Programozás C nyelven 5. ELŐADÁS. Sapientia EMTE

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Programozás C nyelven (10a. ELŐADÁS) Sapientia EMTE

BABEŞ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR BBTE Matek-Infó verseny 1. tételsor INFORMATIKA írásbeli. A versenyzők figyelmébe:

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb

Programozás C nyelven (9. ELŐADÁS) Sapientia EMTE

Programozás I gyakorlat. 10. Stringek, mutatók

1. Írjunk programot mely beolvas két egész számot és kinyomtatja az összegüket.

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

Dinamikus mátrixok. Dinamikus többdimenziós tömbök

Programozás C++ -ban 2007/1

Megoldott programozási feladatok standard C-ben

Megoldott programozási feladatok standard C-ben

Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával)

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Bevezetés a programozásba I 8. gyakorlat. C++: szövegfolyamok, intelligens tömbök. Adatfolyamok Hibalehetőségek

Programozás II. 4. Dr. Iványi Péter

Programozás C és C++ -ban

Bevezetés a programozásba I 8. gyakorlat. C++: szövegfolyamok, intelligens tömbök

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Programozás I. zárthelyi dolgozat

Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa!

Programozás alapjai 8.Gy: Program struktúra

Egyszerű programozási tételek

Bevezetés a programozásba I.

Függvények int, long 1. Adott a mellékelt f alprogram.

Programozás alapjai 9.Gy: Struktúra 2.

Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE

Írjon olyan programot a standard könyvtár alkalmazásával, amely konzolról megadott valós adatokból meghatározza és kiírja a minimális értékűt!

Programozás C nyelven (10. ELŐADÁS) Sapientia EMTE

5. Gyakorlat. struct diak {

Bevezetés a programozásba. 8. Előadás: Függvények 2.

10. gyakorlat Tömb, mint függvény argumentum

A feladat lényege egy felhasználói típusnak a zsák típusnak a megvalósítása.

Géptermi zh-írás forgatókönyve

Bevezetés a programozásba I.

Programozás 6. Dr. Iványi Péter

I. ALAPALGORITMUSOK. I. Pszeudokódban beolvas n prim igaz minden i 2,gyök(n) végezd el ha n % i = 0 akkor prim hamis

Programozás I. gyakorlat

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

A rész (30 pont) A.1. Vajon mit csinál? (5 pont) A generál(n) algoritmus egy n természetes számot dolgoz fel (0 < n < 100).

Példák tematikus csoportosításban

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

10. gyakorlat. Pointerek Tárolási osztályok

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

0.1. Mi az a standard be- és kimenet? A két mintafeladat leírása

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE cím: Név: Kurzuskód:

5. gyakorlat. Konstansok Tömbök Stringek

Programozási alapismeretek 2009/2010

Bevezetés a programozásba I.

C programozási nyelv Pointerek, tömbök, pointer aritmetika

I. Egydimenziós tömb elemeinek rendezése

Körkörös listák. fej. utolsó. utolsó. fej

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Elemi alkalmazások fejlesztése I. Olvassunk be egy fájlból egész számokat egy tömbbe. Keressük meg a tömb valamely

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Programozási alapismeretek 1. előadás

Struktúra nélküli adatszerkezetek

7. fejezet: Mutatók és tömbök

1. Olvassuk be két pont koordinátáit: (x1, y1) és (x2, y2). Határozzuk meg a két pont távolságát és nyomtassuk ki.

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:

Alkalmazott modul: Programozás. Programozási tételek, rendezések Giachetta Roberto

Bevezetés a programozásba I.

Bevezetés a programozásba. 5. Előadás: Tömbök

Algoritmizálás + kódolás C++ nyelven és Pascalban

Programozás C++ -ban

3. Osztályok II. Programozás II

7/8. gyakorlat Karaktertömbök és sztringkezelés

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

1. feladat Készítse el szövegszerkesztővel, majd mentse osztály.txt néven a következő tartalmú szöveges fájlt:

117. AA Megoldó Alfréd AA 117.

Bevezetés a C++ programozásba

STL gyakorlat C++ Izsó Tamás május 9. Izsó Tamás STL gyakorlat/ 1

Vezérlési szerkezetek

1. Jelölje meg az összes igaz állítást a következők közül!

Szövegek C++ -ban, a string osztály

BACKTRACKING Visszalépéses keresés

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Átírás:

INFORMATIKA tétel 2017 ELMÉLETI TÉTEL: Sorold fel a rekurzív függvények/eljárások jellemzőit! Szemléltesd a fogalmakat egy konkrét példán! [1 pont] GYAKORLATI TÉTEL: 1. Legyen az alábbi pszeudokód programrészlet (az x[1..n] (n 2) tömbszakasz egy természetesszámsorozatot tárol, az n változó pedig ennek hosszát): k = 0 minden i = 1,n-1 végezd ha x[i] == x[i+1] akkor k = 1 kiír k Mit ír ki a program, ha n=5, a számsorozat elemei pedig 13, 17, 23, 23, 53? [0.5 pont] 1 Adj példát olyan 4-elemű számsorozatokra, amelyekre 0, illetve 1 kerül kiírásra! [0.5 pont] 13, 17, 23, 53 13, 17, 23, 23 2. Legyen az alábbi pszeudokód programrészlet (az x[1..n] (n 2) tömbszakasz egy természetesszámsorozatot tárol, az n változó pedig ennek hosszát): k = 0 minden i = 1,n-1 végezd minden j = i+1,n végezd ha x[i] == x[j] akkor k = 1 kiír k Mit ír ki a program, ha n=5, a számsorozat elemei pedig 13, 17, 23, 3, 53? [0.5 pont] 0 Adj példát olyan 4-elemű számsorozatra, amelyre az első feladat kódrészlete 0-t a második feladaté pedig 1- et ír ki! [0.5 pont] 23, 17, 23, 53 3. Legyen az alábbi pszeudokód programrészlet: minden i = 1,3 végezd minden j = 1,3 végezd minden k = 1,3 végezd kiír i,j,k,, Mit ír ki a fenti programrészlet? [0.5 pont] 111,112,113,121,122,123,131,132,133,211,212,213,221,222,223,231,232,233,311,312,313,321,322,323,331,

332,333 Hogyan módosítanád a ciklusváltozók határait (aláhúzott értékek), hogy az {1,2,3,4 halmaz harmadrendű kombinációi (123,124,134,234) kerüljenek kiírásra (hatékony módon)? [0.5 pont] minden i = 1,2 végezd minden j = i+1,3 végezd minden k = j+1,4 végezd kiír i,j,k,, 4. Legyen az alábbi pszeudokód nyelven írt rekurzív eljárás, ahol x egydimenziós tömb 1-től n-ig indexelt cellákkal (x[1..n]) (az x és n aláhúzott paraméterek cím szerint, k pedig érték szerint kerül átadásra). Mi kerül kiírásra az E(x,3,1) eljáráshívás nyomán, ha tudjuk, hogy az f függvény aszerint térít vissza IGAZ-at/ HAMIS-at, hogy az x[k] elem különbözik-e az x[1..k-1] szakasz elemeitől vagy sem; a kiír(x,n) eljárás kiírja az x[1..n] tömbszakasz elemeit, majd újsorba ugratja a kurzort. 123 132 213 231 312 321 [1 pont] E(x[],n,k) minden x[k] = 1,n végezd ha f(x,k) akkor ha k < n akkor E(x,n,k+1) különben kiír(x,n) Megjegyzés: Az 5-9 feladatok esetében, használj alprogramot valahányszor célszerűnek találod. Törekedj hatékony megoldásra mind az időigény, mind a tárhely szempontjából. Lásd el beszédes kommentekkel programjaidat. 5. Írj Pascal vagy C/C++ programot, amely billentyűzetről beolvassa az n értéket (2 n 999), valamint egy n elemű növekvő számsorozatot (elemei egész számok), majd kiír a képernyőre egy megfelelő üzenetet aszerint, hogy a számsorozat halmaznak tekinthető-e (elemei páronként különböznek). [1 pont] #include <stdio.h> #include <stdlib.h> int main() { // az összehasonlítás pillanatában // az a és b változók az utolsóelőttiként és utolsóként beolvasott számokat tárolják int n, a, b; printf("n: "); scanf("%i", &n); printf("szam: "); scanf("%i", &a); while (n > 1){ printf("szam: "); scanf("%i", &b); if (b == a) { printf("nem hamaz\n"); a = b; n--; printf("halmaz\n");

6. Adottak n síkbeli pont x és y koordinátái. Írj Pascal vagy C/C++ alprogramot, amely paraméterként megkapja az n értéket (2 n 999), valamint a pontok koordinátáit (valós értékek), és kiírja a képernyőre a két legközelebbi pont koordinátáit. [1 pont] #include <stdio.h> #include <stdlib.h> #include <math.h> //a beszédes plusz kiírások nem jelentettek se több, se kevesebb pontot void szamol(int n, float *x, float *y){ int i, j, temp1, temp2; float d, maxd = LONG_MAX; int maxi = 0, maxj = 0; for(i = 0; i < n - 1; i++){ for(j = i + 1; j < n; j++){ temp1 = x[i] - y[i]; temp2 = x[j] - y[j]; d = sqrt(temp1 * temp1 + temp2 * temp2); printf("%5.2f %5.2f %5.2f %5.2f %5.2f \n", d, x[i], y[i], x[j], y[j]); if( d < maxd){ maxd = d; maxi = i; maxj = j; printf("a legkisebb tavolsag\n"); printf("%5.2f %5.2f %5.2f %5.2f %5.2f ", maxd, x[maxi], y[maxi], x[maxj], y[maxj]); int main(){ //nem volt kötelező a main-t is megírni float *a, *b; int n, i; FILE *fin; fin = fopen("be.txt","r"); fscanf(fin,"%i",&n); a = (float*)malloc(n * sizeof(float)); b = (float*)malloc(n * sizeof(float)); for(i = 0; i < n; i++){ fscanf(fin, "%f", &a[i]); for(i = 0; i < n; i++){ fscanf(fin, "%f", &b[i]); szamol(n, a, b); 7. Írj Pascal vagy C/C++ programot, amely a matrix.txt állományból beolvassa az n és m értékeket (2 n,m 999), valamint egy nxm méretű mátrixot (elemei egész számok a [0,10000) intervallumból), amelynek minden sora egy-egy halmaznak tekintendő (elemeik páronként különböznek). Írasd ki az eredmeny.txt állományba a mátrix sorai képezte halmazok metszetét (azaz, azok közös elemeit). [1 pont] #include <iostream> #include <fstream> #include <iomanip> using namespace std; Mivel ismerjuk az intervallumot, amelybol a szamok szarmazhatnak, hasznalhatunk karakterisztikus tombot. int main(){ int n, m, x, mmax = 0; mmax - a legnagyobb elofordulo ertek int kar[10000] = {0; a legnagyobb elem, ami elofordulhat az a 9999, lenullazzuk a tomb elemeit.

ifstream f("be.txt"); if (f.fail()){ cout << "Allomanymegnyitasi hiba!"; ofstream g("ki.txt"); if (f.fail()){ cout << "Allomanymegnyitasi hiba!"; f >> n >> m; A matrix beolvasasa szukseges, de az elemeket nem szukseges eltarolni, menet kozben fel is dolgozzuk oket. for (int i=0; i<n; ++i) for (int j=0; j<m; ++j){ f >> x; kar[x]++; if (mmax < x) mmax = x; f.close(); Minden olyan eleme a karakterisztikus tombnek, ami n-szer fordult elo, definicio szerint minden sorban elofordult egyszer, tehat eleme a metszetnek for (int i=0; i<=mmax; ++i){ if (kar[i] == n) g << setw(5) << i; 8. Írj Pascal vagy C/C++ kódrészletet, amely kiírja a képernyőre az a[1..n][1..m][1..p] háromdimenziós tömb sorai képezte halmazok (elemeik páronként különböznek) egyesített halmazát (a tömb első sora elemeit az a[1][1][1..p] cellák, az utolsó sor elemeit pedig az a[n][m][1..p] cellák tárolják). (2 n,m,p 99; a tömb elemei egész számok) [1 pont] #include <iostream> #include <fstream> #include <iomanip> #include <algorithm> using namespace std; Mivel nem ismerjuk az intervallumot, amelybol a szamok szarmazhatnak, nem hasznalhatunk karakterisztikus tombot! Ehelyett novekvo sorba rendezzuk az osszes elemet, es kiirjuk egy bejarassal az egymastol kulonbozoket. 3D tomb kiiratasahoz hasznalhato fuggveny, "laponkent" ir ki void kiir3d(int ***t, int n, int m, int p); 1D tomb kiiratasahoz hasznalhato fuggveny void kiir1d(int *t, int n); /************************************************************************************** Az egyesitett halmaz elemeit kiiro fuggveny, ami a 8. feladat egy lehetseges hatekony megoldasa. **************************************************************************************/ void egyesit(int ***a, int n, int m, int p){ int nn = n*m*p; A haromdimenzios tombot atalakitjuk egydimenzios tombbe int *t = new int [nn]; for (int i=0; i<n; ++i)

for (int j=0; j<m; j++) for (int k=0; k<p; k++) t[i*m*p+j*p+k] = a[i][j][k]; cout << "Egdimenzios formaban: " << endl; kiir1d(t,nn); Elrendezzuk a tombot a beepitett QuickSort-tal (sort) sort(t,t+nn); cout << "Rendezes utan: " << endl; kiir1d(t,nn); Kiirjuk az egymastol kulonbozo elemeket - minden elemvaltaskor kiirjuk az uj elemet cout << "Az egyesitett halmaz elemei: " << endl << setw(4) << t[0]; beallitjuk az uj elemet mar kiirtnak int elozo = t[0]; for (int i=1; i<nn; ++i){ ha elemvaltas tortent if (t[i]!= elozo){ cout << setw(4) << t[i]; beallitjuk az uj elemet mar kiirtnak elozo = t[i]; /************************************************************************************** A kodreszlet vege. **************************************************************************************/ int main(){ int ***t, n, m, p; ifstream f("be.txt"); if (f.fail()){ cout << "Allomanymegnyitasi hiba!"; f >> n >> m >> p; Dinamikusan lefoglalunk helyet egy adott meretu 3D tombnek Alternativ lehetoseg, de nem mindig mukodik tarhelyproblemak miatt: int t[n][m][p]; t = new int** [n]; for (int i=0; i<n; ++i){ t[i] = new int * [m]; for (int j=0; j<m; ++j) t[i][j] = new int [p]; Beolvassuk a szamokat for (int i=0; i<n; ++i) for (int j=0; j<m; j++) for (int k=0; k<p; k++) f >> t[i][j][k]; f.close(); cout << "A beolvasott elemek: " << endl; kiir3d(t,n,m,p); Vegrehajtjuk az egyesitett halmazhoz szukseges muveleteket egyesit(t,n,m,p); Az egyesitett halmaz elemeit kiiro fuggveny 3D tomb kiiratasahoz hasznalhato fuggveny, "laponkent" ir ki void kiir3d(int ***t, int n, int m, int p){

for (int i=0; i<n; ++i){ for (int j=0; j<m; j++){ for (int k=0; k<p; k++) cout << setw(4) << t[i][j][k]; cout << endl; cout << endl << endl; 1D tomb kiiratasahoz hasznalhato fuggveny void kiir1d(int *t, int n){ for (int k=0; k<n; k++) cout << setw(4) << t[k]; cout << endl << endl; 9. Egy felhőkarcoló földszintjén, egy egyszemélyes felvonó előtt, n személy áll. A felvonó sajátossága, hogy (1) minden használat után automatikusan visszatér a földszintre, és (2) az i-edik emeletre éppen i időegység alatt megy fel és tér vissza. Ha a be- és kiszállási időt elhanyagoljuk, akkor mennyi a földszinti minimális ÖSSZVÁRAKOZÁSI (a személyek várakozási ideinek összege) idő (hány időegység) ahhoz, hogy az összes személy hazajusson? Írj Pascal vagy C/C++ programot, amely szöveges állományból beolvassa az n értéket (1 n 999), majd pedig azt, hogy a személyek mely emeleteken laknak (nullánál nagyobb természetes számok), és kiírja a képernyőre a kért minimális időegységszámot. [1 pont] Példa bement: 5 3 9 2 14 7 Példa kimenet: 40 Ötlet (feltételezzük, hogy az emeletértékeket az e[1..n] tömb tárolja): Mivel az elsőkét liftező személy utazási ideje (n-1) személy várakozási idejébe kerül bele, ezért a legalacsonyabb emeleten lakó személynek kell elsőként használnia a felvonót Ha a legmagasabb emeleten lakó személy használja utolsóként a felvonót, akkor az ő utazási ideje egyetlen személy várakozási idejébe se kerül bele. Rendezzük az e tömb elemeit növekvő sorrendbe (qsort) Az eredmény: i=1 n-1 (e[i]*(n-i))