Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #include <string.h>
- #include "main.h"
- int uebung5(){
- int menu;
- int z1, z2, i;
- int zeilen, j;
- float f1, f2;
- float *ptr = NULL;
- int *zeile1 = NULL;
- int *zeile2 = NULL;
- printf("1. Austausch von Daten: swap\n");
- printf("2. Funktionen fuer Felder\n");
- printf("3. Sortieren eines Feldes (missing)\n");
- printf("4. Pascalsches Zahlendreieck\n");
- printf("5. Aufgabe: Stack (missing)\n");
- scanf_s("%i", &menu);
- switch(menu){
- case 1:
- printf("1. swapInt\n");
- printf("2. swapFloat\n");
- scanf_s("%i", &menu);
- if(menu == 1){
- printf("Gib bitte 2 int Zahlen ein:\n");
- scanf_s("%i %i", &z1, &z2);
- printf("Zahl 1: %i\t Zahl 2: %i\n", z1, z2);
- swapInt(&z1, &z2);
- printf("Zahl 1: %i\t Zahl 2: %i\n", z1, z2);
- }
- else if(menu == 2){
- printf("Gib bitte 2 float Zahlen ein:\n");
- scanf_s("%f %f", &f1, &f2);
- printf("Zahl 1: %f\t Zahl 2: %f\n", f1, f2);
- swapFloat(&f1, &f2);
- printf("Zahl 1: %f\t Zahl 2: %f\n", f1, f2);
- }
- else
- return 0;
- break;
- case 2:
- printf("- Funktionen zum Einlesen, Ausgeben\n");
- printf("- Bubble Sort. Verwenden Sie dabei Aufgabe 1.1\n");
- printf("- Bestimmen Sie das Maximum aller Zahlen\n");
- printf("- Geben Sie eine Variante von Bubble – Sort an, die das Sortierkriterium als Funktion erhält.\n");
- printf("Wie gross soll das array sein?\n");
- scanf_s("%i", &i);
- ptr = malloc(i * sizeof(float));
- readarray(ptr, i);
- printf("Array werte vorher:\n");
- writearray(ptr, i);
- bubblesort(ptr, i, 1);
- printf("Array werte nachher (Sort1):\n");
- writearray(ptr, i);
- bubblesort(ptr, i, 2);
- printf("Array werte nachher (Sort2):\n");
- writearray(ptr, i);
- printf("Array Maximum: %f \n", arraymaximum(ptr, i));
- break;
- case 4:
- printf("Wieviele Zeilen sollen angegeben werden?\n");
- scanf_s("%i", &zeilen);
- zeile1 = malloc(zeilen * sizeof(int));
- zeile2 = malloc(zeilen * sizeof(int));
- for(i = 1; i <= zeilen; i++){
- for(j = 1; j <= i; j++){
- if(j == 1 || j == i)
- zeile2[j] = 1;
- else
- zeile2[j] = zeile1[j-1] + zeile1[j];
- }
- for(j = 1; j <= (zeilen - i) / 2; j++)
- printf(" ");
- if((zeilen - i) % 2)
- printf(" ");
- for(j = 1; j <= i; j++)
- printf("%6.4i", zeile2[j]);
- printf("\n");
- memcpy(zeile1, zeile2, zeilen * sizeof(int));
- }
- free(zeile1);
- free(zeile2);
- break;
- default:
- return 0;
- }
- return 1;
- }
- void bubblesort(float feld[], int anzahl, int sort){
- int i, j;
- for(i = 0; i < anzahl; i++) {
- for(j = 0; j < (anzahl - 1); j++) {
- if(feld[j] > feld[j + 1] && sort == 1) {
- swapFloat(&feld[j], &feld[j + 1]);
- }
- if(feld[j] < feld[j + 1] && sort == 2) {
- swapFloat(&feld[j], &feld[j + 1]);
- }
- }
- }
- return;
- }
- void readarray(float feld[], int anzahl){
- int i;
- printf("Bitte %d Gleitpunktzahlen eingeben\n", anzahl);
- for(i = 0; i < anzahl; i++){
- printf("Zahl nr %5d = ", i);
- scanf_s("%f", &feld[i]);
- }
- return;
- }
- void writearray(float feld[], int anzahl){
- int i;
- for(i = 0; i < anzahl; i++)
- printf("feld[%d] = %3f\n", i, feld[i]);
- return;
- }
- float arraymaximum(float feld[], int anzahl){
- float max = 0;
- int i;
- for(i = 0; i < anzahl; i++){
- if(feld[i] > max)
- max = feld[i];
- }
- return max;
- }
- void swapInt(int *z1, int *z2){
- int tmp;
- tmp = *z1;
- *z1 = *z2;
- *z2 = tmp;
- return;
- }
- void swapFloat(float *z1, float *z2){
- float tmp;
- tmp = *z1;
- *z1 = *z2;
- *z2 = tmp;
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement