Initial commit

This commit is contained in:
theoleuthardt 2024-01-27 02:07:15 +01:00
commit 826d4c8c9d
81 changed files with 7268 additions and 0 deletions

53
uebung8/aufgabe1.c Normal file
View file

@ -0,0 +1,53 @@
#include <stdio.h>
#include <stdlib.h>
char intToExcel (int num){
// Umwandlung der Zahl zur Excelform
long long c = 26;
char alp[26] = {
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
for (int i = 1; i > 0; i++) {
if (num <= c) {
printf("Benoetigte Buchstaben: %d\n", i);
break;
} else {
c = c * c;
}
}
if(num < 0){
printf("Ungültige Zahl zum Umwandeln!");
}
char letter;
char res[5];
int index = 0;
while(num > 0){
int remainder = (num-1) % 26;
letter = 'A' + remainder;
res[index++] = letter;
num = (num - 1) / 26;
}
// Rückwärtige Ausgabe der Buchstaben
printf("Buchstabenfolge: ");
for (int i = index - 1; i >= 0; i--) {
printf("%c", res[i]);
}
printf("\n");
return letter;
}
int main() {
int num = 1;
// Umwandlung der Zahl ins Buchstabenspaltensystem von Excel
printf("Zahl eingeben zum Umwandeln: ");
scanf("%d", &num);
intToExcel(num);
return 0;
}

39
uebung8/aufgabe2.c Normal file
View file

@ -0,0 +1,39 @@
#include <stdio.h>
#include <math.h>
double winkelBerechnungUhr(int minuten, int stunden){
// Stunde in Restklasse 12: [0, 11] bringen
stunden = stunden % 12;
// Winkel des Stundenzeigers pro Stunde (360 Grad / 12 Stunden)
double stundenWinkelProStunde = 360.0 / 12.0;
// Winkel des Minutenzeigers pro Minute (360 Grad / 60 Minuten)
double minutenWinkelProMinute = 360.0 / 60.0;
// Berechnung der Winkel für Stunden- und Minutenzeiger
double stundenWinkel = stunden * stundenWinkelProStunde + minuten * (stundenWinkelProStunde / 60.0);
double minutenWinkel = minuten * minutenWinkelProMinute;
// Berechnung des absoluten Winkelsunterschieds
double winkelUnterschied = fabs(stundenWinkel - minutenWinkel);
// Winkelunterschied auf den kleinsten Winkel (0-180 Grad) reduzieren
if (winkelUnterschied > 180.0) {
winkelUnterschied = 360.0 - winkelUnterschied;
}
return winkelUnterschied;
}
int main() {
// Beispielaufruf der Funktion mit Stunden und Minuten
int stunden = 3;
int minuten = 15;
// Berechnung des Winkels und Ausgabe
double winkel = winkelBerechnungUhr(stunden, minuten);
printf("Der Winkel zwischen Stunden- und Minutenzeiger betraegt: %.2f Grad\n", winkel);
return 0;
}

43
uebung8/aufgabe3.c Normal file
View file

@ -0,0 +1,43 @@
#include <stdio.h>
#define SIZE 50
int upperLetterCount(const char *input){
int count = 0;
for (int i = 0; i < SIZE && input[i] != '\0'; ++i) {
if(input[i] >= 'A' && input[i] <= 'Z') {
count++;
}
}
return count;
}
int main() {
char test[SIZE];
// test mit As befüllen
for (int i = 0; i < SIZE; i++) {
test[i] = 'A';
}
// Änderung der Elemente in test
for (int j = 0; j < SIZE; ++j) {
if (j*2 < SIZE) {
test[j*2] = 'b';
}
if (j*3 < SIZE) {
test[j*3] = 'c';
}
}
// Ausgabe des Arrays test
printf("Testarray: [");
for (int k = 0; k < SIZE; ++k) {
if(k < SIZE-1){
printf("%c, ", test[k]);
} else {
printf("%c", test[k]);
}
}
printf("]\n");
printf("Anzahl der Großbuchstaben im String: %d", upperLetterCount(test));
return 0;
}

30
uebung8/aufgabe4.c Normal file
View file

@ -0,0 +1,30 @@
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
int wordCount(const char *string){
int count = 0;
bool inWord = false;
size_t strSize = strlen(string);
printf("Länge des Strings: ");
printf("%zu\n", strSize);
for (; *string != '\0'; string++) {
if(*string == ' ' || *string == ',' || *string == '.'){
inWord = false;
} else {
if(!inWord){
count++;
inWord = true;
}
}
}
return count;
}
int main() {
char *string = "Coders are also just human with addictions and needs.";
printf("String: %s\n", string);
printf("Anzahl der Wörter im String: %d", wordCount(string));
return 0;
}

40
uebung8/aufgabe5.c Normal file
View file

@ -0,0 +1,40 @@
#include <stdio.h>
char findMostCommonChar(const char *str) {
int charCount[256] = {0}; // Ein Array zur Zählung der Vorkommen jedes ASCII-Zeichens, mit 0 initialisiert
// Zählung der Vorkommen jedes Zeichens im String
while (*str != '\0') {
charCount[(unsigned char)*str]++;
str++;
}
// Zählungsvariablen initialisieren BIG WIN INCOMING
char mostCommonChar = '\0';
int maxCount = 0;
// Suche des Zeichens mit dem meisten Vorkommen, rieche ich da BIG WIN?
for (int i = 0; i < 256; ++i) {
if (charCount[i] > maxCount) {
maxCount = charCount[i];
mostCommonChar = (char)i;
}
}
// BIG WIN ausgeben!!!!
return mostCommonChar;
}
int main() {
const char *inputString = "bigwinnnn";
char mostComChar = findMostCommonChar(inputString);
if (mostComChar != '\0') {
printf("Das Zeichen mit dem meisten Vorkommen ist: %c\n BIG WIN!", mostComChar);
} else {
printf("Der String ist leer.\n");
}
return 0;
}

28
uebung8/aufgabe6.c Normal file
View file

@ -0,0 +1,28 @@
#include <stdio.h>
void reverseCase(char *string){
while(*string != '\0'){
if((unsigned char)*string < 91){ // Falls der aktuelle Buchstabe groß ist,
*string = (char) ((unsigned char)*string + 32); // mach ihn klein!
} else if((unsigned char)*string > 96) { // Falls der aktuelle Buchstabe klein ist,
*string = (char) ((unsigned char)*string - 32); // mache ihn groß! (BIG WIN)
}
string++;
}
}
int main() {
// Beispielstring:
char string[] = "abbcccABBCCC";
printf("Beispielstring: %s\n", string);
// Umkehrung der Groß- sowie Kleinbuchstaben
reverseCase(string);
// Ausgabe des umgekehrten Strings
printf("Umgekehrter String: %s\n", string);
return 0;
}

28
uebung8/aufgabe7.c Normal file
View file

@ -0,0 +1,28 @@
#include <stdio.h>
#include <time.h>
int secondsSinceMonthBegin(){
// Aktuelle Zeit erhalten
time_t currentTime;
time(&currentTime);
// Lokale Zeitzone des Systems erhalten
struct tm *localTime;
localTime = localtime(&currentTime);
int secondsSinceMonthBegin = localTime->tm_sec + // Sekunden
localTime->tm_min * 60 + // Minuten
localTime->tm_hour * 3600 + // Stunden
(localTime->tm_mday - 1) * 86400; // Tage
// Berücksichtigung der Zeitzone
secondsSinceMonthBegin += timezone;
return secondsSinceMonthBegin;
}
int main() {
// Ausgabe der Sekunden seit Monatsbeginn:
printf("Anzahl der Sekunden seit Monatsbeginn: %d", secondsSinceMonthBegin());
return 0;
}

103
uebung8/aufgabe8.c Normal file
View file

@ -0,0 +1,103 @@
#include <stdio.h>
#include <time.h>
#include <string.h>
int main() {
// Aktuelle Zeit erhalten:
time_t now;
now = time(0);
char *strNow = ctime(&now);
// Umformung des Strings
char day[3];
char mon[3];
char year[5];
char hour[3];
char min[3];
char sec[3];
memcpy(day, strNow + 8, 2);
day[2] = '\0';
memcpy(mon, strNow + 4, 3);
mon[3] = '\0';
memcpy(year, strNow + 20, 4);
year[4] = '\0';
memcpy(hour, strNow + 11, 2);
hour[2] = '\0';
memcpy(min, strNow + 14, 2);
min[2] = '\0';
memcpy(sec, strNow + 17, 2);
sec[2] = '\0';
// Umwandlung des Monats in eine Zahl
switch (mon[0]) {
case 'J':
if (mon[1] == 'a') {
strcpy(mon, "01");
break;
} else if (mon[1] == 'u' && mon[2] == 'n') {
strcpy(mon, "06");
break;
} else if (mon[1] == 'u' && mon[2] == 'l') {
strcpy(mon, "07");
break;
}
break;
case 'F':
if (mon[1] == 'e') {
strcpy(mon, "02");
break;
}
break;
case 'M':
if (mon[1] == 'a' && mon[2] == 'r') {
strcpy(mon, "03");
break;
} else if (mon[1] == 'a' && mon[2] == 'y') {
strcpy(mon, "05");
break;
}
case 'A':
if (mon[1] == 'p') {
strcpy(mon, "04");
break;
} else if (mon[1] == 'u' && mon[2] == 'g') {
strcpy(mon, "08");
break;
}
case 'S':
if (mon[1] == 'e' && mon[2] == 'p') {
strcpy(mon, "09");
break;
}
case 'O':
if (mon[1] == 'c' && mon[2] == 't') {
strcpy(mon, "10");
break;
}
case 'N':
if (mon[1] == 'o' && mon[2] == 'v') {
strcpy(mon, "11");
break;
}
case 'D':
if (mon[1] == 'e' && mon[2] == 'c') {
strcpy(mon, "12");
break;
}
default:
printf("Ungueltiges Monatskuerzel!");
break;
}
// Ausgabe des Strings
printf("Heute ist der %s.%s.%s und es ist %s:%s Uhr und %s Sekunden.\n", day, mon, year, hour, min, sec);
return 0;
}