0 Daumen
428 Aufrufe

Aufgabe:

* Schreiben Sie eine void-Funktion sort3, der drei Zahlen x, y, z ∈ R übergeben werden
und die diese Zahlen fallend sortiert ausgibt, d.h. zuerst das Maximum max{x, y, z} und zuletzt das
Minimum min{x, y, z}. Schreiben Sie ferner ein aufrufendes Hauptprogramm in dem die Zahlen x, y, z
eingelesen und die Funktion aufgerufen werden.


Problem/Ansatz:

#include <stdio.h>
#include <math.h>

int main () {
  double x = 0, y = 0, z = 0, tmp = 0;

  printf("x = ");
  scanf("%lf", &x);
  printf("y = ");
  scanf("%lf", &y);
  printf("z = ");
  scanf("%lf", &z);
 
 
  if(x < y){
        tmp = x;
        x = y;
        y = tmp;
        tmp = 0;
    }

    if(y < z){
        tmp = y;
        y = z;
        z = tmp;
        tmp = 0;
    }
   
    if(x < y){
        tmp = x;
        x = y;
        y = tmp;
        tmp = 0;
    }

    printf("%f\n%f\n%f",x,y,z);

    return 0;
}

Hätte das Jetzt als Lösung aber wie man sieht habe ich keine Void Funktion verwendet. Bitte um Lösungsvorschläge

Avatar von

Dann mach doch einfach eine void-Funktion daraus:

void sort3(double x, double y, double z)
{
// sortieren

// ausgeben
}

Anschließend kannst du deine main Funktion umbauen:

int main()
{
double x = 0, y = 0, z = 0;

printf("x = ");
scanf("%lf", &x);
printf("y = ");
scanf("%lf", &y);
printf("z = ");
scanf("%lf", &z);

sort3(x,y,z);

return 0;
}

Hat funktioniert danke dir, einfacher als ich erwartet habe :)

1 Antwort

0 Daumen
#include <stdio.h>

void sort3(double x, double y, double z) {
  if (x < y)
      if (y < z)
          printf("%f\n%f\n%f\n",z,y,x);
      else if (x < z)
          printf("%f\n%f\n%f\n",y,z,x);
      else
          printf("%f\n%f\n%f\n",y,x,z);
  else if (x < z)
      printf("%f\n%f\n%f\n",z,x,y);
  else if (y < z)
      printf("%f\n%f\n%f\n",x,z,y);
  else
      printf("%f\n%f\n%f\n",x,y,z);
}

int main() {
  double x, y, z;
 
  scanf("%lf %lf %lf", &x, &y, &z);

  sort3(x,y,z);   
}

Die Variante von sort3 benötigt durchschnittlich 2⅔ und höchstens 3 Vergleiche und keine Zuweisungen, während deine immer 3 Vergleiche und zwischen 4 und 12 Zuweisungen benötigt.

Avatar von 5,6 k

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community