C-Kurs/(Pointer) Swapping/Musterlösung: Unterschied zwischen den Versionen
Erscheinungsbild
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| Zeile 23: | Zeile 23: | ||
printf("i: %i j: %i\n", i, j); | printf("i: %i j: %i\n", i, j); | ||
return 0; | |||
} | } | ||
| Zeile 58: | Zeile 60: | ||
int i; | int i; | ||
for(i=0; i< | for(i=0; i<sizeof(a)/sizeof(int); i++) | ||
swap(&a[i], &b[i]); | swap(&a[i], &b[i]); | ||
print_int_array("a", a, sizeof(a)/sizeof(int)); | print_int_array("a", a, sizeof(a)/sizeof(int)); | ||
print_int_array("b", b, sizeof(b)/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; | |||
} | } | ||
Version vom 24. September 2009, 09:18 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;
}