Skip to content
Snippets Groups Projects
Commit 7612cc42 authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

Beispielprogramme für den 18.12.2017

parent 5d46ca38
Branches
No related tags found
No related merge requests found
#include <stdio.h>
int find_first (char **name)
{
return 2;
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
int first = find_first (name);
printf ("%s\n", name[first]);
return 0;
}
#include <stdio.h>
#include <string.h>
int find_first (char **name)
{
int first = 0;
for (int i = 1; name[i]; i++)
if (strcmp (name[i], name[first]) < 0)
first = i;
return first;
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
int first = find_first (name);
printf ("%s\n", name[first]);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200000);
return result;
}
int find_first (char **name)
{
int first = 0;
for (int i = 1; name[i]; i++)
if (compare (name, i, first) < 0)
first = i;
return first;
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
int first = find_first (name);
display (name, first, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200000);
return result;
}
int find_first (char **name, int i0)
{
int first = i0;
for (int i = i0 + 1; name[i]; i++)
if (compare (name, i, first) < 0)
first = i;
return first;
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
int first = find_first (name, 0);
display (name, first, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200000);
return result;
}
int find_first (char **name, int i0)
{
int first = i0;
for (int i = i0 + 1; name[i]; i++)
if (compare (name, i, first) < 0)
first = i;
return first;
}
void sort (char **name)
{
int sorted = 0;
while (name[sorted])
{
int first = find_first (name, sorted);
char *temp = name[sorted];
name[sorted] = name[first];
name[first] = temp;
sorted++;
}
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
sort (name);
display (name, -1, -1);
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment