Kördiagram

feladat: Készítsen egy C programot, amely egy kördiagramot jelenít meg az egyes bevételi források százalékos megoszlásával egy képzeletbeli vállalat esetén. A kördiagram mellett egy összefoglaló (legend) is szerepeljen, amely az egyes bevételi forrásokat színes téglalapokkal és címkékkel azonosítja.

#include "raylib.h"

int main() {
    const int screenWidth = 800;
    const int screenHeight = 450;
    InitWindow(screenWidth, screenHeight, "Kordiagram");

    SetTargetFPS(60);

    // Kördiagram adatok
    float szazalekok[] = {30.0f, 25.0f, 20.0f, 15.0f, 10.0f}; // Összesen 100%
    Color szinek[] = {RED, GREEN, BLUE, ORANGE, PURPLE}; // Minden szelethez egy szín
    const char *cimkek[] = {"Termekertekesites", "Szolgaltatasok", "Licencdijak", "Befektetesek", "Egyeb"};

    while (!WindowShouldClose()) {
        BeginDrawing();
        ClearBackground(RAYWHITE);

        // Kördiagram középpontja és sugara
        Vector2 kozep = {screenWidth / 2.0f, screenHeight / 2.0f};
        float sugar = 180.0f;

        float kezdoSzog = 90.0f;
        for (int i = 0; i < 5; i++) {
            float szog = 360.0f * (szazalekok[i] / 100.0f);

            // Szelet rajzolása
            DrawCircleSector(kozep, sugar, kezdoSzog - szog, kezdoSzog, 100, szinek[i]);
            DrawCircleSectorLines(kozep, sugar, kezdoSzog - szog, kezdoSzog, 100, DARKGRAY);

            kezdoSzog -= szog;
        }

        // Osszefoglalo rajzolása (legends)
        int legendX = screenWidth - 200; // X pozíció
        int legendY = 50; // Kezdő Y pozíciój
        int magassag = 20; // Minden sor magassága
        for (int i = 0; i < 5; i++) {
            // Szín téglalap rajzolása
            DrawRectangle(legendX, legendY + i * (magassag + 5), 20, magassag, szinek[i]);
            // Címke rajzolása
            DrawText(cimkek[i], legendX + 25, legendY + i * (magassag + 5), 10, BLACK);
        }

        EndDrawing();
    }

    CloseWindow();

    return 0;
}

Oszlopdiagram

#include <raylib.h>

int main() {
    const int screenWidth = 800;
    const int screenHeight = 450;
    InitWindow(screenWidth, screenHeight, "Oszlopdiagram");

    SetTargetFPS(60);

    // Oszlopdiagram adatok
    float szazalekok[] = {30.0f, 25.0f, 20.0f, 15.0f, 10.0f}; // Összesen 100%
    Color szinek[] = {RED, GREEN, BLUE, ORANGE, PURPLE}; // Minden szelethez egy szín
    const char *cimkek[] = {"Termekertekesites", "Szolgaltatasok", "Licencdijak", "Befektetesek", "Egyeb"};

    // Oszlopok beállításai
    int oszlopSzelesseg = 50;
    int oszlopKoz = 20;
    int diagramX = 100; // Diagram kezdő X pozíciója
    int alapMagassag = screenHeight - 100; // Az oszlopok alapja

    while (!WindowShouldClose()) {
        BeginDrawing();
        ClearBackground(RAYWHITE);

        for (int i = 0; i < 5; i++) {
            // Oszlop magasságának és pozíciójának kiszámítása
            float oszlopMagassag = (szazalekok[i] / 100.0f) * (screenHeight - 200);
            int oszlopX = diagramX + i * (oszlopSzelesseg + oszlopKoz);

            // Oszlop rajzolása
            DrawRectangle(oszlopX, alapMagassag - oszlopMagassag, oszlopSzelesseg, oszlopMagassag, szinek[i]);
        }

        // összefoglaló (legend)
        int legendX = screenWidth - 200; // X pozíció
        int legendY = 50; // Kezdő Y pozíció
        int magassag = 20; // Minden sor magassága
        for (int i = 0; i < 5; i++) {
            // Szín téglalap rajzolása
            DrawRectangle(legendX, legendY + i * (magassag + 5), 20, magassag, szinek[i]);
            // Címke rajzolása
            DrawText(cimkek[i], legendX + 25, legendY + i * (magassag + 5), 10, BLACK);
        }

        EndDrawing();
    }

    CloseWindow();

    return 0;
}