# maximalwert in C ermitteln!!



## LatschFOB (16. Oktober 2003)

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


----------



## Thomas Kuse (16. Oktober 2003)

einfachster Weg:


```
#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*


----------



## Maximka (16. Oktober 2003)

nur das kernstueck:


```
bool bEnd=false;
int iZahl;
int iMax=INT_MIN;
while(!bEnd)
{
    // lese zahl in iZahl ein
    if(iZahl>iMax)
    {
         iMax=iZahl;
    };
};
// gebe iMax aus
```


----------



## Thomas Kuse (16. Oktober 2003)

in C (ANSI) gibt es *keinen bool* und nach einem if- oder while Block bitte kein Semicolon setzen!


----------



## LatschFOB (16. Oktober 2003)

also ich hab es so gemacht..aber es kommen sehr utopische zahlen raus


----------



## Maximka (16. Oktober 2003)

@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


----------



## Thomas Kuse (16. Oktober 2003)

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:

```
struct test{
   int a;
   int b;
};
```
oder mit einer Definition

```
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:

```
;;;;;
;
;a=1; ; ; ;
;
```


----------



## Maximka (16. Oktober 2003)

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.


----------



## lukasS (16. Oktober 2003)

Hier hast du nochmal den kompletten Code:


```
#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;
}
```


----------



## Thomas Kuse (16. Oktober 2003)

> _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)


----------



## lukasS (16. Oktober 2003)

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


----------

