Commit b0215851 authored by Paffenholz, Andreas's avatar Paffenholz, Andreas

kapitel 12, 13

parent c197b97b
/*************************************
* Beispielprogramm zur Vorlesung
* Einfuehrung in die Programmierung I
* Andreas Paffenholz
* TU Darmstadt, Wintersemester 2020/21
* (c) 2020-
*
* ein einfacher struct
*
* Uebersetzen mit
* gcc linked_list_01.c -o linked_list_01
* Aufruf mit
* ./linked_list_01
**************************************/
#include <stdio.h>
#include <stdlib.h>
struct elem {
int data;
struct elem * next;
};
int main() {
struct elem *e1 = (struct elem *)malloc(sizeof(struct elem));
struct elem *e2 = (struct elem *)malloc(sizeof(struct elem));
struct elem *e3 = (struct elem *)malloc(sizeof(struct elem));
e1->data = 1;
e2->data = 2;
e3->data = 3;
e1->next = e2;
e2->next = e3;
struct elem * e = e1;
for ( int i = 0; i < 3; ++i ) {
printf("Das %d. Element der Liste ist %d\n", i+1, e->data);
e = e->next;
}
free(e1);
free(e2);
free(e3);
return 0;
}
/*************************************
* Beispielprogramm zur Vorlesung
* Einfuehrung in die Programmierung I
* Andreas Paffenholz
* TU Darmstadt, Wintersemester 2020/21
* (c) 2020-
*
* ein einfacher struct
*
* Uebersetzen mit
* gcc linked_list_02.c -o linked_list_02
* Aufruf mit
* ./linked_list_02
**************************************/
#include <stdio.h>
#include <stdlib.h>
struct elem {
int data;
struct elem * next;
};
int main() {
struct elem *e1 = (struct elem *)malloc(sizeof(struct elem));
struct elem *e2 = (struct elem *)malloc(sizeof(struct elem));
struct elem *e3 = (struct elem *)malloc(sizeof(struct elem));
e1->data = 1;
e2->data = 2;
e3->data = 3;
e1->next = e2;
e2->next = e3;
e3->next = NULL;
struct elem * e = e1;
int i = 1;
while ( e != NULL ) {
printf("Das %d. Element der Liste ist %d\n", i++, e->data);
e = e->next;
}
free(e1);
free(e2);
free(e3);
return 0;
}
/*************************************
* Beispielprogramm zur Vorlesung
* Einfuehrung in die Programmierung I
* Andreas Paffenholz
* TU Darmstadt, Wintersemester 2020/21
* (c) 2020-
*
* ein einfacher struct
*
* Uebersetzen mit
* gcc linked_list_03.c -o linked_list_03
* Aufruf mit
* ./linked_list_03
**************************************/
#include <stdio.h>
#include <stdlib.h>
struct elem {
int data;
struct elem * next;
};
int main() {
struct elem *e = (struct elem *)malloc(sizeof(struct elem));
e->data = 1;
struct elem * head = e;
e->next = (struct elem *)malloc(sizeof(struct elem));
e = e->next;
e->data = 2;
e->next = (struct elem *)malloc(sizeof(struct elem));
e = e->next;
e->data = 3;
e->next = NULL;
e = head;
int i = 1;
while ( e != NULL ) {
printf("Das %d. Element der Liste ist %d\n", i++, e->data);
e = e->next;
}
e = head;
while ( e != NULL ) {
struct elem * t = e->next;
free(e);
e = t;
}
return 0;
}
/*************************************
* Beispielprogramm zur Vorlesung
* Einfuehrung in die Programmierung I
* Andreas Paffenholz
* TU Darmstadt, Wintersemester 2020/21
* (c) 2020-
*
* ein einfacher struct
*
* Uebersetzen mit
* gcc linked_list_04.c -o linked_list_04
* Aufruf mit
* ./linked_list_04
**************************************/
#include <stdio.h>
#include <stdlib.h>
struct elem {
int data;
struct elem * next;
};
struct elem * new_elem ( int data ) {
struct elem * e = (struct elem *)malloc(sizeof(struct elem));
e->data = data;
e->next = NULL;
return e;
}
void free_elem(struct elem * e ) {
free(e);
}
int main() {
struct elem * e = new_elem(1);
struct elem * head = e;
for ( int i = 2; i <= 12; ++i ) {
e->next = new_elem(i);
e = e->next;
}
e = head;
int i = 1;
while ( e != NULL ) {
printf("Das %d. Element der Liste ist %d\n", i++, e->data);
e = e->next;
}
e = head;
while ( e != NULL ) {
struct elem * t = e->next;
free_elem(e);
e = t;
}
return 0;
}
/*************************************
* Beispielprogramm zur Vorlesung
* Einfuehrung in die Programmierung I
* Andreas Paffenholz
* TU Darmstadt, Wintersemester 2020/21
* (c) 2020-
*
* Debugging mit printf
*
* Uebersetzen mit
* gcc debugging_printf_01.c -o debugging_printf_01
* Aufruf mit
* ./debugging_printf_01
**************************************/
#include <stdio.h>
void func_A(int p) {
printf("[func_A] wurde mit Parameter %d aufgerufen\n",p);
}
void func_B(int * p) {
printf("[func_B] wurde mit Zeiger %p auf Parameter %d aufgerufen\n",p,*p);
func_A(*p);
}
int main() {
int s = 0;
for ( int i = 0; i < 10; ++i ) {
s += i;
printf("[main] Iteration %d der Schleife, s ist %d\n",i,s);
func_B(&s);
}
return 0;
}
/*************************************
* Beispielprogramm zur Vorlesung
* Einfuehrung in die Programmierung I
* Andreas Paffenholz
* TU Darmstadt, Wintersemester 2020/21
* (c) 2020-
*
* Debugging mit printf
*
* Uebersetzen mit
* gcc debugging_printf_02.c -o debugging_printf_02
* Aufruf mit
* ./debugging_printf_02
**************************************/
#include <stdio.h>
void func_A(int p) {
#ifdef DEBUG_OUTPUT
printf("[func_A] wurde mit Parameter %d aufgerufen\n",p);
#endif
}
void func_B(int * p) {
#ifdef DEBUG_OUTPUT
printf("[func_B] wurde mit Zeiger %p auf Parameter %d aufgerufen\n",p,*p);
#endif
func_A(*p);
}
int main() {
int s = 0;
for ( int i = 0; i < 10; ++i ) {
s += i;
#ifdef DEBUG_OUTPUT
printf("[main] Iteration %d der Schleife, s ist %d\n",i,s);
#endif
func_B(&s);
}
return 0;
}
/*************************************
* Beispielprogramm zur Vorlesung
* Einfuehrung in die Programmierung I
* Andreas Paffenholz
* TU Darmstadt, Wintersemester 2020/21
* (c) 2020-
*
* groesster gemeinsamer Teiler ueber Teilem mit Rest
*
* Uebersetzen mit
* gcc ggt_rekursiv.c -o ggt_rekursiv
* Aufruf mit
* ./ggt_rekursiv 35 63
**************************************/
#include <stdio.h>
#include <stdlib.h>
long long gcd ( long long a, long long b) {
return b ? gcd(b,a%b) : a;
}
int main(int argc, char** argv) {
long long a = atoll(argv[1]);
long long b = atoll(argv[2]);
if ( a < b ) {
long long c = a;
a = b;
b = c;
}
long long g = gcd(a,b);
printf("Der groesste gemeinsame Teiler von %lld und %lld ist %lld\n",a,b,g);
return 0;
}
/*************************************
* Beispielprogramm zur Vorlesung
* Einfuehrung in die Programmierung I
* Andreas Paffenholz
* TU Darmstadt, Wintersemester 2020/21
* (c) 2020-
*
* Zufallszahlen
*
* Uebersetzen mit
* gcc tinyexpr_bsp_01.c tinyexpr.c -o tinyexpr_bsp_01
* Aufruf mit
* ./tinyexpr_bsp_01
**************************************/
#include <stdio.h>
#include "tinyexpr.h"
int main(int argc, char ** argv) {
const char *ausdruck = "(1+sqrt(5))/2";
double wert = te_interp(ausdruck, 0);
printf("%s = %f\n", ausdruck, wert);
return 0;
}
/*************************************
* Beispielprogramm zur Vorlesung
* Einfuehrung in die Programmierung I
* Andreas Paffenholz
* TU Darmstadt, Wintersemester 2020/21
* (c) 2020-
*
* Zufallszahlen
*
* Uebersetzen mit
* gcc tinyexpr_bsp_02.c tinyexpr.c -o tinyexpr_bsp_02
* Aufruf mit
* ./tinyexpr_bsp_02
**************************************/
#include <stdio.h>
#include <stdlib.h>
#include "tinyexpr.h"
int main(int argc, char** argv) {
if (argc < 2) {
printf("Aufruf: %s ausdruck x1 x2 ... \n",argv[0]);
return 0;
}
double x, y;
te_variable varnames[] = {{"x", &x}};
int fehler;
te_expr *ausdruck = te_compile(argv[1], varnames, 1, &fehler);
if ( !ausdruck ) {
printf("\t%s\n", argv[1]);
printf("\t%*s^\nFehler im Ausdruck an dieser Stelle\n", fehler-1, "");
return 1;
}
int count = 2;
printf("\n%5c | %s\n---------------\n",'x',argv[1]);
while ( count < argc ) {
x = atof(argv[count++]);
y = te_eval(ausdruck);
printf("%5.2f | %.2f\n", x,y);
}
te_free(ausdruck);
return 0;
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment