myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   Hilfe beim C-Programm! Welcher Befehl? (https://mygully.com/showthread.php?t=2198844)

Schnitzel1984 04.01.11 22:36

Hilfe beim C-Programm! Welcher Befehl?
 
Ich habe ein kleines C-Programm geschrieben.
Es fragt nach einer Anzahl, anschließend kann man die Werte eingeben und bekommt die Summe und den Mittelwert dargestellt.



Was ich jetzt gerne noch darstellen würde, wäre den minimalen und maximalen Wert der eingegeben Zahlen.

Jetzt kommen wir zu meinem Anliegen. Ich habe keine Ahnung wie ich das realisieren soll.
Normalerweise habe ich vorher Variablen festgelegt x1,....,xn.
Anschließend mit einer "if else" Anweisung geprüft.


Nur bei dem neuen Programm habe keine feste Anzahl von Variablen die ich vorher definiert habe.

Ist im Forum ein wenig doof dargestellt. Im Dev C++ ist es überschaubarer.

Meine Programmierkenntnisse halten sich in Grenzen, daher seit lieb ;)
Ich erwarte jetzt keine komplette Lsg, ein Wink mit dem Zaunpfahl würde schon reichen:)
Wäre aber natürlich einer grobfertigen Lsg nicht abgeneigt ;)

THX

gosha16 04.01.11 22:46

geh mit ner for schleife alle elemente durch und speicher die höchste bzw kleinste zahl zwischen. also erstes element is 1 also geht die eins nach min und nach max, dann guckst du im zweiten element ob das größer ist, ist es zb. 2 dann schreibst du 2 nach max und lässt min auf 1.

Schnitzel1984 05.01.11 16:47

Danke.

Ich setze mich am WE mal dran!

tha_specializt 05.01.11 21:34

die einfachste Lösung : speicher jeden eingehenden Wort in einer temporären Variable, vergleiche diese mit einer zweiten, unabhängigen Variable die mit 0 initialisiert wurde und tausche ggf. aus. Am Ende der Eingabe hast du garantiert die grösste Zahl in der nichttemporären Variable - das ist bedeutend sinnvoller als eine Schleife bzw. zumindest effizienter.

m3zz0w1x 05.01.11 23:09

Zitat:

Zitat von tha_specializt (Beitrag 21739580)
die einfachste Lösung : speicher jeden eingehenden Wort in einer temporären Variable, vergleiche diese mit einer zweiten, unabhängigen Variable die mit 0 initialisiert wurde und tausche ggf. aus. Am Ende der Eingabe hast du garantiert die grösste Zahl in der nichttemporären Variable - das ist bedeutend sinnvoller als eine Schleife bzw. zumindest effizienter.

Thread gelesen?
Lösung steht schon in der ersten Antwort!

loader22 07.01.11 02:03

Zitat:

Zitat von m3zz0w1x (Beitrag 21739921)
Thread gelesen?
Lösung steht schon in der ersten Antwort!

Das ist kein Grund, nicht bessere Lösungsansätze zu liefern ;)

gosha16 07.01.11 11:42

Stimmt schon, man braucht da keine zweite for schleife dafür. ABer mit nen bisschen Überlegen kommt der OP da auch selber drauf das er das in der eingabeschleife machen kann.

(Und ich hatte mir den Code nich angeschaut, deswegen hab ich die Eingabeschleife nicht beachtet ;))

Schnitzel1984 10.01.11 19:10

Nochmal danke für die Tipps!
Habe es auch hinbekommen. Allerdings nur mit zwei for-Schleifen!
Die Version mit der einen Schleife war auch mein Urgedanke, nur liefert diese nur bei Zahlenreihen richtige Werte, also 1234 4321 9652 sobald man nicht aufeinanderfolgende Zahlen verwendet, zB.: 2958 5978 ist das Minima oder Maxima falsch.




Wäre topp, wenn mir das einer erklären kann!!!, Ich finde einfach keinen Fehler :(


Diese Lsg funktioniert zwar, aber ich finde sie unschön, ;)
eine Schleife wäre mir lieber :D
Habe die Progs mal mit und ohne Kommentare eingefügt, sonst ist es doch etwas unüberschaubar :) :(


EDIT.: Habe noch eine while-Schleife eingefügt, damit man das Programm mehrmals anwenden kann.
Mit 0 wird das Programm dann geschlossen!

gosha16 10.01.11 19:25

ohje ohje

Was mir direkt ins Auge springt:

int i, anzahl; //Zählvariablen
float zahl[i];

das geht so nicht, da i nicht initialisiert ist und damit dein zahlenarray eine unvorhersehbare größe bekommt. Schau dir mal malloc() an. (Dein Zahlenproblem wird wohl eher logischer natur sein, ich schau später nochmal drüber)

Schnitzel1984 10.01.11 19:54

Keine Panik auf der Titanik, geht sowieso unter.

Habe sowieso erst am WE wieder Zeit mich damit zu befassen ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:48 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.