min&max&mittelwert und doku über mehrere min-s und max-s
-
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...