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

Vorbereitung 7.1.2019

parent a5608a82
No related branches found
No related tags found
No related merge requests found
Showing with 712 additions and 0 deletions
../common/Tower_of_Hanoi.jpeg
\ No newline at end of file
.file "aufgabe-1.c"
.text
.globl main
.type main, @function
main:
.LFB11:
.cfi_startproc
leal 4(%esp), %ecx
.cfi_def_cfa 1, 0
andl $-16, %esp
pushl -4(%ecx)
pushl %ebp
.cfi_escape 0x10,0x5,0x2,0x75,0
movl %esp, %ebp
pushl %ebx
pushl %ecx
.cfi_escape 0xf,0x3,0x75,0x78,0x6
.cfi_escape 0x10,0x3,0x2,0x75,0x7c
subl $28, %esp
call __x86.get_pc_thunk.bx
addl $_GLOBAL_OFFSET_TABLE_, %ebx
movl $1819042120, -24(%ebp)
movl $1461726319, -20(%ebp)
movl $561278053, -16(%ebp)
movb $0, -12(%ebp)
leal -24(%ebp), %eax
pushl %eax
call puts@PLT
addl $16, %esp
movl $0, %eax
leal -8(%ebp), %esp
popl %ecx
.cfi_restore 1
.cfi_def_cfa 1, 0
popl %ebx
.cfi_restore 3
popl %ebp
.cfi_restore 5
leal -4(%ecx), %esp
.cfi_def_cfa 4, 4
ret
.cfi_endproc
.LFE11:
.size main, .-main
.section .text.__x86.get_pc_thunk.bx,"axG",@progbits,__x86.get_pc_thunk.bx,comdat
.globl __x86.get_pc_thunk.bx
.hidden __x86.get_pc_thunk.bx
.type __x86.get_pc_thunk.bx, @function
__x86.get_pc_thunk.bx:
.LFB12:
.cfi_startproc
movl (%esp), %ebx
ret
.cfi_endproc
.LFE12:
.ident "GCC: (Debian 6.3.0-18+deb9u1) 6.3.0 20170516"
.section .note.GNU-stack,"",@progbits
.file "aufgabe-1.c"
.text
.globl main
.type main, @function
main:
.LFB11:
.cfi_startproc
subq $40, %rsp
.cfi_def_cfa_offset 48
movl $1819042120, (%rsp)
movabsq $2410670883059281007, %rax
movq %rax, 8(%rsp)
movb $0, 16(%rsp)
movq %rsp, %rdi
call puts@PLT
movl $0, %eax
addq $40, %rsp
.cfi_def_cfa_offset 8
ret
.cfi_endproc
.LFE11:
.size main, .-main
.ident "GCC: (Debian 6.3.0-18+deb9u1) 6.3.0 20170516"
.section .note.GNU-stack,"",@progbits
#include <stdio.h>
#include <stdint.h>
typedef struct
{
uint32_t a;
uint64_t b;
uint8_t c;
} three_numbers;
int main (void)
{
three_numbers xyz = { 1819042120, 2410670883059281007, 0 };
printf ("%s\n", &xyz);
return 0;
}
#include <stdio.h>
#include <stdint.h>
void output (uint16_t *a)
{
for (int i = 0; a[i]; i++)
printf (" %d", a[i]);
printf ("\n");
}
int main (void)
{
uint16_t prime_numbers[] = { 2, 3, 5, 7, 11, 13, 17, 0 };
uint16_t *p1 = prime_numbers;
output (p1);
p1++;
output (p1);
char *p2 = prime_numbers;
output (p2);
p2++;
output (p2);
return 0;
}
#include <stdio.h>
#define ANIMAL 0
#define WITH_WINGS 1
#define WITH_LEGS 2
typedef struct animal
{
int type;
char *name;
} animal;
typedef struct with_wings
{
int wings;
} with_wings;
typedef struct with_legs
{
int legs;
} with_legs;
int main (void)
{
animal *a[2];
animal duck;
a[0] = &duck;
a[0]->type = WITH_WINGS;
a[0]->name = "duck";
a[0]->wings = 2;
animal cow;
a[1] = &cow;
a[1]->type = WITH_LEGS;
a[1]->name = "cow";
a[1]->legs = 4;
for (int i = 0; i < 2; i++)
if (a[i]->type == WITH_LEGS)
printf ("A %s has %d legs.\n", a[i]->name,
((with_legs *) a[i])-> legs);
else if (a[i]->type == WITH_WINGS)
printf ("A %s has %d wings.\n", a[i]->name,
((with_wings *) a[i])-> wings);
else
printf ("Error in animal: %s\n", a[i]->name);
return 0;
}
#include <stdio.h>
#define ANIMAL 0
#define WITH_WINGS 1
#define WITH_LEGS 2
typedef struct animal
{
int type;
char *name;
} animal;
typedef struct with_wings
{
int wings;
} with_wings;
typedef struct with_legs
{
int legs;
} with_legs;
int main (void)
{
animal *a[2];
animal duck;
a[0] = &duck;
a[0]->type = WITH_WINGS;
a[0]->name = "duck";
((with_wings *) a[0])->wings = 2;
animal cow;
a[1] = &cow;
a[1]->type = WITH_LEGS;
a[1]->name = "cow";
((with_legs *) a[1])->legs = 4;
for (int i = 0; i < 2; i++)
if (a[i]->type == WITH_LEGS)
printf ("A %s has %d legs.\n", a[i]->name,
((with_legs *) a[i])-> legs);
else if (a[i]->type == WITH_WINGS)
printf ("A %s has %d wings.\n", a[i]->name,
((with_wings *) a[i])-> wings);
else
printf ("Error in animal: %s\n", a[i]->name);
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;
}
void sort (char **name)
{
for (int i = 1; name[i]; i++)
if (compare (name, i - 1, i) > 0)
{
char *temp = name[i - 1];
name[i - 1] = name[i];
name[i] = temp;
}
}
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;
}
#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;
}
void sort (char **name)
{
int sorted = 0;
while (name[sorted])
sorted++;
while (sorted > 0)
{
for (int i = 1; i < sorted; i++)
if (compare (name, i - 1, i) > 0)
{
char *temp = name[i - 1];
name[i - 1] = name[i];
name[i] = 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;
}
#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;
}
void sort (char **name)
{
int done = 0;
int sorted = 0;
while (name[sorted])
sorted++;
while (sorted > 0 && !done)
{
done = 1;
for (int i = 1; i < sorted; i++)
if (compare (name, i - 1, i) > 0)
{
done = 0;
char *temp = name[i - 1];
name[i - 1] = name[i];
name[i] = 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;
}
#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;
}
void sort (char **name)
{
int sorted = 0;
while (name[sorted])
sorted++;
while (sorted > 0)
{
int new_sorted = 0;
for (int i = 1; i < sorted; i++)
if (compare (name, i - 1, i) > 0)
{
new_sorted = i;
char *temp = name[i - 1];
name[i - 1] = name[i];
name[i] = temp;
}
sorted = new_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;
}
#include <gtk/gtk.h>
int main (int argc, char **argv)
{
gtk_init (&argc, &argv);
GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Hello");
gtk_widget_show (window);
gtk_main ();
return 0;
}
#include <gtk/gtk.h>
int main (int argc, char **argv)
{
gtk_init (&argc, &argv);
GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Hello");
g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
gtk_widget_show (window);
gtk_main ();
return 0;
}
#include <gtk/gtk.h>
int main (int argc, char **argv)
{
gtk_init (&argc, &argv);
GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Hello");
g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
GtkWidget *button = gtk_button_new_with_label ("Quit");
g_signal_connect (button, "clicked", G_CALLBACK (gtk_main_quit), NULL);
gtk_container_add (GTK_CONTAINER (window), button);
gtk_widget_show (button);
gtk_widget_show (window);
gtk_main ();
return 0;
}
#include <gtk/gtk.h>
int main (int argc, char **argv)
{
gtk_init (&argc, &argv);
GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Hello");
g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
GtkWidget *vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
gtk_container_add (GTK_CONTAINER (window), vbox);
GtkWidget *button = gtk_button_new_with_label ("Quit");
g_signal_connect (button, "clicked", G_CALLBACK (gtk_main_quit), NULL);
gtk_container_add (GTK_CONTAINER (vbox), button);
GtkWidget *drawing_area = gtk_drawing_area_new ();
gtk_container_add (GTK_CONTAINER (vbox), drawing_area);
gtk_widget_show (button);
gtk_widget_show (vbox);
gtk_widget_show (window);
gtk_main ();
return 0;
}
#include <gtk/gtk.h>
int main (int argc, char **argv)
{
gtk_init (&argc, &argv);
GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Hello");
g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
GtkWidget *vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
gtk_container_add (GTK_CONTAINER (window), vbox);
GtkWidget *button = gtk_button_new_with_label ("Quit");
g_signal_connect (button, "clicked", G_CALLBACK (gtk_main_quit), NULL);
gtk_container_add (GTK_CONTAINER (vbox), button);
GtkWidget *drawing_area = gtk_drawing_area_new ();
gtk_container_add (GTK_CONTAINER (vbox), drawing_area);
gtk_widget_show (drawing_area);
gtk_widget_show (button);
gtk_widget_show (vbox);
gtk_widget_show (window);
gtk_main ();
return 0;
}
#include <gtk/gtk.h>
gboolean draw (GtkWidget *widget, cairo_t *c, gpointer data)
{
GdkRGBA red = { 1.0, 0.0, 0.0, 0.8 };
GdkRGBA yellow = { 1.0, 1.0, 0.0, 0.6 };
GdkRGBA blue = { 0.0, 0.5, 1.0, 0.4 };
gdk_cairo_set_source_rgba (c, &red);
cairo_rectangle (c, 10, 10, 60, 40);
cairo_fill (c);
gdk_cairo_set_source_rgba (c, &yellow);
cairo_arc (c, 65, 50, 30, 0, 2 * G_PI);
cairo_fill (c);
gdk_cairo_set_source_rgba (c, &blue);
cairo_move_to (c, 10, 70);
cairo_line_to (c, 70, 70);
cairo_line_to (c, 40, 18);
cairo_close_path (c);
cairo_fill (c);
return FALSE; /* TRUE to stop other handlers from being invoked for the event.
FALSE to propagate the event further. */
}
int main (int argc, char **argv)
{
gtk_init (&argc, &argv);
GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Hello");
g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
GtkWidget *vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
gtk_container_add (GTK_CONTAINER (window), vbox);
GtkWidget *button = gtk_button_new_with_label ("Quit");
g_signal_connect (button, "clicked", G_CALLBACK (gtk_main_quit), NULL);
gtk_container_add (GTK_CONTAINER (vbox), button);
GtkWidget *drawing_area = gtk_drawing_area_new ();
gtk_container_add (GTK_CONTAINER (vbox), drawing_area);
g_signal_connect (drawing_area, "draw", G_CALLBACK (draw), NULL);
gtk_widget_set_size_request (drawing_area, 100, 100);
gtk_widget_show (drawing_area);
gtk_widget_show (button);
gtk_widget_show (vbox);
gtk_widget_show (window);
gtk_main ();
return 0;
}
#include <stdio.h>
#include <gtk/gtk.h>
gboolean draw (GtkWidget *widget, cairo_t *c, gpointer data)
{
GdkRGBA red = { 1.0, 0.0, 0.0, 0.8 };
GdkRGBA yellow = { 1.0, 1.0, 0.0, 0.6 };
GdkRGBA blue = { 0.0, 0.5, 1.0, 0.4 };
gdk_cairo_set_source_rgba (c, &red);
cairo_rectangle (c, 10, 10, 60, 40);
cairo_fill (c);
gdk_cairo_set_source_rgba (c, &yellow);
cairo_arc (c, 65, 50, 30, 0, 2 * G_PI);
cairo_fill (c);
gdk_cairo_set_source_rgba (c, &blue);
cairo_move_to (c, 10, 70);
cairo_line_to (c, 70, 70);
cairo_line_to (c, 40, 18);
cairo_close_path (c);
cairo_fill (c);
return FALSE; /* TRUE to stop other handlers from being invoked for the event.
FALSE to propagate the event further. */
}
gboolean button_press (GtkWidget *widget, GdkEventButton *e, gpointer data)
{
printf ("button %d pressed at (%lf, %lf)\n", e->button, e->x, e->y);
return FALSE;
}
gboolean key_press (GtkWidget *widget, GdkEventKey *e, gpointer data)
{
printf ("key '%c' (%d) pressed\n", e->keyval, e->keyval);
return FALSE;
}
int main (int argc, char **argv)
{
gtk_init (&argc, &argv);
GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Hello");
g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
GtkWidget *vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
gtk_container_add (GTK_CONTAINER (window), vbox);
GtkWidget *button = gtk_button_new_with_label ("Quit");
g_signal_connect (button, "clicked", G_CALLBACK (gtk_main_quit), NULL);
gtk_container_add (GTK_CONTAINER (vbox), button);
GtkWidget *drawing_area = gtk_drawing_area_new ();
gtk_container_add (GTK_CONTAINER (vbox), drawing_area);
g_signal_connect (drawing_area, "draw", G_CALLBACK (draw), NULL);
gtk_widget_set_size_request (drawing_area, 100, 100);
gtk_widget_add_events (drawing_area, GDK_BUTTON_PRESS_MASK);
g_signal_connect (drawing_area, "button_press_event", G_CALLBACK (button_press), NULL);
gtk_widget_add_events (window, GDK_KEY_PRESS_MASK);
g_signal_connect (window, "key_press_event", G_CALLBACK (key_press), NULL);
gtk_widget_show (drawing_area);
gtk_widget_show (button);
gtk_widget_show (vbox);
gtk_widget_show (window);
gtk_main ();
return 0;
}
#include <stdio.h>
#define DISKS 4
int n[3], tower[3][DISKS];
void display (void)
{
printf ("\n");
for (int i = 0; i < 3; i++)
{
printf ("tower %d:", i);
for (int j = 0; j < n[i]; j++)
printf (" %d", tower[i][j]);
printf ("\n");
}
}
int main (void)
{
n[0] = 0;
n[1] = 0;
n[2] = 0;
display ();
return 0;
}
#include <stdio.h>
#define DISKS 4
int n[3], tower[3][DISKS];
void display (void)
{
printf ("\n");
for (int i = 0; i < 3; i++)
{
printf ("tower %d:", i);
for (int j = 0; j < n[i]; j++)
printf (" %d", tower[i][j]);
printf ("\n");
}
}
int main (void)
{
n[0] = 4;
tower[0][0] = 4;
tower[0][1] = 3;
tower[0][2] = 2;
tower[0][3] = 1;
n[1] = 0;
n[2] = 0;
display ();
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment