ich muss mittels eines unterprogramms herausfiltern wieviele werkstück gut und wieviele schlecht sind. Toleranz liegt bei 20mm - 30mm. Die Werkstücklänge ermittle ich via random zufällig von 10mm - 40mm. Vorab muss noch festgestellt werden wieviele Werkstücke es sind.
Ich habe nur das Problem das ich nicht ausgeben kann wieviele gut und wieviele schlecht sind. kann mir jemand helfen?
hier das Programm was ich bisher habe.
#include #include #include #include
int *Auswert(int, int*);
main()
{
int *a=new int[2];
randomize();
int i, anz;
char name(20);
Die Anzahl der guten und schlechten Teile muss ausgegeben werden. Jedoch wie?
wo ist denn das Problem beim ausgeben?
das ausgeben der Werkstücke an sich, scheint ja kein Problem
zu sein
Du mußt außerhalb der for-Schleife eine Variable definieren, in der Du zählen kannst, wieviele der Werkstücke =20&30mm sind (alternativ kannst Du natürlich auch einfach nur zählen, wieviele zwischen 20 und 30mm sind, die Gesamtmenge hast Du ja bereits in der Variable „anz“).
Die kleine Ergänzung zählt Werkstücke 30mm in limitCheck[2].
main()
{
int *a=new int[2]; // !Die Variable wird nicht benutzt und der Speicher wird nicht freigegeben
randomize();
int i, anz, limitCheck[3];
char name(20);
cout>anz;
int *west=new int[anz];// !Der Speicher wird nicht wieder freigegeben
limitCheck[0]=limitCheck[1]=limitCheck[2]=0;
for(i=0; i=20&&west[i]30) limitCheck[2]++;
}
cout
Deine Lösung enthält noch Fehler und ungenutzte Ansätze.
Zunächst mal:
randomize gibt es bei vielen C+±Implementierungen nicht.
Das wird normalerweise etwa so gemacht:
Zufallszahl erzeugen:
zahl = rand() % maxValue + minValue + 1;
wobei maxValue der Wertebereich ist, minValue der Mindestwert und das + 1 die Zählung bei 1 statt 0 beginnen lässt.
Das Unterprogramm (bzw. die Funktion) hast du deklariert aber nicht implementiert…
Deine Funktion „Auswert“ sollte mittels if feststellen, ob das Werkstück in der Toleranz ist oder nicht. Du kannst dann innerhalb des if oder des else eine Variable um 1 erhöhen (oder eben nicht) und / oder direkt eine Ausgabe machen.
Du musst deine Funktion dann nur noch dort aufrufen, wo dein cout jetzt ist.
Ich habe dir gezielt nicht alles vorgesagt, damit du die Chance hast, die eigentliche Lösung selbst zu erarbeiten. Dabei lernt man am Besten.
die erste Frage die ich mir stelle ist: Soll es C oder C++ werden?
In C++ wäre sowas wie das hier denkbar:
#include // ohne .h
#include
#include
class Werkstueck
{
public:
Werkstueck()
{
laenge = 10 + rand() % 31;
}
unsigned int GetLaenge() const
{
return laenge;
}
private:
unsigned int laenge;
};
int main( int argc, char\*\* argv )
{
const unsigned int anzahl = 10;
Werkstueck werkstueck[anzahl];
for ( unsigned int i = 0; i 20 )
{
std::cout
Das wird so wahrscheinlich nicht kompilieren, da ich es jetzt einfach in den Editor geschrieben habe. Auch das Design ist eher mager, aber es ist vielleicht eine gute Anregung und gibt die neue Denkanstöße. Ich kann die die Seite http://www.cplusplus.com/ ans Herz legen. Dort sind eigentlich alle Basics mit Beispielen beschrieben.
In C wäre die Situation eine andere. Aber da du die iostreams benutzt (die sind übrigens im std namespace), denke ich, du willst eher C++ machen.
In jedem Fall solltest du dir über diesen Unterschied klar werden (objektorientiert oder strukturiert). DAS IST WIRKLICH ENTSCHEIDEND.
viele Grüße
Sascha