Hilfe für C++ Programm

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);

cout>anz;
int *west=new int[anz];
for(i=0; i

wo ist denn das Problem beim ausgeben?
das ausgeben der Werkstücke an sich, scheint ja kein Problem zu sein

Hallo,

sehe hier nirgends eine Prüfung wie lang die zufällig erstellte Länge der Werkstücke ist (sprich if Bedingung oder so).

Somit hat Deine Frage selbst wenig mit C++ zu tun.
Der Sinn des Programms ist mit auch etwas unklar …

Sind das deine Hausaufgaben?

Sind das deine Hausaufgaben?

Nein. Wir können wenn wir wollen das zu Hause fertig machen, jedoch weiß ich an dieser stelle nicht mehr weiter.

Die zufällig erstellte Länge gebe ich mit randomize() an, sowie dann mit dem Befehl random usw.

Wie ermittle ich aber, die Ausgabe welche mir anzeigt, wieviele Teile im Toleranzbereich liegen und wieviele außerhalb?

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

Hallo!

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

Du musst Dir zwei int Variablen zum zählen nehmen.
So in etwa:

int tol = 0;
int nottol = 0;
if(west[i] >= 20 && west[i]

Hallo MrY,

das ist eine Schulaufgabe, richtig?

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:

Zufallsgenerator initialisieren:
srand((unsigned) time(NULL));

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.

Viel Erfolg beim Lernen wünsche ich!

Hallo MrY,

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

Ich habe nur das Problem das ich nicht ausgeben kann wieviele
gut und wieviele schlecht sind. kann mir jemand helfen?

Was geht denn an der Ausgabe nicht?

wenn ich das Problem nicht kenne, kann ich auch nicht helfen.
„Wie?“ ist keine ausreichende Beschreibung

Die Anzahl der guten und schlechten Teile muss ausgegeben werden. Jedoch wie?

Hallo,

späte Antwort aber, ich schätze das Problem ist schon gelöst, oder?

Sorry :smile:

Viele Grüße,
Thomas