Ergebnis 1 bis 7 von 7

Thema: Frage max min

  1. #1
    Fortgeschrittener
    Registriert seit
    24.05.2010
    Beiträge
    35

    Standard Frage max min

    hallo und wieder bins ich ^^ meine frage ist :

    Ich soll ein Programm schreiben das eine fesgelegte anzahl von zahlen, vom benutzer einliest und anschließend die gößte und kleinste zahl ausgibt. ich bon so weite gekommen.

    ich kann also die zalhne eingeben die werden aufgeslistet aber wie komm ich nun zu der größten und kleinsten zalh ?

    # include <stdio.h>
    # include <stdlib.h>

    main()
    {
    int anzahl;
    int z;
    int zahl;
    int max;
    int min;

    printf("Anzahl : ");
    scanf("%d", &anzahl);
    fflush(stdin);

    for(z=1; z<= anzahl; z=z+1)
    {
    printf("%d. Zahl: ", z);
    scanf("%d", &zahl);
    fflush(stdin);



    }

    }

  2. #2
    Master of Porn Avatar von sp1nny
    Registriert seit
    28.05.2007
    Beiträge
    533

    Standard

    In C++ würde ich es so lösen:

    Code:
    #include <cstdio>
    
    int main(void){
        
        int icount, inmbr, imax, imin;
    
        printf("Anzahl : ");
        scanf("%d", &icount);
    
        for(int i = 1; i <= icount; i++){
            printf("%d. Zahl: ", i);
            scanf("%d", &inmbr);
            if(i == 1){
                imax = inmbr;
                imin = inmbr;
            }
            if(inmbr > imax) imax = inmbr;
            if(inmbr < imin) imin = inmbr;
        }
    
        printf("Max: %d\nMin: %d", imax, imin);
        return 0;
    }
    XMPP: sp1nny @ exploit.im
    MAIL: sp1nny @ tuta.io

    PGP:

    Wir müssen wissen — wir werden wissen.


  3. #3
    Fortgeschrittener
    Registriert seit
    24.05.2010
    Beiträge
    35

    Standard

    mmhmh so ganz versteh ich die Lösung nich wie würde das den in C aussehen ?

  4. #4
    Master of Porn Avatar von sp1nny
    Registriert seit
    28.05.2007
    Beiträge
    533

    Standard

    Wichtig ist der fett markierte Code. Dort überprüfe ich zuerst ob es der ersten Schleifendurchgang ist. Wenn dies zutrifft belege ich imax und imin erstmal mit der ersten eingegebenen Zahl. Bei jedem weitern Durchgang überprüfe ich ob die nächste eingegebene Zahl kleiner als imin ist bzw. größer als imax ist. Trifft eins von beiden zu, so ersetze ich imax bzw. imin mit der neuen Zahl.

    Desweiteren solltest du nicht vergessen, dass die main()-Funktion eine Rückgabe hat und du dementsprechend noch int vor main schreiben musst, bzw noch einen int returnen musst.
    Geändert von sp1nny (28.05.2010 um 11:36 Uhr)
    XMPP: sp1nny @ exploit.im
    MAIL: sp1nny @ tuta.io

    PGP:

    Wir müssen wissen — wir werden wissen.


  5. #5
    Fortgeschrittener
    Registriert seit
    24.05.2010
    Beiträge
    35

    Standard

    So danke dir es hat geklappt habe es nun so gelöst :

    Code:
    # include <stdio.h>
    # include <stdlib.h>
    
    main()
    { 
        int anzahl;
        int z;
        int zahl;
        int max;
        int min;
        
        printf("Anzahl :  ");
        scanf("%d", &anzahl);
        fflush(stdin);
        
        for(z=1; z<= anzahl; z=z+1)
        {
          printf("%d. Zahl:  ", z);
          scanf("%d", &zahl);
          fflush(stdin);
          
          if(z == 1)
            {
                max = zahl;
                min = zahl;
            }
            if(zahl > max) 
            max = zahl;
            if(zahl < min) 
            min = zahl;
            
        }
        
        printf("Max. Zahl: %d\n", max);
        printf("Min. Zahl: %d\n", min);     
        
        system ("PAUSE");     
        
        
    }

  6. #6
    Anfänger
    Registriert seit
    19.05.2010
    Beiträge
    7

    Standard

    Sp1nnys Lösung ist shcon sehr gut.

    Eine Alternative, wenn auch nicht so elegant, wäre das Sortieren z.B. mit Bubblesrot und danah einfach das erste und letzte Element zurückgeben.
    Wenn du das in 'nem Array hast, mach das so:

    Code:
    int nums[] = {1, 5, 8, 2, 4, 2};
    
    max = min = 0;
    for(i = 0;i < 6;i++) {
      max = (max < nums[i] ? nums[i] : max);
      min = (min > nums[i] ? nums[i] : min);
    }

  7. #7
    W32.FunLove Avatar von Keksdose
    Registriert seit
    03.05.2009
    Beiträge
    155

    Standard

    hm wenn du min=0 setzt wird das das geringste bleiben... ich würde vorschlagen min auf den höchst möglichen wert zu setzten

    Oder eben einfach den ersten Wert zu nehmen wie sp1nny und so...
    max = min = num[0];
    for(i = 1; i<6 ...


    // edit: Erklärung
    wenn du

    max = min = num[0]; machst ist num[0] abgedeckt damit das dann nicht grad nochmal verglichen wird kannst doch bei 1 starten...
    du kannst es auch bei 0 beginnen lassen...

    dann ist der erste schleifendurchlauf praktisch

    num[0]<num[0] ...
    num[0]>num[0] ...

    wegen max = min = num[0];

    i<6 wenn es 6 Elemente gibt .. 0,1,2,3,4,5
    Geändert von Keksdose (28.05.2010 um 14:16 Uhr) Grund: Automerged Doublepost

Ähnliche Themen

  1. [FRAGE]Hoch-Sicherheits-Passwort??[FRAGE]
    Von Mﮇx ǿηe im Forum Sicherheit
    Antworten: 24
    Letzter Beitrag: 12.11.2008, 23:06

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •