012
11.06.2008, 19:30 Uhr
~Dan Gerous
Gast
|
Zitat: |
...Buch in die Hand und lernen?! Dreister geht's ja wohl nicht mehr; nicht mal angefangen, schon aufgegeben, und jetzt sollen wir das hier schön säuberlich durchkauen?
|
Sorry Leute, ich hatte eigentlich noch nen 2. Post gemacht wo der Quellcode drin stand. Anscheinend war der Sicherheitscode falsch und den hats nich abgeschickt.
Hier nochmal der Code:
C++: |
// Beschreibung: //Als erstes wird der Nutzer dazu aufgefordert, die Messwerte einzugeben. //Mit diesen Messwerten wird eine einfach verketteten Liste aufgebaut, welche //nochmals überprüft wird, ob sie auch korrekt aufgebaut ist. Als nächstes wird //das arithmetische Mittel der Messwerte gebildet und zurückgegeben. Nachdem der //Nutzer die größtmögliche Abweichung angegeben hat, überprüft das Programm alle //Abweichungen der Messwerte vom Mittelwert. Ist die Abweichung größer als die //vom Nutzer eingegebene, so wird das Element gelöscht und die Anzahl der //vorhandenen Elemente zurückgegeben. Als letztes werden die Elememte sortiert //ausgegeben.
#include <iostream> #include <string.h> using namespace std;
//Eingabe der Messwerte durch den Nutzer
struct digit { float f; digit*pNext; }; int generate(digit*&pA) { int a,i; // neue Liste anlegen if(pA==NULL) { pA=new digit; cout<<"Wie viel Messwerte wollen Sie eingeben? \t"; cin>>a; cout<<"Bitte geben Sie jetzt Ihre Messwerte ein: \n"; for(i=1;i<=a;i++) { cout<<i<<". Messwert: \n"; cin>>pA->f; pA->pNext=NULL; }; //Elemente an vorhandene Liste anfügen if(pA!=NULL); { digit*pErsatz=pA; //pErsatz muss auf letztes Element zeigen while(pErsatz->pNext!=NULL) { pErsatz=pErsatz->pNext; } digit*pNeu; pNeu=new digit; cout<<" Wie viel Messwerte wollen Sie hinzufügen? \t"; cin>>a; cout<<" Bitte geben Sie die Messwerte ein: \n"; for (i=1;i<=a;i++) { cout<<i<<". Messwert: \n"; cin>>pNeu->f; pNeu->pNext=NULL; pErsatz->pNext=NULL; }; }; if(pA!=NULL) { return 1; } else return 0; };
//Berechnung des Durchschnitts
float get_mean(digit * pA);{ float sum=0; float durchschnitt=0.0; int anz=0; digit*pHilf=pA; if(pA==NULL) { cout<<" Es kann kein Durchschnitt gebildet werden, da sich \n"; cout<<" keine Elemente in der Liste befinden \n"; }; if(pA!=NULL){ while(pHilf!=NULL) { sum=sum+pHilf->f; anz=anz+1; pHilf=pHilf->pNext; }; durchschnitt=sum/anz; cout<<endl; cout<<"Die Summe bträgt "<<sum<<endl; cout<<"Die Anzahl ist "<<anz<<endl; cout<<"Der Durchschnitt beträgt "<<durchschnitt<<endl; }; return durchschnitt; } ;
// Löschen der Elemente, welche außerhalb des Toleranzbereiches vom Mittelwert abweichen
int delete_elements(digit * &pA, float mean, float divergency);{ digit*pHilf=pA; digit*pHilf2; float mean; float divergency; float abw1=mean+mean*(divergency/100); float abw2=mean-mean*(divergency/100); int geloescht=0;
cout<<"Elemente kleiner als "<<abw2<<" und größer als "<<abw1<<" werden gelöscht."; cout<<endl; //falls erstes Element gelöscht wird if(pHilf!=NULL){ if((pHilf->f>abw1) || (pHilf->f<abw2)) { pA=pHilf->pNext; delete pHilf; geloescht++; }; // alle anderen Elemente while (pHilf->pNext!=NULL) { if((pHilf->f>abw1) || (pHilf->f<abw2)){ pHilf2=pHilf->pNext; pHilf->pNext=pHilf2->pNext; delete pHilf2; geloescht++; } else { pHilf=pHilf->pNext; } }; return geloescht; };
//Ausgabe der Elemente void print_elements(digit*&pA);{ digit*pHilf=pA; int nummer=0; while (pHilf!=NULL){ cout<<pHilf->f<<"\t"; nummer++; if (nummer%5==0) { cout<<endl; } }; };
//Hauptprogramm int main(); { digit*pA=0; int ausw=0; float mean,div; int erfolg; int anzahl=0; do { cout<<"Bitte wählen Sie aus:"<<endl; cout<<" 1 Neue Liste erstellen oder ergänzen"<<endl; cout<<" 2 Durchschnitt der Werte bilden"<<endl; cout<<" 3 Löschen bestimmter Werte"<<endl; cout<<" 4 Ausgabe der Werte"<<endl; cin>>ausw; switch(ausw){ case 1: generate(pA); erfolg=generate(pA); if (erfolg==1) { cout<<"Die Liste wurde erfolgreich erstellt/ergänzt"<<endl; } else { cout<<"Das Erstellen der Liste ist fehlgescglagen"<<endl; } ausw=0; break; case 2: mean=get_mean(pA); ausw=0; break; case 3: if(mean==0) { mean=get_mean(pA); } cout<<endl; cout<<"Um wie viel Prozent sollen die Werte höchstens vom Mittelwert abweichen?"; cin>>div; cout<<endl; anzahl=delete_elements(pA,mean,div); cout<<"Es wurden "<<anzahl<<" Elemente gelöscht"<<endl; ausw =0; break; case 4: print_elements(pA); ausw =0; break; default:cout<<"ungültige Eingabe"; }; } while ((ausw<1) || (ausw>4)); cin>>ausw; } } }
|
Bearbeitung: |
Codetags sind sinnvoll ...
|
Dieser Post wurde am 11.06.2008 um 20:18 Uhr von FloSoft editiert. |