min&max&mittelwert und doku über mehrere min-s und max-s
-
Erstmal besten dank,hab das prg getestet, ist leider sehr fehlerbehaftet!
Hab einige weggemacht, klappt dann bei mir aber trotzdem nicht!kann man evtl mein prg soweit erweitern das ich die richtige ausgabe kriege?
wäre echt nett wenn mir einer ein entsprechenden tipp geben könnte, denn wie ich schon schrieb bin ich relativ frisch auf dem gebiet und das prg von Mr Evil ist neue Materie für mich, will erstmal die alte komplett verstehn...
Danke vorrab!!
-
sehr fehlerbehaftet? Wo denn? Der Header ist falsch (<iostream> wäre richtig), hier und da fehlt ein Semikolon. Na gut, das hier:
float messwertarray[100]
geht so natürlich nicht. Entweder fügt man eine Sicherheitsabfrage ein, die das Überlaufen des Arrays verhindert oder (viel besser) man verwendet einen std::vector.
@Timmää: Das Problem mit deinem Programm ist, daß es finsteres C ist. Solche Sachen wie printf gehören hier einfach nicht her. Wenn du deinen Code mit solchen nutzlosen und gefährlichen Relikten vollstopfst und noch dazu deinen Code ohne Code-Tags postest, darfst du dich nicht wundern, wenn die Leute nicht willens sind deinen Code anzusehen. Ich bin es jedenfalls nicht.
Edit: Wenn man den Code so aufbaut wie MrEvil, braucht man eigentlich gar kein Array, weil man die eingegebenen Werte ja direkt verwendet.
-
bin mein code oben nochmal ueberflogen
nu muesste es {theoretisch} funktionieren
-
Kann ja auch nix dafür das ich es so in der Schule beigebracht kriege!!
Mache gerad mein Techniker und bin gerad ziemlich am Anfang!Und nach dem Schema sollte ich in der Schule eine präsentation halten, deshalb wollte ich wissen wo ich den Bock reingehauen habe!
Kanns mir schon vorstellen das es einfacher geht, bloß dieses einfache krieg ich anscheinend nicht beigebracht!!
Nochmals Sorry, wär trotzdem nett wenn da jemand drüberfliegt!!
-
Timmää schrieb:
Nochmals Sorry, wär trotzdem nett wenn da jemand drüberfliegt!!
Die Anzahl deiner Helfer vergrößert sich potentiell dramatisch wenn du deinen Code ordentlich eingerückt & gehighlightet präsentierst...
-
@ Mr Evil
Bin mit dem Borland c++ Builder 6 am Arbeiten.
Habe das Prg ausprobiert, es läuft bis zur eingabe des letzten wertes und bricht dann ab!
Liegt das am Borland oder am Prg.?Echt ratlos...
-
hatte kurzzeitig langeweile #gg
#include <iostream> #include <vector> class CMinMax { private: std::vector< float >m_vValues; int m_iNumbers; float m_fMin; float m_fMax; float m_fAverange; float m_fSummary; public: void Run(); void GetNumbers(); void GetCount(); void CheckMin(); void CheckMax(); void GetSummary(); void GetAverange(); void CheckParity(); void Output(); void Pause(); CMinMax() { m_iNumbers = 0; m_fMin = 0.0; m_fMax = 0.0; m_fAverange = 0.0; m_fSummary = 0.0; } }; int main() { CMinMax cminmax; cminmax.Run(); return 0; } void CMinMax::Run() { GetCount(); GetNumbers(); CheckMin(); CheckMax(); GetSummary(); GetAverange(); CheckParity(); Output(); Pause(); } void CMinMax::GetCount() { std::cout << "Bitte geben Sie die anzahl der Messwerte ein: "; std::cin >> m_iNumbers; } void CMinMax::GetNumbers() { float fBuffer = 0.0; for( int i=0; i<m_iNumbers; i++ ) { std::cout << "Bitte " << i+1 << ". messwert eingeben: "; std::cin >> fBuffer; m_vValues.push_back( fBuffer ); } } void CMinMax::CheckMin() { m_fMin = m_vValues[0]; for( int i=0; i<m_iNumbers; i++ ) { if( m_fMin > m_vValues[i] ) m_fMin = m_vValues[i]; } } void CMinMax::CheckMax() { m_fMax = m_vValues[0]; for( int i=0; i<m_iNumbers; i++ ) { if( m_fMax < m_vValues[i] ) m_fMax = m_vValues[i]; } } void CMinMax::GetSummary() { for( int i=0; i<m_iNumbers; i++ ) m_fSummary += m_vValues[i]; } void CMinMax::GetAverange() { m_fAverange = m_fSummary/m_iNumbers; } void CMinMax::CheckParity() { std::vector< std::string >vLine; std::cout << std::endl; char buff[512] = {'\0'}; int more = 0; for( int i=0; i<m_iNumbers; i++ ) { if( m_fMax == m_vValues[i] ) std::cout << "Element " << i+1 << " ist maximal" << std::endl; } for( int i=0; i<m_iNumbers; i++ ) { if( m_fMin == m_vValues[i] ) std::cout << "Element " << i+1 << " ist minimal" << std::endl; } } void CMinMax::Output() { std::cout << std::endl; std::cout << "Der max-Wert betraegt: " << m_fMax << std::endl; std::cout << "Der min-Wert betraegt: " << m_fMin << std::endl; std::cout << "Der Mittelwert betraegt: " << m_fAverange << std::endl; std::cout << "Die Summe betraegt: " << m_fSummary << std::endl; } void CMinMax::Pause() { std::cin.get(); std::cin.get(); }/edit - bloede tippfehler
das das programm abbricht liegt evtl daran das nur einmal cin,get(); war, er hat das enter zeichen noch im speicher von der letzten eingabe, darum bekommt er mit get() immer was geholt und denkt du hast enter gemacht
-
@ finix
Danke für den tipp!
@ Mr Evil
!Danke! !Danke!Hier noch mal mein Quellcode, hoffe das es diesmal besser ist:
#include <stdio.h> #include <conio.h> void main() { int anzahl, i; float messwertarray[100], summe = 0.0,mittelwert, min, max,cout; printf("bitte geben Sie die anzahl der Messwerte ein : "); scanf("%i",&anzahl); for (i = 0; i <anzahl; i++) { printf("Bitte %i.messwert eingeben ",i+1); scanf("%f",&messwertarray[i]); summe=summe+messwertarray[i]; } for (i=0;i<anzahl;i++) { if (i == 0) { min = messwertarray[i]; max = messwertarray[i]; } if (max < messwertarray[i]) { max = messwertarray[i]; } if (min > messwertarray[i]) { min = messwertarray[i]; } } mittelwert=summe/anzahl; printf("\n\nDer max-Wert betraegt : %f\n",max); printf("Der Mittelwertbetraegt: %f\n",mittelwert); printf("Der min-Wert betraegt : %f\n",min); for(i=0;i<anzahl;i++) { if(max == messwertarray[i]) { printf("\nElement %i ist maximal",messwertarray[i]) ; } } getch(); }Wie gesagt, es stimmt soweit alles bis auf die Ausgabe mehrerer Max-werte!
Es werden 3 zeilen angezeigt wenn es z.B 3 maxwerte gibt bloß mit der ausgabe:
"Element 0 ist maximal"
-
Du zeigt auch nicht die Elementnummer an (das wäre i oder i+1 wie bei Deiner Messwerteingabe), sondern denn Wert des Elements. Ist bei Deinen Beispielen der Maximalwert immer 0?
Also statt:
printf("\nElement %i ist maximal",messwertarray[i]) ;solltest Du i+1 ausgeben.
printf("\nElement %i ist maximal",i+1) ;Denn Rest des Programmes habe ich mir jetzt nicht genauer angesehen.
DJohn
Edit: i zu i+1 geändert.
-
ersetze
printf("\nElement %i ist maximal",messwertarray[i]) ;mit
printf("\nElement %d ist maximal", i+1 );dann klappts auch {o;
-
grad n guter zeitvertreib #gg
dein code in angepasster form#include <stdio.h> #include <conio.h> void main() { int iAnzahl, i; float fMesswertarray[100] = { '0.0' } float fSumme = 0.0 float fMittelwert = 0.0 float fMin = 0.0 float fMax = 0.0 // float fCount = 0.0; // wofuer ist die printf( "bitte geben Sie die anzahl der Messwerte ein : " ); scanf( "%i", &iAnzahl ); for( i=0; i<iAnzahl; i++ ) { printf( "Bitte %i. messwert eingeben ",i+1 ); scanf( "%f", &fMesswertarray[i] ); fSumme += fMesswertarray[i]; } for( i=0; i<iAnzahl; i++ ) { if( i == 0 ) fMax = fMin = fMesswertarray[i]; if( fMax < fMesswertarray[i] ) fMax = fMesswertarray[i]; if( fMin > fMesswertarray[i] ) fMin = fMesswertarray[i]; } fMittelwert = fSumme / iAnzahl; printf( "\n\nDer max-Wert betraegt : %f\n", fMax ); printf( "Der Mittelwertbetraegt: %f\n", fMittelwert ); printf( "Der min-Wert betraegt : %f\n", fMin ); for( i=0; i<iAnzahl; i++ ) { if( fMax == fMesswertarray[i] ) printf( "\nElement %d ist maximal", i+1 ) ; } getch(); }
-
!!!Besten Dank für eure Hilfe!!!
Alle Fehler behoben!Dieses Forum is der Knaller...