add Flugi
parent
e647fd6232
commit
e6855422d3
|
@ -0,0 +1,192 @@
|
||||||
|
#include "Funktion_Flugi.h"
|
||||||
|
|
||||||
|
|
||||||
|
int quiz(char Question[][500], char Answer[], int zahl_h) {
|
||||||
|
char repeat[zahl_h][500]; // Array, um falsche Fragen zu speichern
|
||||||
|
char userAnswer;
|
||||||
|
int incorrectIndices[zahl_h]; // Indizes der falschen Antworten
|
||||||
|
int incorrectCount = 0; // Anzahl falscher Antworten
|
||||||
|
srand(time(NULL)); //SL Zufallsgenerator initialisieren
|
||||||
|
|
||||||
|
int zufallszahl = 0;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
// Fragen durchgehen und Antworten überprüfen
|
||||||
|
for (i = 0; i < zahl_h; i++)
|
||||||
|
{
|
||||||
|
zufallszahl = rand() % zahl_h ; // SL % 2 räpresentier die Obergrenze
|
||||||
|
|
||||||
|
|
||||||
|
printf("Frage %d: %s\n", i + 1, Question[zufallszahl]);//SL Zufallszahl durch i ersetzt
|
||||||
|
scanf(" %c", &userAnswer); // wichtig lehrschlag vor %c
|
||||||
|
|
||||||
|
if (userAnswer == Answer[zufallszahl]) {
|
||||||
|
printf("Korrekt!\n");
|
||||||
|
}
|
||||||
|
else if (userAnswer != Answer[zufallszahl])
|
||||||
|
{
|
||||||
|
printf("Falsch!\n");
|
||||||
|
strcpy(repeat[incorrectCount], Question[i]); // Frage speichern
|
||||||
|
incorrectIndices[incorrectCount] = zufallszahl; // Index speichern
|
||||||
|
incorrectCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Überprüfen, ob es falsche Antworten gibt
|
||||||
|
if (incorrectCount > 0) {
|
||||||
|
char retry;
|
||||||
|
printf("Du hast %d falsche Antworten. Willst du diese wiederholen? (j/n): ", incorrectCount);
|
||||||
|
scanf(" %c", &retry);
|
||||||
|
|
||||||
|
if (retry == 'j' || retry == 'J') {
|
||||||
|
for (int i = 0; i < incorrectCount; i++) {
|
||||||
|
printf("Wiederholung: %s\n", repeat[i]);
|
||||||
|
scanf(" %c", &userAnswer);
|
||||||
|
|
||||||
|
if (userAnswer == Answer[incorrectIndices[i]]) {
|
||||||
|
printf("Jetzt korrekt!\n");
|
||||||
|
} else {
|
||||||
|
printf("Immer noch falsch.\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
printf("Alle Antworten waren korrekt!\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
return incorrectCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Funktion: Baum zeichnen
|
||||||
|
void draw_tree(int total , int wrong) {
|
||||||
|
total++;
|
||||||
|
for (int i = 0; i < total - 1; i++) {
|
||||||
|
// Sterne einrücken
|
||||||
|
for (int j = 0; j < total - i - 1; j++) {
|
||||||
|
printf(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sterne für diese Ebene zeichnen
|
||||||
|
for (int y = 0; y < (2 * i + 1); y++) {
|
||||||
|
if (wrong == 0 && i == 0) {
|
||||||
|
// Besondere goldene Spitze, wenn alles richtig ist
|
||||||
|
printf("\033[1;33m*\033[0m");
|
||||||
|
} else if (i < wrong) {
|
||||||
|
// Ebene gehört zu den falschen Fragen (Rot)
|
||||||
|
printf("\033[1;31m*\033[0m"); // Rote Sterne
|
||||||
|
} else {
|
||||||
|
// Ebene gehört zu den richtigen Fragen (Grün)
|
||||||
|
printf("\033[1;32m*\033[0m"); // Grüne Sterne
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stamm zentrieren
|
||||||
|
for (int i = 0; i < total - 1; i++) {
|
||||||
|
printf(" ");
|
||||||
|
}
|
||||||
|
printf("|\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Funktion: Ergebnisse ausgeben
|
||||||
|
void print_results(int total, int wrong) {
|
||||||
|
printf("\n=== Ergebnis der Auswertung ===\n");
|
||||||
|
printf("Gesamtfragen: %d\n", total);
|
||||||
|
printf("Falsche Fragen: %d\n", wrong);
|
||||||
|
printf("Richtige Fragen: %d\n", total - wrong);
|
||||||
|
|
||||||
|
// Besondere Nachricht, wenn alles richtig ist
|
||||||
|
if (wrong == 0) {
|
||||||
|
printf("\n Perfekt gemacht! Alle Fragen richtig beantwortet! \n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hauptfunktion
|
||||||
|
int Flugi() {
|
||||||
|
int zahl_h ; // Höhe des Baumes (Gesamtfragen)
|
||||||
|
int wrong_questions; // Anzahl der falschen Fragen
|
||||||
|
|
||||||
|
|
||||||
|
FILE *file; // File-Pointer
|
||||||
|
char filename[50] = "questions.txt" ; // Filename
|
||||||
|
int MaxLines = 500;
|
||||||
|
int MaxLength = 500;
|
||||||
|
char lines[MaxLines][MaxLength]; // Array for separate lines
|
||||||
|
int line_count = 0; // Counter for number of lines
|
||||||
|
|
||||||
|
char Question[MaxLines][MaxLength]; // Array for questions
|
||||||
|
char Answer[MaxLines]; // Array for answer
|
||||||
|
int qst = 0;
|
||||||
|
int len = 0;
|
||||||
|
|
||||||
|
|
||||||
|
// Open file
|
||||||
|
file = fopen(filename, "r");
|
||||||
|
if (file == NULL) {
|
||||||
|
printf("Fehler: Datei \"%s\" konnte nicht geöffnet werden.\n", filename);
|
||||||
|
return 1; // End program if file can't be opened
|
||||||
|
}
|
||||||
|
|
||||||
|
// Read lines from the file
|
||||||
|
while (fgets(lines[line_count], MaxLength, file) != NULL) {
|
||||||
|
size_t len = strlen(lines[line_count]);
|
||||||
|
if (len > 0 && lines[line_count][len - 1] == '\n') {
|
||||||
|
lines[line_count][len - 1] = '\0'; // Entferne das '\n'
|
||||||
|
len--;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Frage und Antwort trennen
|
||||||
|
if (len > 2) {
|
||||||
|
Answer[line_count] = lines[line_count][len - 1]; // Letztes Zeichen als Antwort
|
||||||
|
lines[line_count][len - 2] = '\0'; // Kürze Frage um Antwortzeichen
|
||||||
|
strcpy(Question[line_count], lines[line_count]);
|
||||||
|
}
|
||||||
|
line_count++;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
zahl_h = line_count;
|
||||||
|
|
||||||
|
// close file
|
||||||
|
fclose(file);
|
||||||
|
|
||||||
|
/*
|
||||||
|
// Output
|
||||||
|
printf("\nDie Datei wurde in %d Zeilen eingelesen:\n", line_count);
|
||||||
|
for (int i = 0; i < line_count; i++) {
|
||||||
|
printf("Zeile %d: %s\n", i + 1, Question[i]);
|
||||||
|
size_t len = strlen(lines[i]);
|
||||||
|
printf("Antwort: %c\n", Answer[i]);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
//char question[2][50]; //= {"Schaffen wir das? (1 = Ja, 0 = Nein)", "Wie geht das? (1 = Einfach, 0 = Schwer)"};
|
||||||
|
//int answer[2] = {1, 0};
|
||||||
|
|
||||||
|
// Eingabebefehl
|
||||||
|
printf("Für wahre Aussage: W, für falsch Ausage: F\n");
|
||||||
|
|
||||||
|
int incorrectCount = quiz(Question, Answer, zahl_h);
|
||||||
|
printf("Anzahl falscher Antworten: %d\n", incorrectCount);
|
||||||
|
|
||||||
|
wrong_questions = incorrectCount;
|
||||||
|
|
||||||
|
// Baum zeichnen
|
||||||
|
draw_tree(zahl_h, wrong_questions);
|
||||||
|
|
||||||
|
// Ergebnisse ausgeben
|
||||||
|
print_results(zahl_h, wrong_questions);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
Flugi();
|
||||||
|
}
|
||||||
|
*/
|
|
@ -0,0 +1,30 @@
|
||||||
|
/* Funktion_Flugi.h
|
||||||
|
|
||||||
|
Autor: Simon Sommer, Simon Ladner, Lucas Defuns, Delia Schmid
|
||||||
|
Firma: FHGR
|
||||||
|
Version 1.0
|
||||||
|
Datum 16.12.2024
|
||||||
|
Aenderungen:
|
||||||
|
V 1.0 16.12.2024 Erste Version
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef Funktion_Flugi_H
|
||||||
|
#define Funktion_Flugi_H
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
// Konstanten für die Dateiverwaltung
|
||||||
|
#define MAX_LINES 500
|
||||||
|
#define MAX_LENGTH 500
|
||||||
|
|
||||||
|
// Funktionsprototypen
|
||||||
|
int quiz(char Question[][MAX_LENGTH], char Answer[], int zahl_h);
|
||||||
|
void draw_tree(int total, int wrong);
|
||||||
|
void print_results(int total, int wrong);
|
||||||
|
|
||||||
|
int Flugi();
|
||||||
|
|
||||||
|
#endif // QUIZ_H
|
11
src/main.c
11
src/main.c
|
@ -34,6 +34,7 @@ Datum: 04.12.2024
|
||||||
#include "Ramen-vz/Ramen_Physik.h"
|
#include "Ramen-vz/Ramen_Physik.h"
|
||||||
#include "Fehlenden-vz/Fehlenden_Elektronik.h"
|
#include "Fehlenden-vz/Fehlenden_Elektronik.h"
|
||||||
#include "Wein-tz/Abbildungsrechner.h"
|
#include "Wein-tz/Abbildungsrechner.h"
|
||||||
|
#include "Flugi-tz/Funktion_Flugi.h"
|
||||||
#include "test_prog.h"
|
#include "test_prog.h"
|
||||||
|
|
||||||
#include "Main-vz/pipes_test.h"
|
#include "Main-vz/pipes_test.h"
|
||||||
|
@ -180,13 +181,13 @@ void print_menu(int terminal_width, int terminal_height, int line){
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
print_line("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓", spaces, (0 <= line && line < 1) ? ";31": ";37");
|
print_line("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓", spaces, (0 <= line && line < 1) ? ";31": ";37");
|
||||||
print_line("┃ 1 Ramen Physik ┃", spaces, (0 <= line && line < 1) ? ";31": ";37");
|
print_line("┃ 1 Physik (vz) ┃", spaces, (0 <= line && line < 1) ? ";31": ";37");
|
||||||
print_line("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫", spaces, (0 <= line && line < 2) ? ";31": ";37");
|
print_line("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫", spaces, (0 <= line && line < 2) ? ";31": ";37");
|
||||||
print_line("┃ 2 Fehlenden Elektronik ┃", spaces, (1 <= line && line < 2) ? ";31": ";37");
|
print_line("┃ 2 Elektronik (vz) ┃", spaces, (1 <= line && line < 2) ? ";31": ";37");
|
||||||
print_line("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫", spaces, (1 <= line && line < 3) ? ";31": ";37");
|
print_line("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫", spaces, (1 <= line && line < 3) ? ";31": ";37");
|
||||||
print_line("┃ 3 Abbildungsrechner ┃", spaces, (2 <= line && line < 3) ? ";31": ";37");
|
print_line("┃ 3 Abbildungsrechner (tz) ┃", spaces, (2 <= line && line < 3) ? ";31": ";37");
|
||||||
print_line("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫", spaces, (2 <= line && line < 4) ? ";31": ";37");
|
print_line("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫", spaces, (2 <= line && line < 4) ? ";31": ";37");
|
||||||
print_line("┃ 4 Programm ┃", spaces, (3 <= line && line < 4) ? ";31": ";37");
|
print_line("┃ 4 Numpy (tz) ┃", spaces, (3 <= line && line < 4) ? ";31": ";37");
|
||||||
print_line("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫", spaces, (3 <= line && line < 5) ? ";31": ";37");
|
print_line("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫", spaces, (3 <= line && line < 5) ? ";31": ";37");
|
||||||
print_line("┃ 5 Programm ┃", spaces, (4 <= line && line < 5) ? ";31": ";37");
|
print_line("┃ 5 Programm ┃", spaces, (4 <= line && line < 5) ? ";31": ";37");
|
||||||
print_line("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫", spaces, (4 <= line && line < 6) ? ";31": ";37");
|
print_line("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫", spaces, (4 <= line && line < 6) ? ";31": ";37");
|
||||||
|
@ -244,7 +245,7 @@ void run_programm(int programm, int width, int height, bool *used){
|
||||||
case 0: return_code = Ramen_Physik(); break;
|
case 0: return_code = Ramen_Physik(); break;
|
||||||
case 1: return_code = Fehlenden_Elektronik_main(); break;
|
case 1: return_code = Fehlenden_Elektronik_main(); break;
|
||||||
case 2: return_code = Abbildungsrechner(); break;
|
case 2: return_code = Abbildungsrechner(); break;
|
||||||
case 3: return_code = test_gruppe_programmname(); break;
|
case 3: return_code = Flugi(); break;
|
||||||
case 4: return_code = test_gruppe_programmname(); break;
|
case 4: return_code = test_gruppe_programmname(); break;
|
||||||
case 5: return_code = test_gruppe_programmname(); break;
|
case 5: return_code = test_gruppe_programmname(); break;
|
||||||
case 6: return_code = test_gruppe_programmname(); break;
|
case 6: return_code = test_gruppe_programmname(); break;
|
||||||
|
|
Loading…
Reference in New Issue