User Tools

Site Tools


tanszek:oktatas:szamitastechnika:gyakorlo_feladatok_1

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tanszek:oktatas:szamitastechnika:gyakorlo_feladatok_1 [2023/10/17 16:51] kneheztanszek:oktatas:szamitastechnika:gyakorlo_feladatok_1 [2023/11/22 06:48] (current) knehez
Line 1: Line 1:
-====== Egyszerű gyakorló feladatok ======+====== Egyszerű általános gyakorló feladatok ======
  
  
Line 220: Line 220:
 } }
 </sxh> </sxh>
 +
 +**7. Kérjük be karaktereket az 'enter' megnyomásáig és közben számoljuk meg hány kisbetűt írt a felhasználó. (az angol ABC szerint)**
 +
 +<sxh c>
 +#include <stdio.h>
 +#include <conio.h>
 +
 +int main() {
 +    printf("Kerem a karaktereket (amig entert nem nyomunk): ");
 +
 +    char karakter;
 +    int kisbetuSzamlalo = 0;
 +    // Olvassuk be a karaktereket, amíg az angol ábécé betűit kapjuk
 +    while ((karakter = getch()) != '\r' &&
 +           ((karakter >= 'A' && karakter <= 'Z') || (karakter >= 'a' && karakter <= 'z'))) {
 +        // Ellenőrizzük, hogy a karakter kisbetű-e
 +        if (karakter >= 'a' && karakter <= 'z') {
 +            kisbetuSzamlalo++;
 +        }
 +        printf("%c", karakter);
 +    }
 +
 +    // Kiírjuk, hány kisbetű volt
 +    printf("\nA bevitt szovegben %d kisbetű volt.\n", kisbetuSzamlalo);
 +
 +    return 0;
 +}
 +</sxh>
 +
 +**8. Írjon C programot, amely az ötöslottó számsorsolását modellezi. A program véletlenszerűen generál öt különböző számot 1 és 90 között, majd kiírja ezeket a számokat: (figyelve, hogy különböző számokat húzzon**
 +
 +<sxh c>
 +#include <stdio.h>
 +#include <stdlib.h>
 +#include <time.h>
 +
 +#define SZAMOK 5
 +#define LEGKISEBB_SZAM 1
 +#define LEGNAGYOBB_SZAM 90
 +
 +int main() {
 +    int lottoSzamok[SZAMOK];
 +    int i, j;
 +
 +    // Inicializáljuk a random generátort a jelenlegi idő alapján
 +    srand(time(NULL));
 +
 +    // Generálunk öt különböző számot 1 és 90 között
 +    for (i = 0; i < SZAMOK_SZAMA; ++i) {
 +        int ujSzam;
 +        do {
 +            ujSzam = rand() % LEGNAGYOBB_SZAM + LEGKISEBB_SZAM;
 +
 +            // Ellenőrizzük, hogy az újonnan generált szám már nem szerepel-e a listában
 +            for (j = 0; j < i; ++j) {
 +                if (ujSzam == lottoSzamok[j]) {
 +                    ujSzam = 0; // Az ellenőrzés nem sikerült, generáljunk új számot
 +                    break;
 +                }
 +            }
 +        } while (ujSzam == 0);
 +
 +        // Hozzáadjuk az újonnan generált számot a listához
 +        lottoSzamok[i] = ujSzam;
 +    }
 +
 +    // Kiírjuk a generált számokat
 +    printf("Az otoslotto szamok: ");
 +    for (i = 0; i < SZAMOK; ++i) {
 +        printf("%d ", lottoSzamok[i]);
 +    }
 +    printf("\n");
 +
 +    return 0;
 +}
 +</sxh>
 +
 +** 9. Írjon programot ami a felhasználótól bekért szövegben a betűk gyakoriságát megállapítja, és egy hisztogrammot készít a konzolon.**
 +
 +A programban a betűk gyakoriságát egy 26 elemű tömbben (gyakorisag) érdemes tárolni, ahol minden elem egy betű gyakoriságát jelenti. A program kérje be a felhasználótól a szöveget, majd a betűk gyakoriságát számolja ki és egy hisztogrammal írja ki a konzolra. A toupper() függvény segítségével minden betűt nagybetűvé alakíthat, hogy az ábrázolás ne függjön a betűk nagy- vagy kisbetűs formájától.
 +
 +<sxh c>
 +#include <stdio.h>
 +#include <ctype.h>
 +
 +#define MAX_HISZTOGRAM_MERET 26
 +
 +void hisztogramKiirasa(int gyakorisag[]) {
 +    printf("\nBetuk gyakorisaga hisztogrammal:\n");
 +
 +    for (int i = 0; i < MAX_HISZTOGRAM_MERET; ++i) {
 +        char karakter = 'A' + i;
 +        printf("%c | ", karakter);
 +
 +        for (int j = 0; j < gyakorisag[i]; ++j) {
 +            printf("*");
 +        }
 +
 +        printf("\n");
 +    }
 +}
 +
 +int main() {
 +    char szoveg[1000];
 +    int gyakorisag[MAX_HISZTOGRAM_MERET] = {0}; // minden elemet nulláz
 +
 +    printf("Kerem a szoveget (legfeljebb 1000 karakter): ");
 +    fgets(szoveg, sizeof(szoveg), stdin);
 +
 +    for (int i = 0; szoveg[i] != '\0'; ++i) {
 +        char karakter = toupper(szoveg[i]);
 +
 +        if (isalpha(karakter)) {
 +            int index = karakter - 'A';
 +            gyakorisag[index]++;
 +        }
 +    }
 +
 +    hisztogramKiirasa(gyakorisag);
 +
 +    return 0;
 +}
 +</sxh>
 +
 +**10. Rajzoljunk egy kört a konzolra csillag karakterekből. **
 +
 +Ebben a játékos feladatban, legyen egy circle() függvény ami kiszámolja egy adott pont távolságát a kör középpontjától, majd összehasonlítja a sugárral. Ha a távolság közel van a sugárhoz, a függvény közelítőleg 0-t ad vissza.
 +
 +<sxh c>
 +#include <stdio.h>
 +#include <math.h>
 +const float centerX = 0.5;
 +const float centerY = 0.5;
 +
 +const int screenSizeX = 50;
 +const int screenSizeY = 30;
 +
 +float circle(float x, float y, float r)
 +{
 +    return (x - centerX) * (x - centerX) + (y - centerY) * (y - centerY) - r * r;
 +}
 +
 +int main() {
 +    for(int j = 0; j <= screenSizeY; j++)
 +    {
 +        for(int i = 0; i <= screenSizeX; i++)
 +        {
 +            float x = (float)i / screenSizeX;
 +            float y = (float)j / screenSizeY;
 +            if(fabs(circle(x, y, 0.3f)) < 0.01f)
 +            {
 +                printf("*");
 +            }
 +            else
 +            {
 +                printf(" ");
 +            }
 +        }
 +        printf("\n");
 +    }
 +    return 0;
 +}
 +</sxh>
 + 
  
tanszek/oktatas/szamitastechnika/gyakorlo_feladatok_1.1697561498.txt.gz · Last modified: 2023/10/17 16:51 by knehez