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

Übung 3.12.2015

parent 227e12a2
Branches
No related tags found
No related merge requests found
#include "Text-Grafik-Bibliothek-20x15.h"
#include <stdio.h>
#include "fifo-pg-3.h"
char screen[WIDTH][HEIGHT];
//Setze alle Einträge in display auf c
void clear (char c)
{
for (int i=0;i<WIDTH;i++)
{
for (int j=0;j<HEIGHT;j++)
{
screen[i][j]=c;
}
}
}
//setze display [x][y] auf c
void putPoint (int x, int y, char c)
{
screen[x][y]=c;
}
//Gebe display[x][y] zurück
char getPoint (int x, int y)
{
char c=screen[x][y];
return c;
}
//Fülle eine Fläche in display, die aus den Zeichen o besteht mit den Zeichen c aus
void fill (int x, int y, char c, char o)
{
push_pair (x, y);
while (!fifo_empty ())
{
pair p = pop_pair ();
if (getPoint (p.x, p.y) == o)
{
putPoint (p.x, p.y, c++);
push_pair (p.x + 1, p.y);
push_pair (p.x - 1, p.y);
push_pair (p.x, p.y + 1);
push_pair (p.x, p.y - 1);
}
}
}
//Gib display aus
void display (void)
{
for (int i=0;i<HEIGHT;i++)
{
for (int j=0;j<WIDTH;j++)
{
printf("%c",screen[j][i]);
}
printf("\n");
}
}
#include <stdio.h>
#include <stdlib.h>
#define FIFO_SIZE 42
typedef struct
{
int x, y;
}
pair;
pair fifo[FIFO_SIZE];
int fifo_read_pointer = 0;
int fifo_write_pointer = 0;
void fatal_error (char *msg)
{
fprintf (stderr, "%s\n", msg);
exit (1);
}
void push_pair (int x, int y)
{
if (fifo_write_pointer < 0 || fifo_write_pointer >= FIFO_SIZE)
fatal_error ("push_pair: fifo inconsistence");
else
{
printf ("pushing (%d,%d)\n", x, y);
fifo[fifo_write_pointer].x = x;
fifo[fifo_write_pointer].y = y;
fifo_write_pointer++;
if (fifo_write_pointer >= FIFO_SIZE)
fifo_write_pointer = 0;
if (fifo_write_pointer == fifo_read_pointer)
fatal_error ("fifo overflow");
}
}
pair pop_pair (void)
{
pair nix = { 0, 0 };
if (fifo_read_pointer < 0 || fifo_read_pointer >= FIFO_SIZE)
{
fatal_error ("pop_pair: fifo inconsistence");
return nix;
}
else if (fifo_read_pointer == fifo_write_pointer)
{
fatal_error ("fifo underflow");
return nix;
}
else
{
printf ("popping (%d,%d)\n", fifo[fifo_read_pointer].x, fifo[fifo_read_pointer].y);
pair value = fifo[fifo_read_pointer];
fifo[fifo_read_pointer].x = 0;
fifo[fifo_read_pointer].y = 0;
fifo_read_pointer++;
if (fifo_read_pointer >= FIFO_SIZE)
fifo_read_pointer = 0;
return value;
}
}
void dump_fifo (void)
{
int i;
printf ("dump_fifo:");
for (i = 0; i < FIFO_SIZE; i++)
printf (" (%d,%d)", fifo[i].x, fifo[i].y);
printf ("\n");
}
int main (void)
{
dump_fifo ();
push_pair (3, 0);
dump_fifo ();
push_pair (7, 2);
dump_fifo ();
push_pair (23, 23);
dump_fifo ();
pop_pair ();
dump_fifo ();
pop_pair ();
dump_fifo ();
push_pair (42, 137);
dump_fifo ();
pop_pair ();
dump_fifo ();
pop_pair ();
dump_fifo ();
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#define FIFO_SIZE 42
typedef struct
{
int x, y;
}
pair;
pair fifo[FIFO_SIZE];
int fifo_read_pointer = 0;
int fifo_write_pointer = 0;
void fatal_error (char *msg)
{
fprintf (stderr, "%s\n", msg);
exit (1);
}
void push_pair (int x, int y)
{
if (fifo_write_pointer < 0 || fifo_write_pointer >= FIFO_SIZE)
fatal_error ("push_pair: fifo inconsistence");
else
{
printf ("pushing (%d,%d)\n", x, y);
fifo[fifo_write_pointer].x = x;
fifo[fifo_write_pointer].y = y;
fifo_write_pointer++;
if (fifo_write_pointer >= FIFO_SIZE)
fifo_write_pointer = 0;
if (fifo_write_pointer == fifo_read_pointer)
fatal_error ("fifo overflow");
}
}
pair pop_pair (void)
{
pair nix = { 0, 0 };
if (fifo_read_pointer < 0 || fifo_read_pointer >= FIFO_SIZE)
{
fatal_error ("pop_pair: fifo inconsistence");
return nix;
}
else if (fifo_read_pointer == fifo_write_pointer)
{
fatal_error ("fifo underflow");
return nix;
}
else
{
printf ("popping (%d,%d)\n", fifo[fifo_read_pointer].x, fifo[fifo_read_pointer].y);
pair value = fifo[fifo_read_pointer];
fifo[fifo_read_pointer].x = 0;
fifo[fifo_read_pointer].y = 0;
fifo_read_pointer++;
if (fifo_read_pointer >= FIFO_SIZE)
fifo_read_pointer = 0;
return value;
}
}
void dump_fifo (void)
{
int i;
printf ("dump_fifo:");
for (i = fifo_read_pointer; i < fifo_write_pointer; i++)
printf (" (%d,%d)", fifo[i].x, fifo[i].y);
printf ("\n");
}
int main (void)
{
dump_fifo ();
push_pair (3, 0);
dump_fifo ();
push_pair (7, 2);
dump_fifo ();
push_pair (23, 23);
dump_fifo ();
pop_pair ();
dump_fifo ();
pop_pair ();
dump_fifo ();
push_pair (42, 137);
dump_fifo ();
pop_pair ();
dump_fifo ();
pop_pair ();
dump_fifo ();
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include "fifo-pg-3.h"
pair fifo[FIFO_SIZE];
int fifo_read_pointer = 0;
int fifo_write_pointer = 0;
void fatal_error (char *msg)
{
fprintf (stderr, "%s\n", msg);
exit (1);
}
int fifo_empty (void)
{
return fifo_read_pointer == fifo_write_pointer;
}
void push_pair (int x, int y)
{
if (fifo_write_pointer < 0 || fifo_write_pointer >= FIFO_SIZE)
fatal_error ("push_pair: fifo inconsistence");
else
{
printf ("pushing (%d,%d)\n", x, y);
fifo[fifo_write_pointer].x = x;
fifo[fifo_write_pointer].y = y;
fifo_write_pointer++;
if (fifo_write_pointer >= FIFO_SIZE)
fifo_write_pointer = 0;
if (fifo_write_pointer == fifo_read_pointer)
fatal_error ("fifo overflow");
}
}
pair pop_pair (void)
{
pair nix = { 0, 0 };
if (fifo_read_pointer < 0 || fifo_read_pointer >= FIFO_SIZE)
{
fatal_error ("pop_pair: fifo inconsistence");
return nix;
}
else if (fifo_read_pointer == fifo_write_pointer)
{
fatal_error ("fifo underflow");
return nix;
}
else
{
printf ("popping (%d,%d)\n", fifo[fifo_read_pointer].x, fifo[fifo_read_pointer].y);
pair value = fifo[fifo_read_pointer];
fifo[fifo_read_pointer].x = 0;
fifo[fifo_read_pointer].y = 0;
fifo_read_pointer++;
if (fifo_read_pointer >= FIFO_SIZE)
fifo_read_pointer = 0;
return value;
}
}
void dump_fifo (void)
{
int i;
printf ("dump_fifo:");
for (i = fifo_read_pointer; i < fifo_write_pointer; i++)
printf (" (%d,%d)", fifo[i].x, fifo[i].y);
printf ("\n");
}
#include <stdio.h>
#include <stdlib.h>
#define FIFO_SIZE 42
typedef struct
{
int x, y;
}
pair;
extern int fifo_empty (void);
extern void push_pair (int x, int y);
extern pair pop_pair (void);
extern void dump_fifo (void);
#include <stdio.h>
#include <stdlib.h>
#define FIFO_SIZE 42
typedef struct
{
int x, y;
}
pair;
pair fifo[FIFO_SIZE];
int fifo_read_pointer = 0;
int fifo_write_pointer = 0;
void fatal_error (char *msg)
{
fprintf (stderr, "%s\n", msg);
exit (1);
}
void push_pair (int x, int y)
{
if (fifo_write_pointer < 0 || fifo_write_pointer >= FIFO_SIZE)
fatal_error ("push_pair: fifo inconsistence");
else
{
printf ("pushing (%d,%d)\n", x, y);
fifo[fifo_write_pointer].x = x;
fifo[fifo_write_pointer].y = y;
fifo_write_pointer++;
if (fifo_write_pointer >= FIFO_SIZE)
fifo_write_pointer = 0;
if (fifo_write_pointer == fifo_read_pointer)
fatal_error ("fifo overflow");
}
}
pair pop_pair (void)
{
pair nix;
if (fifo_read_pointer < 0 || fifo_read_pointer >= FIFO_SIZE)
{
fatal_error ("pop_pair: fifo inconsistence");
return nix;
}
else if (fifo_read_pointer == fifo_write_pointer)
{
fatal_error ("fifo underflow");
return nix;
}
else
{
printf ("popping (%d,%d)\n", fifo[fifo_read_pointer].x, fifo[fifo_read_pointer].y);
pair value = fifo[fifo_read_pointer];
fifo[fifo_read_pointer].x = 0;
fifo[fifo_read_pointer].y = 0;
fifo_read_pointer++;
if (fifo_read_pointer >= FIFO_SIZE)
fifo_read_pointer = 0;
return value;
}
}
void dump_stack (void)
{
int i;
printf ("dump_stack:");
for (i = 0; i < FIFO_SIZE; i++)
printf (" (%d,%d)", fifo[i].x, fifo[i].y);
printf ("\n");
}
int main (void)
{
dump_stack ();
push_pair (3, 0);
dump_stack ();
push_pair (7, 2);
dump_stack ();
push_pair (23, 23);
dump_stack ();
pop_pair ();
dump_stack ();
pop_pair ();
dump_stack ();
push_pair (42, 137);
dump_stack ();
pop_pair ();
dump_stack ();
pop_pair ();
dump_stack ();
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment