mirror of
https://github.com/theoleuthardt/learningC.git
synced 2026-06-13 09:37:53 +00:00
Initial commit
This commit is contained in:
commit
826d4c8c9d
81 changed files with 7268 additions and 0 deletions
53
uebung8/aufgabe1.c
Normal file
53
uebung8/aufgabe1.c
Normal 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
39
uebung8/aufgabe2.c
Normal 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
43
uebung8/aufgabe3.c
Normal 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
30
uebung8/aufgabe4.c
Normal 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
40
uebung8/aufgabe5.c
Normal 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
28
uebung8/aufgabe6.c
Normal 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
28
uebung8/aufgabe7.c
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
|
||||
int secondsSinceMonthBegin(){
|
||||
// Aktuelle Zeit erhalten
|
||||
time_t currentTime;
|
||||
time(¤tTime);
|
||||
|
||||
// Lokale Zeitzone des Systems erhalten
|
||||
struct tm *localTime;
|
||||
localTime = localtime(¤tTime);
|
||||
|
||||
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
103
uebung8/aufgabe8.c
Normal 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;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue