Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

C-Kurs/(Pointer) Swapping/Musterlösung: Unterschied zwischen den Versionen

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<4; 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;
}