tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
10
ZUGRIFFE
3058
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    LatschFOB LatschFOB ist offline Grünschnabel
    Registriert seit
    Oct 2003
    Beiträge
    2
    moinz,
    Ich wollte mal wissen wie man einen Maximalwert in C ermitteln kann!
    also ein Benutzer kann beliebig viele Zahlen eingeben und das programm soll aus diesen zahlen dann den maximalwert auslesen!
    kann mir da jemand weiter helfen

    mfg
    Latsch
     

  2. #2
    Thomas Kuse Thomas Kuse ist offline Mitglied Rubin
    Registriert seit
    Aug 2001
    Beiträge
    1.411
    einfachster Weg:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    #define ANZAHL 30
    int i=0;
    int zahlen[ANZAHL];
    int max,max_stelle;
     
    //...
    //zahlen[] wurde mit werten gefüllt
     
    max=zahlen[0];
    max_stelle=i;
     
    for(i=0;i<ANZAHL;i++){
       if(zahlen[i]>max){
           max=zahlen[i];
           max_stelle=i;
       }
    }
     
    printf("Maximalwert %d an der Stelle %d",max,max_stelle);

    in der Art und Weise kann man halt Maximal-Werte aus einem Array herausbekommen.
    Eventuell gibt es aber in anderen Bibliotheken schon max() bzw min() Funktionen.

    PS: BITTE NIEMALS EIN THEMA ZWEIMAL POSTEN
    Geändert von Thomas Kuse (16.10.03 um 09:20 Uhr)
     

  3. #3
    Maximka Maximka ist offline Mitglied Gold
    Registriert seit
    Jan 2002
    Ort
    Berlin
    Beiträge
    106
    nur das kernstueck:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    bool bEnd=false;
    int iZahl;
    int iMax=INT_MIN;
    while(!bEnd)
    {
        // lese zahl in iZahl ein
        if(iZahl>iMax)
        {
             iMax=iZahl;
        };
    };
    // gebe iMax aus
     
    Have a nice day!

  4. #4
    Thomas Kuse Thomas Kuse ist offline Mitglied Rubin
    Registriert seit
    Aug 2001
    Beiträge
    1.411
    in C (ANSI) gibt es keinen bool und nach einem if- oder while Block bitte kein Semicolon setzen!
     

  5. #5
    LatschFOB LatschFOB ist offline Grünschnabel
    Registriert seit
    Oct 2003
    Beiträge
    2
    also ich hab es so gemacht..aber es kommen sehr utopische zahlen raus
     

  6. #6
    Maximka Maximka ist offline Mitglied Gold
    Registriert seit
    Jan 2002
    Ort
    Berlin
    Beiträge
    106
    @Thomas
    Und wieso sollte man kein Semicolon nach den if und while bloecken setzen?

    und das mit dem C (ANSI) habe ich wohl ueberlesen
    sollte ja auch eher eine skizze sein
     
    Have a nice day!

  7. #7
    Thomas Kuse Thomas Kuse ist offline Mitglied Rubin
    Registriert seit
    Aug 2001
    Beiträge
    1.411
    Weil das kein pascal sondern C ist
    Ein Semicolon nach einem {}-Block musst du nur nach einer Deklaration einer Struktur/Klasse machen, weil du dort auch gleich eine Definition daraus machen kannst, indem du eine Instanz anlegst.

    Hier eine blosse Deklaration:
    Code :
    1
    2
    3
    4
    
    struct test{
       int a;
       int b;
    };
    oder mit einer Definition
    Code :
    1
    2
    3
    4
    
    struct test{
       int a;
       int b;
    }teststructure;

    Ansonsten macht dein Compiler beim anfügen eines Semicolons noch einen Extra-Schritt weil er "denkt" dass vor dem Semicolon noch ein Extra-Befehl kommt.
    Das würde auch funktionieren, aber in einem unsauberen Quellcode resultieren:
    Code :
    1
    2
    3
    4
    
    ;;;;;
    ;
    ;a=1; ; ; ;
    ;
     

  8. #8
    Maximka Maximka ist offline Mitglied Gold
    Registriert seit
    Jan 2002
    Ort
    Berlin
    Beiträge
    106
    Da der C und C++ Standard die Schreibweise nicht verbieten,ist es auch kein Fehler.
    Ausserdem finde ich erhoeht so ein Semicolon die Lesbarkeit des Programms.
    Und der Compiler ist nicht dumm, der filtert diese leere Anweisung raus und erzeugt kein Code dafuer. Und wenn man das von Compilezeitseite betrachtet, dann ist dies vernachlaessigbar.

    Und das Beispiel ist redlich schlecht, denn wo bitte ist da wenigstens eine if oder while Anweisung zu finden?

    Und solange wie hier auf dem Board keine Regeln ueber Stil- und Code-Formatierung aufgestellt sind werde ich meine Beispiele posten wie ich es fuer richtig halte.
     
    Have a nice day!

  9. #9
    Avatar von lukasS
    lukasS lukasS ist offline Mitglied Brokat
    Registriert seit
    Jun 2003
    Ort
    Bochum
    Beiträge
    264
    Hier hast du nochmal den kompletten Code:

    Code :
    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
    
    #include <stdio.h>
     
    int main(void)
    {
        int iMax = 0;
        int i = 0;
        int arrZahlen[5];
        int iStelle = 0;
        int anzZahlen = 5; /*Anzahl der Zahlen in dem Array*/
        
        arrZahlen[0] = 10;  
        arrZahlen[1] = 5;
        arrZahlen[2] = 17;
        arrZahlen[3] = 13;
        arrZahlen[4] = 2;
        arrZahlen[5] = 9;
        
        iMax = arrZahlen[0];
        
        for (i = 0; i <= anzZahlen; i++)
        {
            if(arrZahlen[i] > iMax)
            {
                iMax = arrZahlen[i];
                iStelle = i;
            }   
        }
        
        printf("Die groesste Zahl ist %i und liegt an der %i Stelle", iMax, iStelle);
        
        return 0;
    }
     

  10. #10
    Thomas Kuse Thomas Kuse ist offline Mitglied Rubin
    Registriert seit
    Aug 2001
    Beiträge
    1.411
    Original geschrieben von Maximka
    Und solange wie hier auf dem Board keine Regeln ueber Stil- und Code-Formatierung aufgestellt sind werde ich meine Beispiele posten wie ich es fuer richtig halte.
    Wer fühlt sich denn da angegriffen?
    Schreib doch Deinen Code so wie du das willst.
    Ich jedoch mache die User darauf aufmerksam was nach welchen Konventionen wie geschrieben wird.
    Dass ein zusätzliches Semicolon die Lesbarkeit erhöht halte ich für totalen Unsinn, da für das Ende eines Blocks nun mal die geschweifte Klammer da ist. Nur weil das in Pascal so ist, ist das in C/C++ noch lange nicht so!

    Wenn Du die Lesbarkeit deiner Quellcodes verbessern willst dann benutze die Ungarische Notation und/oder Kommentare.
    Kannst mir ja mal per PM ein C-Projekt nennen, bei dem solch tolle Formatierung benutzt wird.
    ENDE DER DISKUSSION (hier gehts um MAX-Berechnung)
     

  11. #11
    Avatar von lukasS
    lukasS lukasS ist offline Mitglied Brokat
    Registriert seit
    Jun 2003
    Ort
    Bochum
    Beiträge
    264
    Also ich habe gelernt, dass nach den geschweiften Klammern in Schleifen oder Bedinungen keine Simicolon angehängt werden.

    Aber jeder hat eben sein eignen steal.

    Wollte nur mal mein Meinung äußern.

    Lukas
     

Ähnliche Themen

  1. Maximalwert für Feld
    Von klanawagna im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 13.03.10, 11:42
  2. Maximalwert von 4 int Variablen
    Von Biergamasda im Forum Java Grundlagen
    Antworten: 8
    Letzter Beitrag: 25.02.10, 09:24
  3. Maximalwert Berechnung
    Von pete_redman im Forum Visual Basic 6.0
    Antworten: 3
    Letzter Beitrag: 06.03.07, 20:07
  4. Maximalwert einer Spalte ermitteln
    Von Hektik im Forum Relationale Datenbanksysteme
    Antworten: 6
    Letzter Beitrag: 09.06.06, 00:49
  5. Maximalwert aus einer 1:n-Beziehung ermitteln
    Von janw im Forum Relationale Datenbanksysteme
    Antworten: 9
    Letzter Beitrag: 05.08.05, 09:37