C programozás oktatás kezdőknek
Kérdésed van? +36 70 410 1763 info@c-programozas.hu
Tudástár

Mit találsz a tudástárban?

Röviden úgy fogalmazhatnám, hogy sok mindent, ami segít abban, hogy jobb programozó legyél. Válogatott érettségi feladatokat és azok lehetséges megoldásait C nyelven, hasznos magyar nyelvű könyveket, ajánlott szorgalmi feladatokat, valamint fontos gondolatokat és érdekességeket a programozással kapcsolatban. A tartalmak folyamatosan bővülnek, érdemes gyakran visszalátogatnod az újdonságok miatt.

Keress bizalommal, ha segítségre van szükséged!
Jó szórakozást!

Emelt szintű
érettségi felkészítés

Kíváncsi vagy az emelt szintű érettségi feladatsorok programozási feladatainak megoldásaira C nyelven?

A felkészítés során kizárólag a programozási feladatokat oldjuk meg.

Összes érettségi feladat »

Társalgó

Társalgó8 feladat

Egy színház társalgójában még a délelőtti próbák alatt is nagy a forgalom. A színészek hosszabb-rövidebb beszélgetésekre térnek be ide, vagy éppen csak keresnek valakit. A feladatban a társalgó ajtajánál felvett adatokat kell feldolgozni.

Teljes feladat »

Telefonszámla

Telefonszámla6 feladat

Egy új szolgáltatás keretében ki lehet kérni a napi telefonbeszélgetéseink listáját. A listát egy fájlban küldik meg, amelyben a következő adatok szerepelnek: hívás kezdete és vége, hívott telefonszám. A hívás kezdete és vége OO:PP:MM formában szerepel.

Teljes feladat »

Vigenére tábla

Vigenére tábla7 feladat

Már a XVI. században komoly titkosítási módszereket találtak ki az üzenetek elrejtésére. A század egyik legjobb kriptográfusának Blaise de Vigenére-nek a módszerét olvashatja. A kódoláshoz egy táblázatot és egy ún. kulcsszót használt.

Teljes feladat »

Kérdésed van? Segítek!

Megbízható programozás tanárra van szükséged C nyelvből? Rám számíthatsz.
A távolság nem akadály, online oktatással bárhol tudok segíteni neked.

+36 70 410 1763 info@c-programozas.hu Tatabánya, Mártírok útja 81/b.

Gondolatok
&& érdekességek

Szeretnél jó programozó lenni, de nem tudod, hogy állj neki?

Kíváncsi vagy a tapasztalt programozók véleményére?

Olvasnál érdekességeket a programozással kapcsolatban?

Összes gondolat és érdekesség »

Mennyire jó programozók a nők?

Mennyire jó programozók a nők?

Nagyon sokan azt gondolják, hogy a programozás a férfiaknak való, és hogy egy férfi sokkal jobban tud programozni, mint egy nő.

Olvasd tovább »

Hogyan érdemes programozni?

Hogyan érdemes programozni?

Nincs általános recept arra, hogyan kell programozni, de kezdőként érdemes megfogadni minden tanácsot.

Olvasd tovább »

Gyakorlat teszi a mestert?

Gyakorlat teszi a mestert?

A programozás elsajátítsa egy hosszú és kemény folyamat, amihez sok gyakorláson át vezet az út.

Olvasd tovább »

Facebook

C programozás
feladatok

Szeretnéd jobban elsajátítani az egyes témaköröket?

Unod már a sablonos feladatokat? Kihívást keresel? Tedd próbára magad!

Ezek a feladatok nagyon jó gyakorló feladatokként is szolgálnak az órai példaprogramok mellé.

Állásinterjúra felkészítő feladatok

  1. Írjunk függvényt, amely megadja egy paraméterként kapott szöveg összes palindrom felosztását!
  2. Adott egy pozitív egész számokból álló tömb, melynek az első elemén állunk. A tömb minden eleme az adott pozícióból történő legnagyobb ugorható távolságot jelöli. Készítsünk függvényt, amely eldönti egy ilyen tömbről, hogy el lehet-e jutni benne az utolsó elemig a fenti szabályt követve! Példák: A = [2,3,1,1,4], eredménye igaz. B = [3,2,1,0,4], eredménye hamis.
  3. Készítsünk függvényt, amely megcseréli két számot tartalmazó változó értékét úgy, hogy nem használ harmadik változót a megoldáshoz!
  4. Járjunk be egy N*M-es mátrixot spirál alakban, a bal felső sarokból indulva!
  5. Készítsünk egész számmá konvertáló függvényt, amely a paraméterként kapott karakterláncból egész számot alakít (ne használjunk könyvtári függvényt)!

