Advertisement
Guest User

Untitled

a guest
Jun 25th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.49 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <string.h>
  5. #include "main.h"
  6.  
  7. int uebung5(){
  8. int menu;
  9. int z1, z2, i;
  10. int zeilen, j;
  11. float f1, f2;
  12. float *ptr = NULL;
  13. int *zeile1 = NULL;
  14. int *zeile2 = NULL;
  15.  
  16. printf("1. Austausch von Daten: swap\n");
  17. printf("2. Funktionen fuer Felder\n");
  18. printf("3. Sortieren eines Feldes (missing)\n");
  19. printf("4. Pascalsches Zahlendreieck\n");
  20. printf("5. Aufgabe: Stack (missing)\n");
  21.  
  22. scanf_s("%i", &menu);
  23. switch(menu){
  24. case 1:
  25. printf("1. swapInt\n");
  26. printf("2. swapFloat\n");
  27. scanf_s("%i", &menu);
  28. if(menu == 1){
  29. printf("Gib bitte 2 int Zahlen ein:\n");
  30. scanf_s("%i %i", &z1, &z2);
  31. printf("Zahl 1: %i\t Zahl 2: %i\n", z1, z2);
  32. swapInt(&z1, &z2);
  33. printf("Zahl 1: %i\t Zahl 2: %i\n", z1, z2);
  34. }
  35. else if(menu == 2){
  36. printf("Gib bitte 2 float Zahlen ein:\n");
  37. scanf_s("%f %f", &f1, &f2);
  38. printf("Zahl 1: %f\t Zahl 2: %f\n", f1, f2);
  39. swapFloat(&f1, &f2);
  40. printf("Zahl 1: %f\t Zahl 2: %f\n", f1, f2);
  41. }
  42. else
  43. return 0;
  44. break;
  45. case 2:
  46. printf("- Funktionen zum Einlesen, Ausgeben\n");
  47. printf("- Bubble Sort. Verwenden Sie dabei Aufgabe 1.1\n");
  48. printf("- Bestimmen Sie das Maximum aller Zahlen\n");
  49. printf("- Geben Sie eine Variante von Bubble – Sort an, die das Sortierkriterium als Funktion erhält.\n");
  50. printf("Wie gross soll das array sein?\n");
  51. scanf_s("%i", &i);
  52. ptr = malloc(i * sizeof(float));
  53. readarray(ptr, i);
  54. printf("Array werte vorher:\n");
  55. writearray(ptr, i);
  56. bubblesort(ptr, i, 1);
  57. printf("Array werte nachher (Sort1):\n");
  58. writearray(ptr, i);
  59. bubblesort(ptr, i, 2);
  60. printf("Array werte nachher (Sort2):\n");
  61. writearray(ptr, i);
  62. printf("Array Maximum: %f \n", arraymaximum(ptr, i));
  63. break;
  64. case 4:
  65. printf("Wieviele Zeilen sollen angegeben werden?\n");
  66. scanf_s("%i", &zeilen);
  67. zeile1 = malloc(zeilen * sizeof(int));
  68. zeile2 = malloc(zeilen * sizeof(int));
  69. for(i = 1; i <= zeilen; i++){
  70. for(j = 1; j <= i; j++){
  71. if(j == 1 || j == i)
  72. zeile2[j] = 1;
  73. else
  74. zeile2[j] = zeile1[j-1] + zeile1[j];
  75. }
  76. for(j = 1; j <= (zeilen - i) / 2; j++)
  77. printf(" ");
  78. if((zeilen - i) % 2)
  79. printf(" ");
  80. for(j = 1; j <= i; j++)
  81. printf("%6.4i", zeile2[j]);
  82. printf("\n");
  83. memcpy(zeile1, zeile2, zeilen * sizeof(int));
  84. }
  85. free(zeile1);
  86. free(zeile2);
  87. break;
  88. default:
  89. return 0;
  90. }
  91. return 1;
  92. }
  93.  
  94. void bubblesort(float feld[], int anzahl, int sort){
  95. int i, j;
  96. for(i = 0; i < anzahl; i++) {
  97. for(j = 0; j < (anzahl - 1); j++) {
  98. if(feld[j] > feld[j + 1] && sort == 1) {
  99. swapFloat(&feld[j], &feld[j + 1]);
  100. }
  101. if(feld[j] < feld[j + 1] && sort == 2) {
  102. swapFloat(&feld[j], &feld[j + 1]);
  103. }
  104. }
  105. }
  106. return;
  107. }
  108.  
  109. void readarray(float feld[], int anzahl){
  110. int i;
  111. printf("Bitte %d Gleitpunktzahlen eingeben\n", anzahl);
  112. for(i = 0; i < anzahl; i++){
  113. printf("Zahl nr %5d = ", i);
  114. scanf_s("%f", &feld[i]);
  115. }
  116. return;
  117. }
  118.  
  119. void writearray(float feld[], int anzahl){
  120. int i;
  121. for(i = 0; i < anzahl; i++)
  122. printf("feld[%d] = %3f\n", i, feld[i]);
  123. return;
  124. }
  125.  
  126. float arraymaximum(float feld[], int anzahl){
  127. float max = 0;
  128. int i;
  129. for(i = 0; i < anzahl; i++){
  130. if(feld[i] > max)
  131. max = feld[i];
  132. }
  133. return max;
  134. }
  135.  
  136. void swapInt(int *z1, int *z2){
  137. int tmp;
  138. tmp = *z1;
  139. *z1 = *z2;
  140. *z2 = tmp;
  141. return;
  142. }
  143. void swapFloat(float *z1, float *z2){
  144. float tmp;
  145. tmp = *z1;
  146. *z1 = *z2;
  147. *z2 = tmp;
  148. return;
  149. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement