C-Kurs/(Pointer) Swapping/Musterlösung: Unterschied zwischen den Versionen
< C-Kurs | (Pointer) Swapping
Mutax (Diskussion | Beiträge) K (hat „Ckurs2009/(Pointer) Swapping/Musterlösung“ nach „Ckurs/(Pointer) Swapping/Musterlösung“ verschoben: Aufgaben sind Kurs übergreifend nutzbar) |
|
(kein Unterschied)
|
Version vom 25. Juli 2010, 11:49 Uhr
1. Teilaufgabe
#include <stdio.h> void swap(int *x, int *y) { int t = *x; *x = *y; *y = t; } int main(){ int i= 1; int j= 2; printf("i: %i j: %i\n", i, j); swap(&i, &j); printf("i: %i j: %i\n", i, j); return 0; }
2. Teilaufgabe
#include <stdio.h> void swap(int *x, int *y) { int t = *x; *x = *y; *y = t; } void print_int_array(char* name, int* array, int size){ int i; printf("%s:", name); for(i= 0; i<size; i++) printf(" %i", array[i]); printf("\n"); } int main(){ int a[]= {1, 2, 3, 4}; int b[]= {5, 6, 7, 8}; print_int_array("a", a, sizeof(a)/sizeof(int)); print_int_array("b", b, sizeof(b)/sizeof(int)); int i; for(i=0; i<sizeof(a)/sizeof(int); i++) swap(&a[i], &b[i]); print_int_array("a", a, sizeof(a)/sizeof(int)); print_int_array("b", b, sizeof(b)/sizeof(int)); return 0; }
3.Teilaufgabe
#include <stdio.h> void swap(int **x, int **y) { int* t = *x; *x = *y; *y = t; } int main(){ int i= 1; int j= 2; int* pi; pi= &i; int* pj; pj= &j; printf("i: %i j: %i\n", *pi, *pj); swap(&pi, &pj); printf("i: %i j: %i\n", *pi, *pj); return 0; }
4.Teilaufgabe
#include <stdio.h> void swap(int **x, int **y) { int* t = *x; *x = *y; *y = t; } void print_int_array(char* name, int* array, int size){ int i; printf("%s:", name); for(i= 0; i<size; i++) printf(" %i", array[i]); printf("\n"); } int main(){ int a[]= {1, 2, 3, 4}; int b[]= {5, 6, 7, 8}; // a and b are constant // alternatively, you can use calloc int *pa; pa = &a[0]; int *pb; pb = &b[0]; print_int_array("a", pa, sizeof(a)/sizeof(int)); print_int_array("b", pb, sizeof(b)/sizeof(int)); swap((void*)&pa, (void*)&pb); print_int_array("a", pa, sizeof(a)/sizeof(int)); print_int_array("b", pb, sizeof(b)/sizeof(int)); return 0; }
5. Teilaufgabe
#include <stdio.h> void swap(void **x, void **y) { void *t = *x; *x = *y; *y = t; } void print_int_array(char* name, int* array, int size){ int i; printf("%s:", name); for(i= 0; i<size; i++) printf(" %i", array[i]); printf("\n"); } void print_float_array(char* name, float* array, int size){ int i; printf("%s:", name); for(i= 0; i<size; i++) printf(" %f", array[i]); printf("\n"); } int main(){ int i= 1; int j= 2; int* pi; pi= &i; int* pj; pj= &j; printf("i: %i j: %i\n", *pi, *pj); swap((void*)&pi, (void*)&pj); printf("i: %i j: %i\n", *pi, *pj); int a[]= {1, 2, 3, 4}; int b[]= {5, 6, 7, 8}; // a and b are constant // alternatively, you can use calloc int *pa; pa = &a[0]; int *pb; pb = &b[0]; print_int_array("a", pa, sizeof(a)/sizeof(int)); print_int_array("b", pb, sizeof(b)/sizeof(int)); swap((void**)&pa, (void**)&pb); print_int_array("a", pa, sizeof(a)/sizeof(int)); print_int_array("b", pb, sizeof(b)/sizeof(int)); float x[]= {1.0, 2.0, 3.0, 4.0}; float y[]= {5.0, 6.0, 7.0, 8.0}; // x and y are constant // alternatively, you can use calloc float *px; px = &x[0]; float *py; py = &y[0]; print_float_array("x", px, sizeof(x)/sizeof(int)); print_float_array("y", py, sizeof(y)/sizeof(int)); swap((void**)&px, (void**)&py); print_float_array("x", px, sizeof(x)/sizeof(int)); print_float_array("y", py, sizeof(y)/sizeof(int)); return 0; }