C-Kurs/(Pointer) Swapping/Musterlösung: Unterschied zwischen den Versionen
Erscheinungsbild
Mutax (Diskussion | Beiträge) K hat „Ckurs2009/(Pointer) Swapping/Musterlösung“ nach „Ckurs/(Pointer) Swapping/Musterlösung“ verschoben: Aufgaben sind Kurs übergreifend nutzbar |
PaulG (Diskussion | Beiträge) K verschob „Ckurs/(Pointer) Swapping/Musterlösung“ nach „C-Kurs/(Pointer) Swapping/Musterlösung“ |
||
| (3 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 6: | Zeile 6: | ||
void swap(int *x, int *y) { | void swap(int *x, int *y) { | ||
int | int temp= *x; | ||
*x = *y; | *x= *y; | ||
*y = | *y= temp; | ||
} | } | ||
| Zeile 35: | Zeile 35: | ||
void swap(int *x, int *y) { | void swap(int *x, int *y) { | ||
int | int temp= *x; | ||
*x = *y; | *x= *y; | ||
*y = | *y= temp; | ||
} | } | ||
void print_int_array(char* name, int* array, int size){ | void print_int_array(char* name, int* array, int size){ | ||
| Zeile 45: | Zeile 46: | ||
printf("%s:", name); | printf("%s:", name); | ||
for(i= 0; i<size; i++) | for(i= 0; i<size; i++){ | ||
printf(" %i", array[i]); | printf(" %i", array[i]); | ||
} | |||
printf("\n"); | printf("\n"); | ||
} | } | ||
int main(){ | int main(){ | ||
| Zeile 56: | Zeile 59: | ||
int b[]= {5, 6, 7, 8}; | int b[]= {5, 6, 7, 8}; | ||
int length= sizeof(a) / sizeof(int); | |||
print_int_array("b", b, | |||
print_int_array("a", a, length); | |||
print_int_array("b", b, length); | |||
int i; | int i; | ||
for(i=0; i< | for(i=0; i<length; i++){ | ||
swap(&a[i], &b[i]); | swap(&a[i], &b[i]); | ||
} | |||
print_int_array("a", a, | print_int_array("a", a, length); | ||
print_int_array("b", b, | print_int_array("b", b, length); | ||
return 0; | return 0; | ||
| Zeile 77: | Zeile 83: | ||
void swap(int **x, int **y) { | void swap(int **x, int **y) { | ||
int* | int* temp= *x; | ||
*x = *y; | *x= *y; | ||
*y = | *y= temp; | ||
} | } | ||
int main(){ | int main(){ | ||
int i= 1; | int i= 1; | ||
int j= 2; | int j= 2; | ||
int* | int* p1= &i; | ||
int* p2= &j; | |||
printf("------------------------------------------\n"); | |||
printf("before swap:\n"); | |||
printf("------------------------------------------\n"); | |||
printf(" | printf(" p1:\t%p\t p2:\t%p\n", p1, p2); | ||
printf("*p1:\t%10i\t*p2:\t%10i\n", *p1, *p2); | |||
printf(" i:\t%10i\t j:\t%10i\n", i, j); | |||
printf("i: % | swap(&p1, &p2); | ||
printf("------------------------------------------\n"); | |||
printf("after swap:\n"); | |||
printf("------------------------------------------\n"); | |||
printf(" p1:\t%p\t p2:\t%p\n", p1, p2); | |||
printf("*p1:\t%10i\t*p2:\t%10i\n", *p1, *p2); | |||
printf(" i:\t%10i\t j:\t%10i\n", i, j); | |||
return 0; | return 0; | ||
} | } | ||
4.Teilaufgabe | 4.Teilaufgabe | ||
| Zeile 112: | Zeile 125: | ||
void swap(int **x, int **y) { | void swap(int **x, int **y) { | ||
int* | int* temp= *x; | ||
*x = *y; | *x= *y; | ||
*y = | *y= temp; | ||
} | } | ||
void print_int_array(char* name, int* array, int size){ | void print_int_array(char* name, int* array, int size){ | ||
| Zeile 123: | Zeile 136: | ||
printf("%s:", name); | printf("%s:", name); | ||
for(i= 0; i<size; i++) | for(i= 0; i<size; i++){ | ||
printf(" %i", array[i]); | printf(" %i", array[i]); | ||
} | |||
printf("\n"); | printf("\n"); | ||
} | } | ||
int main(){ | int main(){ | ||
int a[]= {1, 2, 3, 4}; | int a[]= {1, 2, 3, 4}; | ||
int b[]= {5, 6, 7, 8}; | int b[]= {5, 6, 7, 8}; | ||
int length= sizeof(a) / sizeof(int); | |||
// a and b are constant | // a and b are constant | ||
// alternatively, you can use calloc | // alternatively, you can use calloc | ||
int * | int *front= &a[0]; | ||
int *back= &b[0]; | |||
int * | |||
print_int_array(" | print_int_array("front", front, length); | ||
print_int_array(" | print_int_array("back ", back, length); | ||
swap( | swap(&front, &back); | ||
print_int_array(" | print_int_array("front", front, length); | ||
print_int_array(" | print_int_array("back ", back, length); | ||
return 0; | return 0; | ||
| Zeile 161: | Zeile 175: | ||
void swap(void **x, void **y) { | void swap(void **x, void **y) { | ||
void * | void *temp = *x; | ||
*x = *y; | *x = *y; | ||
*y = | *y = temp; | ||
} | } | ||
void print_int_array(char* name, int* array, int size){ | void print_int_array(char* name, int* array, int size){ | ||
| Zeile 171: | Zeile 186: | ||
printf("%s:", name); | printf("%s:", name); | ||
for(i= 0; i<size; i++) | for(i= 0; i<size; i++){ | ||
printf(" %i", array[i]); | printf(" %i", array[i]); | ||
} | |||
printf("\n"); | printf("\n"); | ||
} | } | ||
void print_float_array(char* name, float* array, int size){ | void print_float_array(char* name, float* array, int size){ | ||
| Zeile 181: | Zeile 198: | ||
printf("%s:", name); | printf("%s:", name); | ||
for(i= 0; i<size; i++) | for(i= 0; i<size; i++){ | ||
printf(" %f", array[i]); | printf(" %f", array[i]); | ||
} | |||
printf("\n"); | printf("\n"); | ||
} | } | ||
int main(){ | int main(){ | ||
| Zeile 192: | Zeile 211: | ||
int j= 2; | int j= 2; | ||
int* | int* p1= &i; | ||
int* p2= &j; | |||
printf("i: %i j: %i\n", *p1, *p2); | |||
swap((void*)&p1, (void*)&p2); | |||
printf("i: %i j: %i\n", *p1, *p2); | |||
printf("i: %i j: %i\n", * | |||
int a[]= {1, 2, 3, 4}; | int a[]= {1, 2, 3, 4}; | ||
int b[]= {5, 6, 7, 8}; | int b[]= {5, 6, 7, 8}; | ||
int length= sizeof(a) / sizeof(int); | |||
// a and b are constant | // a and b are constant | ||
// alternatively, you can use calloc | // alternatively, you can use calloc | ||
p1= &a[0]; | |||
p2= &b[0]; | |||
print_int_array("a", p1, length); | |||
print_int_array("b", p2, length); | |||
swap((void**)&p1, (void**)&p2); | |||
print_int_array("a", p1, length); | |||
print_int_array("b", p2, length); | |||
float c[]= {1.0, 2.0, 3.0, 4.0}; | |||
float d[]= {5.0, 6.0, 7.0, 8.0}; | |||
length= sizeof(c) / sizeof(int); | |||
// | // c and d are constant | ||
// alternatively, you can use calloc | // alternatively, you can use calloc | ||
float * | float *p3= &c[0]; | ||
float *p4= &d[0]; | |||
float * | |||
print_float_array("x", | print_float_array("x", p3, length); | ||
print_float_array("y", | print_float_array("y", p4, length); | ||
swap((void**)& | swap((void**)&p3, (void**)&p4); | ||
print_float_array("x", | print_float_array("x", p3, length); | ||
print_float_array("y", | print_float_array("y", p4, length); | ||
return 0; | return 0; | ||
} | } | ||
Aktuelle Version vom 5. März 2013, 17:37 Uhr
1. Teilaufgabe
#include <stdio.h>
void swap(int *x, int *y) {
int temp= *x;
*x= *y;
*y= temp;
}
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 temp= *x;
*x= *y;
*y= temp;
}
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};
int length= sizeof(a) / sizeof(int);
print_int_array("a", a, length);
print_int_array("b", b, length);
int i;
for(i=0; i<length; i++){
swap(&a[i], &b[i]);
}
print_int_array("a", a, length);
print_int_array("b", b, length);
return 0;
}
3.Teilaufgabe
#include <stdio.h>
void swap(int **x, int **y) {
int* temp= *x;
*x= *y;
*y= temp;
}
int main(){
int i= 1;
int j= 2;
int* p1= &i;
int* p2= &j;
printf("------------------------------------------\n");
printf("before swap:\n");
printf("------------------------------------------\n");
printf(" p1:\t%p\t p2:\t%p\n", p1, p2);
printf("*p1:\t%10i\t*p2:\t%10i\n", *p1, *p2);
printf(" i:\t%10i\t j:\t%10i\n", i, j);
swap(&p1, &p2);
printf("------------------------------------------\n");
printf("after swap:\n");
printf("------------------------------------------\n");
printf(" p1:\t%p\t p2:\t%p\n", p1, p2);
printf("*p1:\t%10i\t*p2:\t%10i\n", *p1, *p2);
printf(" i:\t%10i\t j:\t%10i\n", i, j);
return 0;
}
4.Teilaufgabe
#include <stdio.h>
void swap(int **x, int **y) {
int* temp= *x;
*x= *y;
*y= temp;
}
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};
int length= sizeof(a) / sizeof(int);
// a and b are constant
// alternatively, you can use calloc
int *front= &a[0];
int *back= &b[0];
print_int_array("front", front, length);
print_int_array("back ", back, length);
swap(&front, &back);
print_int_array("front", front, length);
print_int_array("back ", back, length);
return 0;
}
5. Teilaufgabe
#include <stdio.h>
void swap(void **x, void **y) {
void *temp = *x;
*x = *y;
*y = temp;
}
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* p1= &i;
int* p2= &j;
printf("i: %i j: %i\n", *p1, *p2);
swap((void*)&p1, (void*)&p2);
printf("i: %i j: %i\n", *p1, *p2);
int a[]= {1, 2, 3, 4};
int b[]= {5, 6, 7, 8};
int length= sizeof(a) / sizeof(int);
// a and b are constant
// alternatively, you can use calloc
p1= &a[0];
p2= &b[0];
print_int_array("a", p1, length);
print_int_array("b", p2, length);
swap((void**)&p1, (void**)&p2);
print_int_array("a", p1, length);
print_int_array("b", p2, length);
float c[]= {1.0, 2.0, 3.0, 4.0};
float d[]= {5.0, 6.0, 7.0, 8.0};
length= sizeof(c) / sizeof(int);
// c and d are constant
// alternatively, you can use calloc
float *p3= &c[0];
float *p4= &d[0];
print_float_array("x", p3, length);
print_float_array("y", p4, length);
swap((void**)&p3, (void**)&p4);
print_float_array("x", p3, length);
print_float_array("y", p4, length);
return 0;
}