A kiválasztott változat és az aktuális verzió közötti különbségek a következők.
Előző változat mindkét oldalon Előző változat Következő változat | Előző változat | ||
tanszek:oktatas:szamitastechnika:gyakorlo_feladatok_1 [2023/10/17 17:10] knehez |
tanszek:oktatas:szamitastechnika:gyakorlo_feladatok_1 [2023/11/22 06:48] (aktuális) knehez |
||
---|---|---|---|
Sor 1: | Sor 1: | ||
- | ====== Egyszerű gyakorló feladatok ====== | + | ====== Egyszerű általános gyakorló feladatok ====== |
Sor 297: | Sor 297: | ||
</sxh> | </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> | ||
+ | |||