Problem :)
-
Hi,
komm bei meinem Prog nicht weiter. Es soll dynamisch Werte aufnehmen und dann das Max ausgeben...
Es lässt sich kompilieren aber max ist immer o#pragma hdrstop #include <iostream> #include <stdlib> //--------------------------------------------------------------------------- #pragma argsused using namespace std; float nmax(float**,int); int main(int argc, char* argv[]) { static int n=0,a; cout<<"Gib die Anzahl der Werte ein (1-100): "; cin>>n; float* f=(float*) malloc(n); for(a=0;a<n;++a){ cout<<"Wert "<<a+1<<": "; cin>>(f[a]); }; cout<<"Max: "<<nmax(&f,n)<<endl; system("PAUSE"); return 0; } //--------------------------------------------------------------------------- float nmax(float** ff,int n) { float max=0.0; while(!n){ if((*ff[n])>(*ff[n-1])) max=(*ff[n]); else max=(*ff[n-1]); --n; }; return max; };
Wenn man den Code verbessern kann, dann bitte alle Verbesserungsvorschläge posten.
Thx KaraHead
-
Du hättest diesen Beitrag im C-Forum posten sollen. Dein Code ist in reinem C (oder fast..). Nichtsdestotrotz würd ich die nmax Funktion so schreiben:
float nmax(float* ff,int n) { float max=0.0; int i; for(i=0; i<n; i++) { if( ff[i] > max) max = ff[i]; } return max; };
-
while(!n) bedeutet ja, das die While-Schleife nur durchgangen wird, wenn n null ist ... aber da du ja eine Zahl übergibst wird natürlich immer 0.0 (nmax) zurückgegeben
ich würde while(n>0) nehmen
-
Das ist nur ne Frage des Stils. Dein Funktionsprototyp war falsch. Du übergibst
statt eines Pointers auf float einen Pointer auf einen Pointer auf float (die zwei **)Edit:
Oh, und ich seh grad, dass das innere in deiner Schleife auch Murks war, insbesondere
die das if-Statement.
-
Danke für die Ansätze hab es jetzt hinbekommen
-
Aziz schrieb:
Du hättest diesen Beitrag im C-Forum posten sollen. Dein Code ist in reinem C (oder fast..).
Um dazu auch noch meinen Senf dazu zu geben: Warum ist das C-Code? Weil das nur
ne kleine Übung ist, und der gute Mann sich wahrscheinlich noch nicht mit vectoren
beschäftigt hat? Weil er keine Klasse geschrieben hat?Btw:
Im C-Forum hätte er eins für die <iostream> auf den Deckel bekommen.
-
Siehst du. Ich hatte vorher schon unheimliche Angst diesen Satz zu posten. Deswegen schrieb ich in Klammern "oder fast", weil so genau hab ich den Code auch nicht analysiert...
-
float max=0.0;
Hier sollte stehen:
float max = ff[0], sonst gibt die Funktion 0 zurück, wenn nur negative Wert im Array sind. :p