GY gyakorlat

A gyakorlat anyaga

Ezen a gyakorlaton nincs se ZH, se új tananyag, helyette sok gyakorló feladat van. A cél az eddigi ismeretek gyakorlása, elmélyítése. A feladatokat tetszőleges sorrendben meg lehet oldani, a túl egyszerűnek látszó feladatokat ki lehet hagyni. Először önállóan próbáld meg megoldani a feladatot, az egyes feladatokhoz adott segítséget csak akkor nézd meg, ha már sikerült, vagy ha elakadtál. A gyakorlatvezetők a gyakorlat teljes ideje alatt rendelkezésre állnak, válaszolnak a felmerülő kérdésekre.

Feladatok

Egyszerű feladatok (szekvenciális megoldás, esetleg függvényekkel)

Algebrai feladatok

Feladat (f0046)

Problémafelvetés:

Írj programot, amely beolvas két pozitív egész számot (\(A\) és \(B\)), majd kiírja az \(A\) szám felbontását "A=x*B+y" formában, ahol \(x\) két szám hányadosát, \(y\) pedig a maradékát jelöli.

Feladat (f0047)

Problémafelvetés:

Írj programot, amely beolvas két természetes számot, majd kiírja az első szám második által megadott százalékkal megnövelt értékét.

Specifikáció:

A program inputja két nemnegatív egész szám, \(A\) és \(B\). A program outputja egyetlen sor, melyben két tizedesjegyen az \(A\) érték \(B\)%-kal megnövelt értéke szerepel.

Segítség (f0047)

A bekért számok egész értékek, de a feladatban törtekkel kell számolni!

Feladat (f0048)

Problémafelvetés:

Írj programot, amely bekéri az időt (óra perc formátumban), és kiírja a képernyőre, hogy a nap hányadik percében vagyunk.

Geometriai feladatok

Feladat (f0031)

Problémafelvetés:

Írj egy programot ami a két oldalhosszból kiszámítja egy téglalap kerületét és területét!

Specifikáció:

A program inputja két nemnegatív valós szám, a téglalap oldalhosszai. A program outputja két sor. Az elsőben a "T = " szöveg után a téglalap területe, a második sorban a "K = " szöveg után a téglalap kerülete szerepel. Mindkét számot 10 karakteren jobbra igazítva 3 tizedesjegy pontossággal kell kiíratni. A beolvasás előtt a program elején ki kell írni egy rövid tájékoztatót arról, hogy a program milyen adatot kér be.

Algoritmustervezés:

A terület és kerület kiszámítására érdemes lehet egy-egy külön függvényt készíteni.

Feladat (f0033)

Problémafelvetés:

Írj egy programot ami három oldalhosszból kiszámítja egy háromszög kerületét és területét!

Specifikáció:

A program inputja három nemnegatív valós szám, a háromszög három oldalának hossza, melyekből valódi háromszög szerkeszthető. A program outputja két sor. Az elsőben a "T = " szöveg után a háromszög területe, a második sorban a "K = " szöveg után a háromszög kerülete szerepel. Mindkét számot 10 karakteren jobbra igazítva 3 tizedesjegy pontossággal kell kiíratni. A beolvasás előtt a program elején ki kell írni egy rövid tájékoztatót arról, hogy a program milyen adatot kér be.

Algoritmustervezés:

A terület és kerület kiszámítására érdemes lehet egy-egy külön függvényt készíteni.

Feladat (f0035)

Problémafelvetés:

Írj egy programot ami három háromdimenziós koordináta-hármasból kiszámítja egy térbeli háromszög kerületét és területét!

Specifikáció:

A program inputja háromszor három valós szám, amelyek \(x_1\), \(y_1\), \(z_1\), \(x_2\), \(y_2\), \(z_2\), \(x_3\), \(y_3\), \(z_3\) sorrendben a háromszög \(A(x_1,y_1,z_1)\), \(B(x_2,y_2,z_2)\) és \(C(x_3,y_3,z_3)\) csúcsainak koordinátái. A program outputja két sor. Az elsőben a "T = " szöveg után a háromszög területe, a második sorban a "K = " szöveg után a háromszög kerülete szerepel. Mindkét számot 10 karakteren jobbra igazítva 3 tizedesjegy pontossággal kell kiíratni. A beolvasás előtt a program elején ki kell írni egy rövid tájékoztatót arról, hogy a program milyen adatot kér be.

Segítség (f0035)
  • Érdemes a csúcsok tárolására egy struct adattípust deklarálni.
  • A csúcsok páronkénti térbeli távolságai egy síkbeli háromszök három oldalának hosszát adják.
  • Három oldalhosszból a Héron-képlet adja meg a területet.
  • Érdemes a fenti számításokra külön-külön függvényeket készíteni.
Feladat (f0036)

Problémafelvetés:

Írj egy programot ami az alap oldalhosszából és a gúla magasságából kiszámítja egy négyzet alapú "egyenes" gúla felszínét és térfogatát! (Az "egyenes" most azt jelenti, hogy a gúla csúcspontja az alap négyzet középpontjában a négyzet síkjára állított merőleges egyenesen van.)

Specifikáció:

A program inputja két nemnegatív valós szám, az alap négyzet oldalhossza és a gúla magassága. Az output két sor. Az elsőben a "V = " szöveg után a gúla térfogata, a második sorban az "A = " szöveg után a gúla felszíne szerepel. Mindkét számot 10 karakteren jobbra igazítva 3 tizedesjegy pontossággal kell kiíratni.

Algoritmustervezés:

A terület és kerület kiszámítására érdemes lehet egy-egy külön függvényt készíteni. A felszín kiszámításához szükség lehet a négyzet és a háromszög területét megadó részalgoritmus alkalmazására.

Feladat (f0037)

Problémafelvetés:

Írj egy programot ami az alap sugarából és a kúp magasságából kiszámítja egy kör alapú "egyenes" kúp felszínét és térfogatát! (Az "egyenes" most azt jelenti, hogy a kúp csúcspontja az alap kör középpontjában a kör síkjára állított merőleges egyenesen van.)

Specifikáció:

A program inputja két nemnegatív valós szám, az alap kör sugara és a kúp magassága. Az output két sor. Az elsőben a "V = " szöveg után a kúp térfogata, a második sorban az "A = " szöveg után a kúp felszíne szerepel. Mindkét számot 10 karakteren jobbra igazítva 3 tizedesjegy pontossággal kell kiíratni.

Feladat (f0049)

Problémafelvetés:

Adott a kétdimenziós koordináta-rendszerben az \((X,Y)\) középpontú, \(R\) egység sugarú kör. Számítsa ki az \(y = E\) egyenletű egyenes és a kör közös pontjainak koordinátáit! Feltételezhető, hogy pontosan kettő metszéspont lesz.

Fizikai feladatok

Feladat (f0039)

Problémafelvetés:

Írj egy programot ami kiszámítja, hogy egy egyenletes sebességgel egyenes vonalban haladó test mekkora utat tesz meg adott idő alatt!

Specifikáció:

A program inputja két nemnegatív valós szám, a test sebessége (\(v\)) és az eltelt idő (\(t\)). A program megfelelő tájékoztatás után kéri be a két értéket, melyek mértékegységei \(km/h\) illetve \(km\). A program outputja a megadott \(t\) idő alatt egyenletes \(v\) sebességgel megtett út, \(km\)-ben, méteres pontossággal.

Feladat (f0040)

Problémafelvetés:

Írj egy programot ami kiszámítja, hogy egy adott utat adott idő alatt megtevő test mekkora átlagsebességgel halad!

Feladat (f0041)

Problémafelvetés:

Írj egy programot ami kiszámítja, hogy egy álló helyzetből egyenletesen gyorsuló, egyenes vonalban haladó test milyen távol lesz a kiindulási ponttól adott idő eltelte után!

Specifikáció:

A program inputja két nemnegatív valós szám, a gyorsulás (\(a\)) és az eltelt idő (\(t\)). A program megfelelő tájékoztatás után kéri be a két értéket, melyek mértékegységei \(m/s^2\) illetve \(s\). A program outputja a megadott \(a\) egyenletes gyorsulás mellett \(t\) idő alatt megtett út, méterben, centiméteres pontossággal kiírva.

Algoritmustervezés:

A megtett út az \(s=(a/2)t^2\) képletből számolható.

Feladat (f0042)

Problémafelvetés:

Írj egy programot ami kiszámítja, hogy egy álló helyzetből egyenletesen gyorsuló, egyenes vonalban haladó test mennyi idő alatt tesz meg adott távolságot!

Specifikáció:

A program inputja egy pozitív és egy nemnegatív valós szám, a test gyorsulása (\(a\)) és az útszakasz hossza (\(s\)). A program megfelelő tájékoztatás után kéri be a két értéket, melyek mértékegységei \(m/s^2\) illetve \(m\). A program outputja a megadott \(s\) távolság egyenletes \(a\) gyorsulással való megtételéhez szükséges \(t\) idő, másodpercekben, ezredmásodperces pontossággal kiírva.

Feladat (f0043)

Problémafelvetés:

Írj egy programot ami kiszámítja egy álló helyzetből egyenletesen gyorsuló, egyenes vonalban haladó test gyorsulását, ha az adott idő alatt adott távolságot tesz meg!

Specifikáció:

A program inputja egy nemnegatív és egy pozitív valós szám, az eltelt idő (\(t\)) és a megtett útszakasz hossza (\(s\)). A program megfelelő tájékoztatás után kéri be a két értéket, melyek mértékegységei \(s\) illetve \(m\). A program outputja a megadott \(s\) távolság \(t\) idő alatt egyenletes gyorsulással történő megtételéhez szükséges gyorsulás mértéke, \(m/s^2\) mértékegységgel, öt tizedesjegy pontossággal kiírva.

Szelekcióval megoldható feladatok

Egyszerű feladatok

Feladat (f0062)

Problémafelvetés:

Írj egy progamot, ami egy egész számot kap inputként és kiírja a hét ezen sorszámú napjának nevét. A nap kiírására készíts függvényt, melynek paramétere a nap sorszáma. A program jelezze, ha rossz az input.

Specifikáció:

A program inputja egy egész szám. A program outputja a hét megfelelő napjának neve, vagy a "Nincs ilyen nap." szöveg.

Algoritmustervezés:

A főprogram csak a beolvasásért felel, a függvény pedig a kiíratásért.

FŐPROGRAM:

Problémafelvetés:

Írj egy progamot, ami beolvas egy egész számot, majd meghívja a függvényt a megfelelő paraméterrel.

Specifikáció:

A program inputja egy egész szám, közvetlen outputja egy tájékoztatás a szám beolvasása előtt.

FÜGGVÉNY:

Problémafelvetés:

Írj egy függvényt, amely kap egy egész számot, majd kiírja, hogy ez a hét hányadik napja, vagy hogy "Nincs ilyen nap.".

Specifikáció:

A függvénynek nincs inputja, paramétere egyetlen \(N\) egész szám. A függvény kimenete egyetlen sor, a hét \(N\)-ik napjának neve, vagy a "Nincs ilyen nap." szöveg. A függvénynek nincs visszatérési értéke.

Feladat (f0072)

Problémafelvetés:

Döntsd el egy dolgozatról, hogy sikeres vagy sikertelen volt-e. Egy dolgozat akkor sikeres ("Sikeres."), ha a maximális pontszámnak legalább a felét megkapja, különben sikertelen ("Sikertelen."). A maximális és a dolgozatra adott pontszámok is egész értékűek.

Algoritmustervezés/Megvalósítás:

Készíts többféle algoritmust és megvalósítást. Először oldd meg a feladatot megkötések nélkül, majd úgy, hogy az alábbi megszorítások közül kiválasztasz egyet, és azt betartod:

  • Az if, ?: és switch közül csak az if szerkezetet használhatod.
  • Az if, ?: és switch közül csak a ?: kifejezést használhatod.
  • Az if, ?: és switch közül csak a switch szerkezetet használhatod.
  • Az if, ?: és switch közül egyiket sem használhatod.
Feladat (f0082)

Problémafelvetés:

Írj egy programot, ami bekéri a sakktábla egy mezőjének koordinátáját, és ha jó a koordináta, akkor kiírja a mező színét ("világos" vagy "sötét", az A1 mező sötét). Ha a koordináta nem jó, nem ír ki semmit.

Feladat (f0095)

Problémafelvetés:

Írj olyan programot, mely kiírja az összes kétoperandusú logikai művelet (==, !=, <, <=, >, >=, &&, ||) értéktáblázatát. A kimenet nyolc darab ehhez hasonló ötsoros kiírást tartalmaz:

1
2
3
4
5
A && művelet értéktáblázata:
    (H && H) = H
    (H && I) = H
    (I && H) = H
    (I && I) = I
Segítség (f0095)

Arra figyelj, hogy ne te számold ki a művelet végeredményét, hanem a programmal számoltasd ki. (Ahol pl. az I && H művelet eredményére van szükség a programban, ott true && false művelet szerepeljen, ne simán false konstans, ami a művelet eredménye.) Egyelőre magát a kiírást érdemes egy függvénybe kiszervezni, majd a függvényt mind a 8 lehetséges művelet szerint felparaméterezve meghívni. (Aki esetleg már ismeri a makrókat vagy a függvénypointereket, ezeket is bevetheti.)

Feladat (f0112)

Problémafelvetés:

Írj programot, amely bekéri valakinek az életkorát (egy egész számot). Erről döntse el a program, hogy gyerek-e (0-6 év), diák (7-18 év), dolgozó (19-65 év), vagy nyugdíjas!

Algoritmustervezés:

Készítsünk egy főprogramot, amely a be- és kimenetkezelésért felel, a korosztályt pedig egy függvény határozza meg.

Dátumos feladatok

Feladat (f0075)

Problémafelvetés:

Döntsd el egy évszámról, hogy szökőév-e, feltételezve, hogy a Gergely naptár bevezetése utáni évszámot kapsz. Egy év akkor szökőév, ha néggyel osztható, kivéve, ha százzal is osztható, de a kivétel alóli kivételek a négyszázzal osztható évszámok, amik mégis szökőévek.

Algoritmustervezés/Megvalósítás:

Készíts többféle algoritmust és megvalósítást. Először oldd meg a feladatot megkötések nélkül, majd úgy, hogy az alábbi megszorítások közül kiválasztasz egyet, és azt betartod:

  • Az if, ?: és switch közül csak az if szerkezetet használhatod.
  • Az if, ?: és switch közül csak a ?: kifejezést használhatod.
Feladat (f0076)

Problémafelvetés:

Egy hónap sorszáma alapján add meg a nevét, vagy írd ki, hogy "Nincs ilyen hónap!"!

Algoritmustervezés/Megvalósítás:

Készíts többféle algoritmust és megvalósítást. Először oldd meg a feladatot megkötések nélkül, majd úgy, hogy az alábbi megszorítások közül kiválasztasz egyet, és azt betartod:

  • Az if, ?: és switch közül csak az if szerkezetet használhatod.
  • Az if, ?: és switch közül csak a ?: kifejezést használhatod.
  • Az if, ?: és switch közül csak a switch szerkezetet használhatod.
Feladat (f0110)

Problémafelvetés:

Írj programot, mely bekéri a hónap sorszámát és a napot, majd megállapítja, hogy helyes-e!

Algoritmustervezés:

Készítsünk egy főprogramot, amely a be- és kimenetkezelésért felel, a dátum helyességét pedig egy függvény határozza meg.

Feladat (f0111)

Problémafelvetés:

Írj programot, mely bekér egy YYYY-MM-DD formában megadott dátumot, majd megállapítja, hogy helyes-e! A hibás dátumformátum érvénytelen dátumot jelent.

Algoritmustervezés:

Készítsünk egy főprogramot, amely a be- és kimenetkezelésért felel, a dátum helyességét pedig egy függvény határozza meg.

Matematikai feladatok

Feladat (f0079)

Problémafelvetés:

Írj egy programot, ami 3 szakasz hosszából megállapítja a háromszög típusát: "hegyesszögű", "derékszögű", "tompaszögű", "elfajuló" (egy egyenesre esik a 3 csúcspontja) vagy "nem" háromszög. Ha valódi háromszög, akkor számolja ki a területét és kerületét is. Példa be- és kimenetek:

  • Példa 1:

    • Input: 3.0 5.0 4.0
    • Output: derékszögű háromszög, T=6.000, K=12.000
  • Példa 2:

    • Input: 3.0 4.0 8.0
    • Output: nem háromszög
Feladat (f0101)

Problémafelvetés:

Készíts egy programot, amely két beolvasott szám közül a nagyobbikat írja ki a képernyőre! Ehhez készíts egy függvényt, amely két paraméterként kapott szám közül a nagyobbikkal tér vissza. A főprogram csak az input/output műveletekkel foglalkozzon, és használja fel a függvényt.

Specifikáció:

A program inputja két valós szám. A program outputja egyetlen sor, melyben a két megadott szám közül a nagyobbik szerepel. A program a bekérés előtt tájékoztatja a felhasználót arról, hogy milyen inputot vár.

Feladat (f0102)

Problémafelvetés:

Készíts függvényt, amely beolvas egy számot és megmondja, hogy a szám negatív, pozitív, esetleg nulla!

Specifikáció:

A program inputja egyetlen egész szám. A program outputja egyetlen sor, melyben a "negatív", "pozitív" illetve "nulla" szöveg szerepel, a beolvasott szám értékének megfelelően. A program a bekérés előtt tájékoztatja a felhasználót arról, hogy milyen inputot vár.

Ciklusokkal megoldható feladatok

Egyszerű feladatok

Feladat (f0065)

Problémafelvetés:

Írjunk olyan programot, ami addig kér be számokat a billentyűzetről, amíg a beírt szám nem 0, majd kiírja ki a beírt számok összegét!

Specifikáció:

A program inputja egy előre meg nem határozott számú egész számból álló számsorozat, melyet a 0 érték zár. A 0 érték nem része a számsorozatnak. A program kimenete a számsorozathoz tartozó számok összege. A program más kimenetet nem ad.

Lehetséges megoldás (m0065)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/*
 * Szegedi Tudományegyetem
 * Informatikai Tanszékcsoport
 * Szoftverfejlesztés Tanszék
 *
 * Programozás Alapjai feladat megoldása
 *
 * Gergely Tamás, 2008. őszi félév.
 *
 * Algoritmustervezés:
 *    A program egy ciklusban mindaddig kér be egész számokat, amíg egyszer
 *    0 értéket nem kap. A ciklusmagban feldolgozzuk a számot, majd bekérjük
 *    a következőt. A feldolgozás után (vagyis ha már hozzáadtuk az eddigi
 *    részösszeghez) a beolvasott számokra már nincs szükség.
 *
 * Megvalósítás:
 *    C nyelvben a while() { } ciklus használható ha egy feltételtől függ a
 *    ciklus újabb végrehajtása.
 *
 * fordítás:
 *    gcc -o $BASENAME$ $FILENAME$
 *
 * futtatás:
 *    ./$BASENAME$
 */

#include <stdio.h>

int main() {
    int x;
    int osszeg = 0;
    scanf("%d", &x);
    while (x != 0) {
        osszeg += x;
        scanf("%d", &x);
    }
    printf("%d\n", osszeg);
    return 0;
}
Feladat (f0067)

Problémafelvetés:

Írj egy programot, ami beolvas két egész számot, majd kiírja (a határokat is beleértve) a kettő közötti egész számok szorzatát.

Specifikáció:

A program inputja két egész szám, \(A\) és \(B\), outputja pedig az \([A, B]\) zárt intervallum egész értékű elemeinek szorzata. A program más kimenetet nem ad.

Lehetséges megoldás (m0067)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/*
 * Szegedi Tudományegyetem
 * Informatikai Tanszékcsoport
 * Szoftverfejlesztés Tanszék
 *
 * Programozás Alapjai feladat megoldása
 *
 * Gergely Tamás, 2008. őszi félév.
 *
 * Algoritmustervezés:
 *    A program bekér két egész számot, majd az elsőtől a másodikig növekvő
 *    sorrendben haladva minden értékre végrehajtja ugyanazt a műveletet. Ez
 *    a művelet az eddigi szorzat aktuális értékkel való összeszorzása. A
 *    ciklus után kiírjuk a kiszámolt szorzatot.
 *
 * fordítás:
 *    gcc -o $BASENAME$ $FILENAME$
 *
 * futtatás:
 *    ./$BASENAME$
 */

#include <stdio.h>

int main() {
    int a, b, i;
    int szorzat = 1;
    scanf("%d %d", &a, &b);
    for (i = a; i <= b; ++i) {
        szorzat *= i;
    }
    printf("%d\n", i);
    return 0;
}
Feladat (f0278)

Problémafelvetés:

Szeretnénk meghatározni a számokhoz tartozó Collatz sorozatokat. A Collatz sorozat \(i.\) elemét jelölje \(C_i\). A sorozat tagjai a következő módon számolhatók: \(C_{n+1} = C_n/2\), ha \(C_n\) páros; \(C_{n+1} = 3C_n + 1\), ha \(C_n\) páratlan. A sorozat "utolsó" tagja az 1 lesz. (Nos, egyrészt nincs utolsó tag, csak az 1 érték után az 1, 4, 2, 1, 4, 2, ... sorozat ismétlődik a végtelenségig, másrészt még nem bizonyított, hogy bármely kezdőértékkel valóban eljut ide a sorozat, de ellenpélda egyelőre nincs. De ezeken az apróságokon most ne akadjunk fenn.) Határozzuk meg és írjuk ki a felhasználó által megadott értékhez mint \(C_0\)-hoz tartozó Collatz sorozat elemeit.

Lehetséges megoldás (m0278)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/*
 * Szegedi Tudományegyetem
 * Informatikai Tanszékcsoport
 * Szoftverfejlesztés Tanszék
 *
 * Programozás Alapjai feladat megoldása
 *
 * Gergely Tamás, 2020. őszi félév.
 *
 * fordítás:
 *    gcc -o m0278 m0278.c
 *
 * futtatás:
 *    ./m0278.c
 */

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    unsigned int n;
    scanf("%u", &n);
    printf("%u", n);
    while (n > 1) {
        if (n % 2 == 1) {
            n = 3 * n + 1;
        } else {
            n /= 2;
        }
        printf(" -> %u", n);
    }
    printf("\n");
    return 0;
}

Gondolkodtató, algoritmikus feladatok

Feladat (f0277)

Problémafelvetés:

Jobbról csonkolhatónak nevezzük azokat a prímeket, amelyek vagy egyjegyű prímek, vagy az utolsó számjegyüket elhagyva szintén jobbról csonkolható prímet kapunk. Melyek tízes számrendszerben a jobbról csonkolható prímek?

Segítség (f0277)

Ha megpróbálunk a prímekből kiindulni, és megnézni, hogy csonkolhatóak-e, akkor először az összes prímet kellene meghatároznunk. Ez még akkor is nagy feladat, ha valahonnan megsejtjük, hogy ezek a prímek legfeljebb 8 számjegyűek. ;)

Gondolkodjunk fordítva. Ha találunk egy csonkolható prímet, próbáljuk meg kiegészíteni jobbról. Ha ez is prím, akkor ez is csonkolható lesz, és szintén megpróbálhatjuk kiegészíteni.

Szükség lesz tehát egy függvényre, ami eldönti, hogy egy szám prím-e. Valamint szükség lesz egy másik (rekurzív) függvényre, ami, ha a kapott szám prím, akkor egyrészt kiírja, másrészt megpróbálja kiegészíteni jobbról egy darab újabb számjeggyel. Gondold végig, hony milyen számjegyek jöhetnek számításba, amelyekkel érdemes próbát tenni. A függvény saját magát hívja meg a kiegészített szám(ok)ra.

A főprogramban ezt a második függvényt hívjuk meg minden ismert egyjegyű prímre, hiszen ezekről biztosan tudjuk, hogy csonkolhatóak.

Lehetséges megoldás (m0277)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/*
 * Szegedi Tudományegyetem
 * Informatikai Tanszékcsoport
 * Szoftverfejlesztés Tanszék
 *
 * Programozás Alapjai feladat megoldása
 *
 * Gergely Tamás, 2020. őszi félév.
 *
 * fordítás:
 *    gcc -o m0277 m0277.c
 *
 * futtatás:
 *    ./m0277
 */

#include <stdio.h>
#include <stdbool.h>

bool prim_e(int n) {
    if (n < 2) {
        return false;
    }
    for (int i = 2; i * i <= n; ++i) {
        if (n % i == 0) {
            return false;
        }
    }
    return true;
}

void csonkolhato(int base) {
    if (prim_e(base)) {
        printf("%d\n", base);
        csonkolhato(10 * base + 1);
        csonkolhato(10 * base + 3);
        csonkolhato(10 * base + 7);
        csonkolhato(10 * base + 9);
    }
}

int main() {
    csonkolhato(2);
    csonkolhato(3);
    csonkolhato(5);
    csonkolhato(7);
    return 0;
}

Utolsó frissítés: 2020-10-11 21:50:50