Program: 25.5.1.c und 25.6.4.c
This commit is contained in:
parent
7d56156184
commit
daad9ec9d3
22
25.4.1.c
22
25.4.1.c
@ -1,30 +1,30 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
void streichen(char *zeichKet, char streich)
|
||||
void streichen(char *zeichKet, char streich) ///zeichKet: Text und streich: Zeichen, dass entfernt werden soll
|
||||
{
|
||||
int i = 0;
|
||||
int p = 0;
|
||||
int i = 0; ///i schaut sich jedes Zeichen an
|
||||
int p = 0; ///p ist die Stelle an der wir schreiben, wenn es nicht gelöscht werden soll
|
||||
|
||||
while(zeichKet[i] != '\0')
|
||||
while(zeichKet[i] != '\0') ///Solange der Text weitergeht, prüft man Zeichen für Zeichen weiter
|
||||
{
|
||||
|
||||
if(zeichKet[i] != streich)
|
||||
if(zeichKet[i] != streich) ///Wenn das aktuelle Zeichen nicht gelöscht werden soll...
|
||||
{
|
||||
zeichKet[p] = zeichKet[i];
|
||||
p++;
|
||||
zeichKet[p] = zeichKet[i]; ///...schreiben wir es an p (neue Stelle des Zeichens)
|
||||
p++; ///p wird hochgezählt
|
||||
|
||||
}
|
||||
i++;
|
||||
}
|
||||
zeichKet[p] = '\0';
|
||||
zeichKet[p] = '\0'; ///Ende des Textes
|
||||
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
char zeichenkette[1001];
|
||||
char loeschen;
|
||||
char zeichenkette[1001]; ///Index fängt bei 1 an deshalb 1001 und nicht 1000
|
||||
char loeschen; ///Zeichen das gelöscht werden soll
|
||||
|
||||
printf("Geben Sie eine Zeichenkette (max. 1000 Zeichen) ein: \n");
|
||||
scanf("%1000[^\n]s", zeichenkette);
|
||||
@ -35,7 +35,7 @@ int main()
|
||||
|
||||
printf("...Die neue Zeichenkette ist dann: \n");
|
||||
|
||||
streichen(zeichenkette, loeschen);
|
||||
streichen(zeichenkette, loeschen); ///Aufruf der Funktion, die den Buchstaben rauswirft
|
||||
|
||||
printf("%s\n", zeichenkette);
|
||||
|
||||
|
28
25.4.3.c
28
25.4.3.c
@ -2,38 +2,38 @@
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
int is_palindrome(char *wort)
|
||||
int is_palindrome(char *wort) ///Funktion, die prüft ob das Wort ein Palindrom ist oder nicht
|
||||
{
|
||||
int len = strlen(wort);
|
||||
int len = strlen(wort); ///hier wird die Länge des Wortes ermittelt
|
||||
int i;
|
||||
for (i = 0; i < len / 2; i++)
|
||||
for (i = 0; i < len / 2; i++) ///Da Wort wird von außen nach innen verglichen: erster und letzter Buchstabe usw.
|
||||
{
|
||||
if (tolower(wort[i]) != tolower(wort[len - 1 - i]))
|
||||
{
|
||||
return 0;
|
||||
if (tolower(wort[i]) != tolower(wort[len - 1 - i])) ///prüft ob die Zeichen, die verglichen werden gleich oder ungleich sind
|
||||
{ ///Groß- und Kleinschreibung wird außer Acht gelassen
|
||||
return 0; ///Wort ist kein Palindrom sofort return 0
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
return 1; ///Wort ist ein Palindrom --> alle Zeichen waren gleich
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
char text[1001];
|
||||
char *teiler = " ,:";
|
||||
char *token;
|
||||
char text[1001]; ///Index beginnt immer bei 1 deshalb 1001
|
||||
char *teiler = " ,:"; ///Diese Zeichen gelten als Trennzeichen
|
||||
char *token; ///Zeiger der dann später auf jedes Wort zeigt
|
||||
|
||||
printf("Geben Sie Zeilen ein:\n");
|
||||
scanf("%1000[^\n]s",text);
|
||||
|
||||
token = strtok(text, teiler);
|
||||
token = strtok(text, teiler); ///teilt den Text beim ersten Trennzeichen und gibt das erste Wort zurück
|
||||
|
||||
while (token != NULL)
|
||||
while (token != NULL) ///Solange es noch weitere Wörter gibt...
|
||||
{
|
||||
if (is_palindrome(token) == 1)
|
||||
if (is_palindrome(token) == 1) ///prüft man ob es ein Palindrom ist und wenn ja gibt man es wieder aus
|
||||
{
|
||||
printf("........ %s\n", token);
|
||||
}
|
||||
token = strtok(NULL, teiler);
|
||||
token = strtok(NULL, teiler); ///gehe zum nächsten Wort
|
||||
}
|
||||
|
||||
|
||||
|
117
25.5.1.c
117
25.5.1.c
@ -2,89 +2,90 @@
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
|
||||
int kaeferIrrfahrt() {
|
||||
int a = 0;
|
||||
int strecke = 0;
|
||||
int kaeferIrrfahrt()
|
||||
{
|
||||
int a = 0; // Startposition 0
|
||||
int strecke = 0; // zählt wie viele Schritte der Käfer macht (anfangs 0)
|
||||
|
||||
while (a != 3) {
|
||||
while (a != 3) // Solange Käfer nicht bei Position 3 (Ziel), wiederholt sich die Schleife --> Ziel erreicht, wenn a == 3
|
||||
{
|
||||
int richtung = rand() % 3; // Erzeugen einer Zufallszahl --> %3 teilt die Zahl durch 3 und nimmt den Rest (0,1 oder 2)
|
||||
|
||||
if (a == 0) {
|
||||
a++;
|
||||
strecke++;
|
||||
if (a == 0)
|
||||
{
|
||||
a = 1; //Wenn der Käfer bei 0 ist, kann er NUR zu 1 gehen
|
||||
}
|
||||
|
||||
if (a == 1) {
|
||||
int zuf = rand() % 3 + 1;
|
||||
|
||||
if (zuf > 1) {
|
||||
a++;
|
||||
strecke++;
|
||||
else if (a == 1) // Wenn er bei 1 ist, gibt es 2 Möglichkeiten:
|
||||
{
|
||||
if (richtung == 0) // Wenn richtung == 0, dann zurück nach 0
|
||||
{
|
||||
a = 0;
|
||||
}
|
||||
else {
|
||||
a--;
|
||||
strecke++;
|
||||
|
||||
else
|
||||
{
|
||||
a = 2; // Wenn richtung == 1 oder 2, dann geht er nach 2
|
||||
}
|
||||
}
|
||||
|
||||
if (a == 2) {
|
||||
int zuf = rand() % 3 + 1;
|
||||
|
||||
if (zuf < 3) {
|
||||
a--;
|
||||
strecke++;
|
||||
else if (a == 2) // Wenn er bei 2 ist, gibt es zwei Möglichkeiten:
|
||||
{
|
||||
if (richtung < 2) // Wenn richtung kleiner 2, dann zurück nach 1
|
||||
{
|
||||
a = 1;
|
||||
}
|
||||
else {
|
||||
a++;
|
||||
strecke++;
|
||||
|
||||
else
|
||||
{
|
||||
a = 3; // Wenn richtung 2, geht er zum Ziel (Position 3)
|
||||
}
|
||||
}
|
||||
|
||||
strecke++; // Nach jedem Schritt zählt die Variable +1 dazu
|
||||
}
|
||||
return strecke;
|
||||
|
||||
return strecke; // Wenn Käfer am Ziel, geben wir zurück, wie viele Schritte er gebraucht hat
|
||||
}
|
||||
|
||||
int main() {
|
||||
int fahrt;
|
||||
int main()
|
||||
{
|
||||
int anzahl; // Speichert, wie oft gelaufen werden soll
|
||||
|
||||
printf("Geben Sie die Anzahl der Irrfahrten ein: ");
|
||||
scanf("%d", &fahrt);
|
||||
scanf("%d", &anzahl);
|
||||
|
||||
srand(time(NULL));
|
||||
srand(time(NULL)); // Sorgt dafür, dass bei jedem Neustart die Zufallszahlen anders sind
|
||||
|
||||
int *weglaengen = (int *)malloc(fahrt * sizeof(int));
|
||||
int haeufigkeit[100] = {0}; // Array mit 100 Zahlen (Weglänge 0-99) --> Alle beginnen bei 0
|
||||
int summe = 0; // Wird später verwendet, um alle Weglängen zusammenzuzählen
|
||||
|
||||
int n;
|
||||
for (n = 0; n < fahrt; n++) {
|
||||
weglaengen[n] = kaeferIrrfahrt();
|
||||
for (int i = 0; i < anzahl; i++) // Wir wiederholen den Vorgang "anzahl"-mal
|
||||
{
|
||||
int weg = kaeferIrrfahrt(); // Funktion der Irrfahrt wird aufgerufen und Anzahl der Schritte in "weg" gespeichert
|
||||
|
||||
if (weg < 100) // Ist die Weglänge kleiner als 100, dann
|
||||
{
|
||||
haeufigkeit[weg]++; // Erhöhe die Anzahl für diese Weglänge um 1 --> damit man am Ende weiss, wie oft jede Weglänge vorkam
|
||||
}
|
||||
|
||||
summe += weg; // Rechnet alle Weglängen zusammen
|
||||
}
|
||||
|
||||
printf("\n| Weglaenge | Haeufigkeit |\n");
|
||||
printf("---------------------------\n");
|
||||
|
||||
int maxWeglange = fahrt*100;
|
||||
int *haeufigkeit = (int *)calloc(maxWeglange , sizeof(int));
|
||||
|
||||
int i;
|
||||
for (i = 0; i < fahrt; i++) {
|
||||
haeufigkeit[weglaengen[i]]++;
|
||||
}
|
||||
|
||||
|
||||
printf("Wegl<EFBFBD>nge H<>ufigkeit\n");
|
||||
int p;
|
||||
for (p = 0; p <= maxWeglange; i++) {
|
||||
if (haeufigkeit[p] > 0) {
|
||||
printf("%9d %9d\n", p, haeufigkeit[p]);
|
||||
for (int i = 0; i < 100; i++) // Für jede Weglänge
|
||||
{
|
||||
if (haeufigkeit[i] > 0) // Wurde jede Weglänge mindestens einmal erreicht?
|
||||
{
|
||||
printf(" %2d %5d\n", i, haeufigkeit[i]); // Wenn ja, printe sie so
|
||||
}
|
||||
}
|
||||
|
||||
double durchschnitt = (double) summe / anzahl; //Berechnet den Durchschnitt, wie viele Schritte der Käfer gebraucht hat --> double, weil Kommazahl
|
||||
|
||||
int summe = 0;
|
||||
int k;
|
||||
for ( k = 0; k < fahrt; k++) {
|
||||
summe += weglaengen[k];
|
||||
}
|
||||
double durchschnitt = (double)summe / fahrt;
|
||||
printf("Durchschnittliche Wegl<67>nge: %.2lf\n", durchschnitt);
|
||||
|
||||
free(weglaengen);
|
||||
free(haeufigkeit);
|
||||
printf("\nDurchschnittliche Weglaenge: %.2f\n", durchschnitt);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
48
25.6.4.c
Normal file
48
25.6.4.c
Normal file
@ -0,0 +1,48 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#define MAX_LEN 10 // Eingabe des Wortes kann max. 10 Zeichen lang sein
|
||||
|
||||
int eingabefarbe() // Liest eine Farbe und gibt eine Zahl zurück --> Gruen 1, Rot 2, Violett 3
|
||||
{
|
||||
int eingabe_als_zahl = 0; // 0 = noch keine gültige Farbe
|
||||
char *grundfarbe[] = {"Gruen", "Rot", "Violett"}; // Array aus Strings: Erlaubte Farben, die der Benutzer eingeben darf
|
||||
char eingabeFarbe[MAX_LEN]; // Hier wird die Eingabe des Benutzers gespeichert --> 9 Buchstaben und 1 Enterzeichen
|
||||
|
||||
printf("Geben Sie eine Farbe ein (Gruen, Rot, Violett): ");
|
||||
|
||||
fgets(eingabeFarbe, MAX_LEN, stdin); // Liest die Eingabe des Benutzers als Text ein und speichert sie in eingabeFarbe
|
||||
|
||||
if(eingabeFarbe[strlen(eingabeFarbe)-1] == '\n') // Prüft, ob ein Zeilenumbruch da ist und löscht ihn, damit Vergleich der Farben später funktioniert
|
||||
eingabeFarbe[strlen(eingabeFarbe)-1] = '\0'; // \n wird ersetzt mit \0 --> Ende Zeichen
|
||||
|
||||
for (int i = 0; i < 3; ++i) // Schritt wird 3 mal wiederholt, da drei Farben verfügbar sind
|
||||
{
|
||||
if (strcmp(eingabeFarbe, grundfarbe[i]) == 0) // Vergleicht 2 Texte: Der eingegeben wurde & erlaubte Farbe --> Wenn genau gleich, dann gibt strcmp() den Wert 0 zurück
|
||||
{
|
||||
eingabe_als_zahl = i + 1; // Wir speichern die Farbe als Zahl --> Gruen 1, Rot 2, Violett 3
|
||||
return eingabe_als_zahl; // Wird zurück an die main gegeben
|
||||
}
|
||||
}
|
||||
return eingabe_als_zahl; // Wenn keine Zahl passt --> Ungültig (0)
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
int farbe1, farbe2, posTabelle; // 3 Platzhalter werden definiert; posTabelle = um die Mischfarbe aus Tabelle zu holen
|
||||
char *auswahl[] = {"Gruen", "Gelb", "Blau", "Gelb", "Rot", "Purpur", "Blau", "Purpur", "Violett"}; // 1D-Array: Tabelle mit den Mischfarben, insgesamt 9 zur Auswahl beginnend bei Index 0, also 8
|
||||
|
||||
farbe1 = eingabefarbe(); // Farbe 1 wird gespeichert
|
||||
farbe2 = eingabefarbe(); // Farbe 2 wird gespeichert
|
||||
|
||||
if (farbe1 == 0 || farbe2 == 0) // Wenn eine Farbe ungültig ist, dann brechen wir ab und printen
|
||||
{
|
||||
printf("Ungültige Eingabe");
|
||||
return 0;
|
||||
}
|
||||
|
||||
posTabelle = (farbe1 -1) * 3 + farbe2 -1; // Umrechnung von 2D-Tabelle in 1D-Array: farbe1 ist die Zeile und farbe2 ist die Spalte, 3 ist die Anzahl der Spalten pro Zeile
|
||||
printf("Die Mischfarbe ist dann: %s", auswahl[posTabelle]);
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user