You are not logged in.

  • Login

1

Friday, January 22nd 2010, 11:15pm

Zahlen nach größe sortieren

Hallo @ all

Unsere Lehrerin hat uns folgende Aufgabe gestellt:
In ein Programm sollen 3 Zahlen einlesen und diese per Funktion der größe nach Sortieren werden. Arrays dürfen dabei NICHT benutzt werden. Es soll also mit Zeigern gearbeitet werden. Bis jetzt sieht mein Quelltext so aus:

C/C++ Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <stdio.h>
 
void tausche(int *piZ1, int *piZ2)
{
int iTemp;
 
iTemp = *piZ1;
*piZ1 = *piZ2;
*piZ2 = iTemp;
}
 
 
void sort(int *piZ1, int *piZ2, int *piZ3) //Die Adressen der Variablen aus der Main werden gespeichert
{
 
}
 
 
int main(void)
{
    int iZahl1, iZahl2, iZahl3, il;
 
        il=0; //Schleigfe läuft nur einmal wenn il=0
        printf("1. Zahl eingeben: ");
        scanf("%d",&iZahl1);
        fflush(stdin);
        printf("2. Zahl eingeben: ");
        scanf("%d",&iZahl2);
        fflush(stdin);
        printf("3. Zahl eingeben: ");
        scanf("%d",&iZahl3);
        fflush(stdin);
 
    sort(&iZahl1, &iZahl2, &iZahl3); //Es werden die Adressen von den Variablen an sort übergeben
 
    printf("\n\nDie kleinste Zahl ist:   %d", iZahl1);
    printf("\nDie mittlere Zahl ist:   %d", iZahl2);
    printf("\nDie gr\x94\xE1te Zahl ist:     %d", iZahl3);
    getchar();
}


Wie kann ich am einfachsten abfragen welche Zahl am kleinsten bzw. am größten ist? Mit IF-Befehlen wäre es glaube ich sehr umständlich und unübersichtlich, da es meiner Meinung nach sehr viele IF-Befehle sein würden. Nochmal: Es dürfen KEINE Arrays benutzt werden. Gibt es noch einen anderen Weg als über IF? Und wenn ich es mit IF machen muss - ist es einfacher jede Bedingung einzeln zu verschachteln oder mit den Operatoren && bzw. || zu arbeiten?

Hoffe auf eure Hilfe. Viele Grüße
Crosaider

This post has been edited 1 times, last edit by "Crosaider" (Jan 22nd 2010, 11:24pm)


2

Saturday, January 23rd 2010, 12:15pm

Das einfachste, wenn du dir die ganzen If-Abfragen sparen willst, ist es mit min() & max() zu machen. Zeiger und Arrays sind übrigens gar nicht so verschieden, aber wenn ihrs aus pädagogischen Zwecken nicht nutzen dürft, dann mach halt min-max.

3

Saturday, January 23rd 2010, 12:30pm

habs so versucht:

C/C++ Quellcode

1
2
imin= min(iZahl1, iZahl2, iZahl3);
 imax= max(iZahl1, iZahl2, iZahl3);


nimmt er nicht an. Muss in noch was includen?

4

Saturday, January 23rd 2010, 2:15pm

Max und Min haben nur 2 Parameter. Ich glaube du musst Math includen.

Similar threads

Social bookmarks