Forrás: Program Creek, Javarevisited

Egyetemi ZH- és vizsgafeladatok

  1. Készítsünk egy olyan szabványos ANSI C függvényt, amely úgy írja ki egy paraméterként átadott int típusú pozitív egész szám decimális értékét a szabványos kimenetre, hogy 3 számjegyenként tagolja azt egy-egy szóközzel. Pl. 1234567 kiírása: 1 234 567. A feladat megoldása során az ábrázolható legnagyobb egész szám konkrét értékére vonatkozólag semmiféle feltételezést nem lehet tenni! 
  2. Készítsünk függvényt, amely két, maximum 100 jegyű pozitív egész számot fogad paraméterként, és határozzuk meg a számok összegét!
  3. Írjunk szabványos ANSI C függvényt, amely paraméterként kap egy LISTA típusú mutatót, mely egy láncolt lista első elemére mutat, valamint egy pozitív egész számot (x), és kitörli a lista x-edik elemét. A függvény visszatérési értéke a módosított lista első elemére mutató pointer legyen. Ha a megadott sorszám nagyobb, mint az elemek száma, akkor NULL pointert adjon vissza. 
  4. Egy fogadóirodában 10 ablaknál bonyolódnak a fogadások, amik valójában pénz be- és kifizetések. Az ablakokat egyszerűen a sorszámukkal azonosítjuk. Az ablakok előtt sorban álló fogadók száma előre adott konstanssal nem korlátozható! Megvalósítandó funkciók:
  • Érkezés: új kuncsaft érkezik és beáll a legrövidebb sor végére. A fizetés iránya (be-, ill. kifizetés) és mennyisége (forintban) véletlenszerűen generálandó!
  • ​Terheltség: meghatározandó ablakonként és összesen a sorban állók száma.

Forrás: Budapesti Műszaki Egyetem, Győri Széchenyi István Egyetem

Emelt szintű próbaérettségi feladatok

Személyazonosító jel

Az ország állampolgárainak van egyedi azonosítójuk. Ez a személyazonosító jel. Az 1997. január 1-je után születetteknél ez a következőképpen néz ki. A személyazonosító jel 11 jegyű. Az első jegy a személy nemét jelöli az alábbi táblázat alapján.

A 2–7 számjegyek a születési év utolsó két jegyét, a születési hónapot és napot tartalmazza. A 8–10. számjegyek az azonos napon születettek születési sorszáma. A 11. jegy az első tíz jegyből képzett ellenőrző szám.

Írjunk olyan programot, amely végrehajtja az alábbi utasításokat!

  1. Kérjük be egy személyazonosító jel első 10 jegyét!
  2. Írassuk ki a képernyőre a személyazonosító jel alapján, hogy az adott személy férfi vagy nő!
  3. Írassuk ki a képernyőre az adott személy születési sorszámát!
  4. Írassuk ki a képernyőre, hogy hányadik születésnapja van ebben az évben a személynek!
  5. Kérjünk be egy másik személyazonosító jelet is! (Szintén csak az első 10 jegyét!)
  6. Határozzuk meg a két beadott személyazonosító jel alapján, hogy melyik személy idősebb! (Ha két ember ugyanazon a napon született, akkor a 8–10. jegy alapján döntsük el, melyikük az idősebb!) Az eredményt a képernyőn jelenítsük meg!
  7. Mennyi a különbség a születési éveik között? Figyeljünk a 1999. dec. 31. után születettekre is! Az eredményt írassuk ki a képernyőre!
  8. A másodikként beadott személyazonosító jelből számítsuk ki a 11. jegyet, és írassuk ki a képernyőre a teljes személyazonosító jelet. A számítás a következő szabály alapján működik. A első tíz számjegy mindegyikét szorozzuk meg egy számmal, mégpedig a 10. helyen állót eggyel, a 9. helyen állót kettővel, és így tovább. Az így kapott szorzatokat adjuk össze. A kapott összeget osszuk el tizeneggyel. Az osztás maradéka lesz a 11. jegy. Ha a maradék 10, akkor azt a születési sorszámot nem adják ki. Ebben az esetben írjuk ki, hogy hibás a születési sorszám!
  9. Mindkét korábban beadott személyazonosító jel első 10 jegyét írjuk a szemszam.txt fájlba!

Forrás: oktatas.hu (Próbaérettségi 2004)


Hőmérséklet

Készítsünk programot f5 néven, mely a következő feladatokat végzi el!

  1. A programmal azonos könyvtárban található febr.txt fájlból olvassuk be a februári hőmérséklet adatokat, és írjuk ki a képernyőre.
  2. A beolvasott adatok alapján adjuk meg azon napok számát, amikor a hőmérséklet 0°C felett volt.
  3. Listázzuk ki a 10 leghidegebb napot a hőmérsékletek szerint növekvő sorrendben (Hőmérséklet nem kell.)
  4. Két sorral lejjebb, megfelelő felirat után, adjuk meg azt a napot, amelyik után a legnagyobb változás volt tapasztalható.
  5. A 3–5. feladat eredményeit a feladatok sorrendjében írjuk ki a febrstat.txt fájlba.

Forrás: regi.ofi.hu (Mintafeladat a kétszintű érettségihez)


Triatlon

Egy triatlon versenyen a versenyzőknek a verseny folyamán egymás után kell először úszniuk, kerékpározniuk, majd futniuk. Az győz, aki a legrövidebb idő alatt fejezi be a versenyt. Az egyes versenyzők adatai és időeredményei a triatlon.be fájlban találhatók. Az első sorban a versenyzők száma (0 és 100 között), a következő sorokban a versenyzők adatai a következők szerint szerepelnek:

  • Név
  • Úszás idő
  • Kerékpár idő
  • Futás idő

Az elért időeredményeket másodpercekben tároljuk.

  1. Olvassuk be a triatlon.be fájlból az adatokat!
  2. Írjuk ki az összesített időeredmények alapján az első három versenyző nevét a képernyőre!
  3. Írjuk ki a képernyőre az első helyezett nevét, és azt, hogy mekkora volt az átlagsebessége (km/h-ban) az úszásban, kerékpározásban és futásban.
  4. Konvertáljuk át a versenyzők végső időeredményeit OO:PP:MM formátumra. Mindegyik értéket két számjeggyel jelöljük!
  5. A versenyzők nevét és az átkonvertált, összesített időeredményét írjuk ki a triatlon.ki fájlba!
  6. A fájlban a név mellett szerepeljen az időeredmény, például: Gipsz Jakab 03:14:05!
  7. Mivel a közönség kíváncsi arra is, hogy az egyes számokat (azaz az úszást, kerékpározást, futást) kik nyerték, ezért reszer.ki fájlba 3 versenyző nevét és átkonvertált időeredményét kell kiírni. Az első név az úszás győztesének a neve és az úszásban elért ideje, a második sorban a kerékpározásban győztes neve és a kerekpározásban elért időeredménye, a harmadik sorban pedig a futásban legjobb időt elért versenyző neve és időeredménye szerepeljen! Ha többen ugyanazt az eredményt érték el valamelyik versenyszámban, akkor elég az egyikük nevét kiírni.

Forrás: jos.hu (OM mintafeladat 2003)


Kugli

A kugli játéknál 9 bábut állítanak fel egy négyzet alakú helyre, ezeket a bábukat egy golyóval lehet ledönteni. A játékosok egymás után dobnak. A játékszabály a következő: a játékosoknak legalább annyi bábut kell ledöntenie, mint amennyit az előtte dobó játékos ledöntött. Ha kevesebbet dönt le, akkor hibapontot kap. A játékos 2 hibapont után kiesik a játékból. A játékosok száma 5, és a játék 4 kör alatt ért véget. Az első játékos az első körben nem kaphat hibapontot, de a további körökben az előző kör utolsó dobáseredményéhez viszonyítják teljesítményét. A kugli játék körönkénti eredményeit az eredm1.txt, eredm2.txt, eredm3.txt, eredm4.txt fájlokban tároljuk. Minden fájlban a még versenyben lévő személyek nevét és a körben elért eredményét tároljuk a következőképpen:

  • Versenyző neve
  • Ledöntött bábuk száma

Ha valaki kiesett a játékból, akkor a további körök eredményeit tároló fájlban a ledöntött bábuk száma sorban értékként 10 szerepel.

  1. Olvassuk be az eredm1.txt fájlból az adatokat!
  2. A szabályok alapján állapítsuk meg, hogy az első körben mely játékosok kaptak hibapontot. Ezek nevét írjuk ki a képernyőre!
  3. Olvassuk be az eredm2.txt, eredm3.txt és az eredm4.txt fájlokból az adatokat!
  4. Számítsuk ki, hogy a versenyzők a játék során külön-külön mennyi bábut döntöttek le, az eredményt írjuk ki a képernyőre! A kiírásnál a név mellett szerepeljen az elért eredmény!
  5. Írjuk ki a képernyőre a legtöbb pontot elért versenyző nevét és eredményét!
  6. Állapítsuk meg – a fájlokban lévő adatok alapján – a kiesett versenyzők nevét és azt, hogy melyik körben estek ki! A neveket és a kör számát írjuk ki a képernyőre!
  7. Írjuk ki a képernyőre azoknak a versenyzőknek a nevét, akiknek sikerült 9 bábut eldönteniük a dobásukkal a játék során! A nevük mellett szerepeljen, hogy mely körökben érték el ezt az eredményt! (A név legfeljebb egyszer szerepeljen!)

Forrás: jos.hu (OM mintafeladat 2004)

Kiegészítő gyakorló feladatok

Elemi feladatok

  1. Írjunk programot, mely egy adott pozitív egész számról megmondja, hogy tökéletes szám-e! (A tökéletes számok azok, melyek osztóinak összege egyenlő a szám kétszeresével. Ilyen szám például a 6.)
  2. Írjuk ki egy előre definiált N és M érték közötti relatív prímpárokat! Két szám akkor relatív prím, ha egyen kívül nincs más közös osztójuk.
  3. Határozzuk meg a Fibonacci sorozat első N elemét!

Egydimenziós tömbök

  1. Adott egy egész szám. Töltsünk fel egy tömböt a szám számjegyeivel!
  2. Készítsünk programot, amely a billentyűzetről beolvasott szöveget soronként megfordítja!
  3. Írjunk programot, amely beolvas egy karakterláncot, és megállapítja, hogy vannak-e benne olyan karakterek, amelyek pontosan egyszer fordulnak elő! A program írja ki ezeket a karaktereket, ha pedig nincsenek a karakterláncban egyedi karakterek, akkor közölje a felhasználóval!

Függvények

  1. Készítsünk függvényt, amely egy egész számról eldönti, hogy tökéletes szám-e! Az a tökéletes szám, amely egyenlő a nála kisebb osztóinak az összegével. Pl. 6 = 1+2+3 28, = 1+2+4+7+14. Bemenő paraméter a vizsgálandó egész. Visszatérési érték a vizsgálat eredménye.
  2. Írjunk programot, amely kiírja az összes olyan háromjegyű számot, amelynek a három számjegye eltér egymástól!
  3. Írjunk programot, amely megkeresi és a szabványos kimenetre írja azt a legnagyobb háromjegyű számot, amelynek számjegyösszege megegyezik a prímtényezőinek az összegével. (Pl.: 378=2·3·3·3·7, ezek összege 18, ami egyenlő a jegyek összegével is.)

Ellenőrzött bemenet

  1. Írjunk programot, amely a forgalomszámlálást segíti! A program olvasson be a szabvány bemenetről nemnegatív egész számokat, míg nullát nem kap. A számok különböző típusú gépjárműveket jelentenek; összesen 30 féle jármű van, 1-től 30-ig jelölve a típusukat. A program számolja meg, hogy hány konvoj haladt el az úton a számlálás időtartama alatt, és a számlálás után írja ki azokat a járműtípusokat, amelyből legalább egy konvoj érkezett! Konvojnak azt nevezzük, amikor legalább 3 azonos típusú jármű haladt el egymás után.

Kétdimenziós tömbök

  1. Írjunk programot, amelyben menüpontokból lehessen kiválasztani egy kétdimenziós tömbre a következő műveleteket:
  • Az elemek véletlenszerű generálása.
  • Az elemek kiíratása négyzetes formában.
  • Ha a sor- és oszlopszám megegyezik, határozzuk meg a főátló, illetve a mellékátló elemeinek az összegét.
  • Cseréljünk ki egy adott sorbeli elemeket egy másik sorbelivel.

Struktúra tömbök

  1. Egy kozmetikai üzletben vendégek használnak kabinokat. A kabinokban különböző hosszúságú kezelések folytathatók, egy nap összesen legfeljebb 100 darab. A kezeléseknek van kezdőidőpontjuk és hosszuk. A kezelések csak minden negyedórában kezdhetők meg. A nyitva tartást reprezentáló nyitó és záró időpontokat a programban megadott konstansok tárolják. Készítsünk programot, amely az érkező vendég számára kilistázza az aznap még szabadon maradt kezdő időpontokat annak függvényében, hogy milyen hosszú kezelésre kívánja a kabint lefoglalni. A program az időpontokat percben (0 és 1440 között) tárolja, az időpontok kiírását a megszokott ÓÓ:PP formában végezze. A kiválasztott időpont foglalását tárolja el, következő foglalásokat ne engedjen úgy felvenni, hogy az előzőekkel átfedés jöjjön létre!
  2. Írjunk programot, amely rekordokban tárolja bizonyos személyek nevét, foglalkozását, telefonszámát, esetleg más jellemző adatait. A program legyen alkalmas új rekordok létrehozására, a régiek módosítására, valamit név és telefonszám szerinti keresésre.

Fájlkezelés

  1. Írjunk programot, amely keresztbe hivatkozás listát készít egy adott szövegfájlról, vagyis megadja az összes benne szereplő szót, és minden szó mellé azoknak a soroknak a számát, amelyekben az illető szó megtalálható!
  2. Egy tóra négyzetrácsot fektetünk, a négyzetrács egyes pontjaiban a tó mélységét tároljuk. 0-val jelöljük a szárazföldet, negatív számmal a mélységet méterben. Készítsünk programot, amelyik egy ilyen, fájlban adott „térkép” alapján téglatest-módszerrel becsli meg a tó térfogatát. Az egyes mérési pontok távolságát a program a felhasználótól kérdezze meg. A fájl első sorában a táblázat szélessége és magassága (egész számok) van megadva, a többi sorban a táblázat egyes sorai (valós számok) szóközzel elválasztva.

Láncolt lista

  1. Készítsünk programot, amelyben egy rendezett dinamikus egyirányú listában tároljuk az adakozó személyek adatait. Minden egyes elemnél tároljuk az adakozó nevét és az általa adományozott pénzösszeget. A lista mindig rendezett legyen az adományozott pénzösszegek szerint csökkenő sorrendben. Ugyanaz a személy többször is adakozhat, ebben az esetben keressük meg a személyt a listában, szedjük ki onnan, majd a már régebben adományozott és az éppen adományozott pénzösszegeket összeadva rakjuk be újra a listába a megfelelő helyre (úgy, hogy a lista rendezett maradjon az adományozott pénzösszegek szerint). A beolvasás után írjuk ki a láncolt listát a képernyőre.
  2. Készítsünk programot, amely beolvassa egy megadott szövegfájl soraiban található neveket, és névsort állít össze belőlük. A nevek maximum 100 karakteresek, viszont tetszőlegesen sok lehet belőlük.

Milyen könyvekből
érdemes tanulni?

Érdekel, hogy én milyen könyveket javaslok a C programozás elsajátításához?

Milyen könyveket érdemes elolvasnod, ha programozó szeretnél lenni?

Hamarosan én is egy saját könyvet jelentetek meg a C programozásról. Megosztom az olvasóimmal a 11 év alatt szerzett tapasztalataimat és a bevált programozási technikáimat.