e) Írj kódrészletet, mely az int d változó utolsó előtti bitjét 1-re állítja.

Hasonló dokumentumok
Programozás alapjai C nyelv 10. gyakorlat. Standard függvények. Union

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.

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

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

/* 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 ) ;

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus változók. Dinamikus változók. Dinamikus változók. Dinamikus változók. 7.

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

feladat pont min elért

INFORMATIKA tétel 2017

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

5. Gyakorlat. struct diak {

Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás

C memóriakezelés. Mutató típusú változót egy típus és a változó neve elé írt csillag karakterrel hozhatjuk létre.

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

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

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

1. Alapok. Programozás II

Programozás I gyakorlat

Országzászlók (2015. május 27., Sz14)

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

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

500. AA Megoldó Alfréd AA 500.

int tokeletes(int szam) { int i,oszto=0; for(i=1; i<szam; i++) { if(szam %i == 0) { oszto+=i; }

500. CC Megoldó Alfréd CC 500.

Programozás I gyakorlat

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

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

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

Példák tematikus csoportosításban

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

INFORMATIKA tétel 2018

Rekurzió. Programozás alapjai C nyelv 9. gyakorlat. Rekurzív algoritmus. Rekurzív algoritmus fajtái. Példa: n! (2) Példa: n!

Mérnöki programozás 7. Szerkesztette: dr. Vass Péter Tamás

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

Alprogramok, paraméterátadás

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

Függvény pointer. Feladat: Egy tömbben soroljunk fel függvényeket, és hívjuk meg valahányszor.

értékel függvény: rátermettségi függvény (tness function)

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

5. gyakorlat. Konstansok Tömbök Stringek

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

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

Típusok és konstansok

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

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r

BME MOGI Gépészeti informatika 6.

Programozás alapjai C nyelv 9. gyakorlat. Rekurzió. Rekurzív algoritmus

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás

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

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.

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

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

INFORMATIKA javítókulcs 2016

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Bevezetés a C++ programozási nyelvbe

3. Osztályok II. Programozás II

BME MOGI Gépészeti informatika 1.

AWK programozás, minták, vezérlési szerkezetek

Példatár a Programozás 1 tárgyhoz

Programozás I. gyakorlat

INFORMATIKA tétel 2019

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Programozás I. 5. Előadás: Függvények

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

Java II. I A Java programozási nyelv alapelemei

Programozás alapjai 2.Gy: A C nyelv alapjai P R O

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)

Mintavételes szabályozás mikrovezérlő segítségével

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

Informatika terméktervezőknek

main int main(int argc, char* argv[]) { return 0; } main return 0; (int argc, char* argv[]) main int int int main main main

Programozás C és C++ -ban

A programozás alapjai 1 Rekurzió

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

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

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

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

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

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

C string műveletek (string.h alkalmazása)

117. AA Megoldó Alfréd AA 117.

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

1. Írjunk programot mely beolvas két számot és ellenőrzi hogy mindkét szám zérus-e:

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

feladat pont min elért

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

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

Programozás I. gyakorlat

AWK programozás, minták, vezérlési szerkezetek

A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere

OOP: Java 8.Gy: Abstract osztályok, interfészek

S z á m í t ó g é p e s a l a p i s m e r e t e k

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Struktúrák (struct) A struktúra szerkezetét meghatározó deklaráció általános formája:

Programozás alapjai 5. gyakorlat Vezérlési szerkezetek egymásba ágyazása

Programozas 1. Strukturak, mutatok

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

NULLADIK MATEMATIKA ZÁRTHELYI

Átírás:

NEPTUN kód: NÉV: Aláírás: Programozás. NZH, 2016. november 28. BME-TTK, fizika BSc Arcképes igazolvány hiányában nem kezdheted meg a ZH-t. A feladatok megoldására összesen 90 perc áll rendelkezésre. Az 1. feladatot ezen a lapon oldd meg. A feladatlapot névvel ellátva akkor is be kell adni, ha semmilyen megoldást sem készítettél. Minden feladatmegoldást külön lapra írj! Minden lapra írd fel a neved és a neptun kódod, valamint a feladat sorszámát! Ezek hiányában a feladatot nem értékeljük. Szabványos C megoldásokat értékelünk csak. A kétoldalas C referencia összefoglaló használható, más írott, nyomtatott vagy elektronikus segédanyag használata tilos. feladat pont min elért 1. 12 2. 12 3. 12 4. 12 5. 12 60 21..20 elégtelen, 21..30 elégséges, 31..40 közepes, 41..50 jó, 51.. jeles 1. feladat (6 2 p) a) Definiálj egy típust vállalkozások alábbi adatainak logikusan rendszerezett tárolására: név (max. 50 karakter), adószám (hosszú egész), havi árbevétel (valós) és alkalmazotti létszám (egész). Rendeld hozzá a ceg típusazonosítót. Lásd a 2. feladatnál. b) Írj függvényt, mely két céget kap paraméterként, és egy logikai értékkel tér vissza, mely akkor igaz, ha a két adószám azonos. Lásd a 2. feladatnál. c) Írj függvényt, amely átvesz egy double tömböt, és visszatér a 63-as indexű elem címével, ha az létezik, különben érvénytelen memóriacímmel! double * cime(double * t, int n) if(63<n) return t+63; return NULL; d) Adott n egy egész típusú változó. Add meg azt a kifejezést, amely akkor, és csak akkor logikai igaz, ha n egy olyan négy- vagy ötjegyű szám, mely 113 többszöröse! n%113 == 0 && 1000<=n && n<100000 e) Írj kódrészletet, mely az int d változó utolsó előtti bitjét 1-re állítja. d = 2; if(d/2%2==0) d+=2; Bármelyik jó. f) Írj függvényt, mely a kapott szabályos C stringben megkeresi az első nagybetű karaktert, és lecseréli a megfelelő kisbetűre. Nincs teendő, ha nincs benne ilyen. void kisbe(char * s) int i=0; while(s[i]!= \0 &&(s[i]> Z A >s[i])) ++i; if(s[i]!= \0 ) s[i]+= a - A ; 2. feladat 4+4+4 p Az 1a típusát és 1b függvényét felhasználva... Készíts függvényt, amely paraméterként kap egy cégeket tartalmazó tömböt, és adószám szerinti sorrendbe rendezi azt. Ehhez felhasználhatod a könyvtári qsort függvényt is, további segédfüggvényt is definiálhatsz. Készíts függvényt, amely paraméterként kap két adószám szerint sorbarendezett cégeket tartalmazó tömböt, és egy egész értékkel tér vissza. A függvény számolja meg, hogy hány vállalkozás szerepel mindkét adatbázisban, és adja vissza ezt az értéket. Írj rövid programot, amely a már létező olvas függvény hívásával (lásd alább) létrehozza a két dinamikus tömböt, és betölti a vállalkozások adatait az adat1 ill. adat2 file-okból. Ezután a fent megírt függvények segítségével rendezd mindkét tömböt, majd határozd meg az egyesített adatbázis szükséges méretét, és

foglalj egy épp megfelelő méretű új tömböt. A duplikált cégek csak egyszer kerülnek be az összefésült tömbbe! Hívd meg a már létező egyesit függvényt, mely elvégzi a két adatbázis egyesítését. Ha foglaltál dinamikus memóriát, ne felejtsd el azt felszabadítani. Az alábbi függvényeket NEM KELL megírnod, de felhasználhatod: void olvas(ceg ** t, int * darab, char * filenev) Létrehoz egy megfelelő méretű dinamikus tömböt, feltölti a cégek adataival, és visszaadja a tömb címét, valamint a betöltött elemek számát. A másik létező függvény void egyesit(ceg * t1, int db1, ceg * t2, int db2, ceg * cel), mely elvégzi a megfelelő összefésülést a cél tömbbe. / * 1a * / typedef struct char nev[50+1]; long adosz; double arbe; int alk; ceg; / * 1b * / int azonos(ceg a, ceg b) return a.adosz==b.adosz; / * 2 * / #include <stdlib.h> int adoszhas(const void * a, const void * b) return ((ceg * )a)->adosz-((ceg * )b)->adosz; void rendez(ceg * a, int n) qsort(a,n,sizeof(ceg),adoszhas); int azonosdb(ceg * a, int na, ceg * b, int nb) int i=0, j=0, db=0; while (i<na && j<nb) if(adoszhas(a+i, b+j)==0) ++db; ++i; ++j; if(adoszhas(a+i, b+j)<0) ++i; / * >0 * / ++j; return db; int main() / * teszteleshez jo ez a ket tomb... ceg t2[]="pascal Kft",444,5e5,2,"Bohr Bt",999,0,0,"Ampere Bt",222,1e8,23, * e, t1[]="newton Bt", 333, 2e6, 2,"Pascal Kft",444,-1e5,3,"Kepler Rt",111,1e9,9; int n1=3, n2=3, ne; * / ceg * t1=null, * t2=null, * e; int n1, n2, ne; olvas(&t1, &n1, "adat1"); olvas(&t2, &n2, "adat2");

rendez(t1,n1); rendez(t2,n2); ne=n1+n2-azonosdb(t1,n1,t2,n2); e=(ceg * )malloc(ne * sizeof(ceg)); egyesit(t1,n1,t2,n2,e); free(t1); free(t2); free(e); 3. feladat 12 p Az b a ex lnx dx integrál számértékét szeretnénk kiszámítani (a C könyvtári függvényei használhatóak). A legegyszerűbb módszer szerint az [a; b] intervallumot felosztjuk valamekkora x (mondjuk kezdetben (b a)/5) szélességű részekre, és így az integrál közelítő értéke x szélességű és az adott x helyen kapott függvényérték magasságú téglalapok területösszege. Ezután addig finomítjuk a felosztást (felezzük x-et), míg a két utoljára számolt közelítő összeg eltérése kisebb nem lesz az előírt pontosságnál. Írj egy C függvényt, amely a paraméterlistán három valós paramétert kap: a határokat (a,b) és a pontosságot, és kiszámolja, végül visszaadja a fenti integrál értékét. #include <math.h> double f(double x) return exp(x-log(x)); double kozossz(double dx, double a, double b) double x=a, s=0; while(x<b) s+=f(x); x+=dx; return s * dx; double integ(double a, double b, double eps) double dx=(b-a)/5, s, sr; sr=kozossz(dx,a,b);dx/=2; s=kozossz(dx,a,b);dx/=2; while(fabs(s-sr)>eps) sr=s; s=kozossz(dx,a,b); dx/=2; return s; 4. feladat 6+6 p Tervezz állapotgépet, mely egy tetszőleges szövegből kinyeri az alábbi hatféle smiley-t, jelezd a tevékenységeket is a gráfban: :-) :-( : :D :() :o Írj egy olyan C nyelvű teljes programot, amely a szabványos bemenetről file vége jelig olvasott szövegből a fenti smiley-kat a szabványos kimenetre írja. Definiálj megfelelő típust az állapotok számára az érthetőség elősegítése céljából. (Állapotgép hiányában a program nem értékelhető.)

kp_zj ) ( alap ketpt, D, o (, ) - kp_min A tevékeny éleket piros szín jelzi. A pontozott élek elhagyása nem okoz pontveszteséget. #include <stdio.h> typedef enum allapot alap, ketpt, kp_min, kp_zj all; int main() int c; all a=alap; while((c=getchar())!=eof) / * mivel ez minden allapotban igy van, ide kihozhato lenne: if(c==) a=ketpt; * / switch(a) case alap: if(c==) a=ketpt; case ketpt: if(c== - ) a=kp_min; if(c== ( ) a=kp_zj; if(c== c== D c== o )printf(":%c",c);a=alap; if (c!=) a=alap; case kp_min: if(c== ) c== ( ) printf(":-%c",c); a=alap; if(c==) a=ketpt; a=alap; case kp_zj: if(c== ) )printf(":()"); a=alap; if(c==) a=ketpt; a=alap;

5. feladat 12 p Írj Télapó-monitoring programot december hatodikára! A program rövid időközönként megkapja Télapó koordinátáit valós számhármasként(szélesség, hosszúság, magasság). Ezt a valós számsorozatot kapja a programunk a szabványos bemenetén (mintha valaki begépelné). Az adatsor végét a 0-nál kisebb tengerszint feletti magassággal jelöljük. Határozzuk meg: a) Mely koordinátáknál járt Télapó legmesszebb otthonától (északi pólus), feltételezve, hogy a Föld gömbölyű, és a magasságot elhanyagolhatjuk. A szélességet -90 foktól +90 fokig mérjük, a hosszúságot -180-tól 180-ig, így az északi sarok koordinátája (-90; 0; 0). b) A legnagyobb magasságot, amit elért, mert Télapó egészségének védelmében fontos, hogy túl magasra ne repüljön, hiszen akkor nem jut elég oxigénhez. c) A Télapó által megtett utat, összegezve az elemi részutakat, közelítőleg: s = r ϕ 2 + ϑ 2, ahol r,ϕ,ϑ sorrendben a sugár (6000 km), a szélesség-szög (radiánban), és a hosszúság-szög (radiánban). BÓNUSZ unatkozó hallgatók részére: Adj jobb közelítést a távolság számítására! #include<stdio.h> #include<math.h> int main() double phi, phir, th, thr, ut=0, phimax, thmax, dphi,dth,pi=2 * asin(1), m, m_max; scanf("%lf%lf%lf",&phir,&thr,&m); phimax=phir; thmax=thr; m_max=m; scanf("%lf%lf%lf",&phi,&th,&m); while (m>=0) if(m>m_max) m_max=m; if(phi>phimax) phimax=phi;thmax=th; dphi=(phi-phir) * pi/180; dth=(th-thr) * pi/180; ut+=6000 * sqrt(dphi * dphi+dth * dth); phir=phi;thr=th; scanf("%lf%lf%lf",&phi,&th,&m); printf("legtavolabb: %f %f\n",phimax,thmax); printf("legmagasabban:%f\n",m_max); printf("%f km a megtett ut", ut);