==== 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.
{{:tanszek:oktatas:muszaki_informatika:pasted:20240228-181425.png}}
#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 =====
{{:tanszek:oktatas:muszaki_informatika:pasted:20240228-181856.png}}
#include
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;
}