Lagerverwaltung /Struktur



  • juhu 2 leidensgenossen^^:pp

    Ja ist C++ und Ils^^
    Huhu Anno^^



  • huhu du 😃
    wie klein die Welt doch ist 🙂



  • hab ich auch gemacht... 😉



  • Leidensgenosse?? 😮

    Es ist freiwillig und ich liebe es!

    Ja es handelt sich um C++ im .NET und CLI

    Also wenn du Probleme mit Strukturen hast kann ich dir schon weiterhelfen bei der Aufgabe.

    Du sollst eine Struktur erstellen, die folgende Elemente hat:

    struct beispielstruct
    {
    Int32 hoehe;
    Int32 breite;
    Int32 laenge;
    Int32 volumen;
    };
    

    Jetzt musst du dir noch überlegen welche Nummerierung du für deine "Kisten" haben willst.

    Erstelle ein Array( oder in den Heften auch Feld genannt) vom Typ deiner Structur.

    Um auf dieses Beispiel einzugehen:

    beispielstruct feld[100];
    

    Jetzt erstellst du dir z.B. eine Funktion

    einlesen();
    

    Hier ein Beispielcode für die Funktion einlesen():

    Void einlesen(beispielstruct feld[100])
    {
    Int32 breie;
    Console:WriteLine("Bitte geben sie die Breite an");
    breite = Convert:ToInt32(Console:ReadLine());
    //Jetzt kommt der Zugriff auf die Struktur:
    feld[1].breite = breite;
    }
    

    Dies ist natürlich nur ein Beispiel für die breite und nur auf feld[1] bezogen.
    Zum Einlesen musst du auch überprüfen ob nicht feld[1] schon belegt ist etc..

    (Ich habe mich vorhin in einem anderen Thread nochmal über den Zugriff von Funktionen auf die Struktur informiert, obwohl ich schon fertig war und es funktioniert, damit ich auch keinen Schmarn rede.)



  • Es ist freiwillig ja, aber man zahlt auch gut eine Stange Geld.
    Und ich mag es auch(wenn ich auch andere Ziele verfolge,
    mal abgesehen von Vba(nicht mein Fall^^))
    aber wenns nicht weitergeht und man sich den Kopf zerbricht
    ists nicht mehr so schön.

    Aber ein dickes Danke für die Hilfe, auch wenn das so auch
    schon im Heft steht^^Soweit hab iche s ja verstanden.
    Mir gehts ehr darum alles zusammenzubringen,
    d.h. alle 5 Funktionen.

    Habs Heft jetzt 4 mal gelesen aber sonderlich Helfen tut es nicht.

    naja und wenn ich es 10 mal lese, i-wie muss es ja gehen.



  • Hier der Quellcode meiner Aufgabe:

    Ich habe diesen schon eingeschickt, wenn du ihn kopierst bist du ja selbst Schuld:)

    Wenn du Fragen hast poste bitte den Teil des Quellcodes der unklar ist.

    FÜR ALLE ANDEREN:

    Der Quellcode ist keinesfalls optimiert! Er beinhaltet nur Syntax die von mir und diesem Kollegen bereits durchgenommen wurde und schließt Fehlerhandling etc aus.

    /* ###################################################
    
    Einsendeaufgabe 4
    
    #################################################### */
    
    #include "stdafx.h"
    
    using namespace System;
    
    //Legt für das Programm die maximal Anzahl an zu verwalteten Kisten fest
    const Int32 MAXKISTEN = 100;
    
    struct kistenlager
    {
    	Int32 kistennummer;
    	Int32 aktiv;
    	Int32 hoehe;
    	Int32 laenge;
    	Int32 breite;
    	Int32 volumen;
    };
    
    //Funktionsdeklarationen*******************************************************************
    //Alle Funktionen sind für das Management des Kistenlagers zuständig und greifen auf die Struktur “kistenlager” zu
    
    Void kisteAnlegen(kistenlager kisten[MAXKISTEN])
    {
    	for(Int32 i=0;i<MAXKISTEN;i++)
    	{
    		if(kisten[i].aktiv==0)
    		{
    		Console::WriteLine("Geben sie bitte die Höhe der Kiste ein");
    		kisten[i].hoehe = Convert::ToInt32(Console::ReadLine());
    
    		Console::WriteLine("Geben sie bitte die Breite der Kiste ein");
    		kisten[i].breite = Convert::ToInt32(Console::ReadLine());
    
    		Console::WriteLine("Geben sie bitte die Länge der Kiste ein");
    		kisten[i].laenge = Convert::ToInt32(Console::ReadLine());
    
    		kisten[i].aktiv = 1;
    		kisten[i].volumen = kisten[i].hoehe * kisten[i].breite * kisten[i].laenge; 
    		break;		
    		}
    		else
    			Console::WriteLine("Keine Kiste mehr frei");
    	}
    }
    
    Void anzeigen(kistenlager kisten[MAXKISTEN])
    {
    	Int32 nummer;
    	Console::WriteLine("Welche Kiste wollen sie Anzeigen? Geben sie eine Nummer von 1-100 ein!");
    	nummer = Convert::ToInt32(Console::ReadLine()) -1 ;
    	if(nummer <= 100 && nummer >= 0)
    	{
    	if(kisten[nummer].aktiv==1)
    	Console::WriteLine("Kistennummer: {0} > Höhe: {1},Breite: {2}, Länge: {3},Volumen: {4}",kisten[nummer].kistennummer,kisten[nummer].hoehe, kisten[nummer].breite, kisten[nummer].laenge, kisten[nummer].volumen);
    	else
    	Console::WriteLine("Kistennummer: {0} NICHT BELEGT",kisten[nummer].kistennummer);
    	}
    	else
    		Console::WriteLine("Inkorrekte Eingabe\n");
    }
    
    Void löschen(kistenlager kisten[MAXKISTEN])
    {
    	Int32 nummer;
    	Console::WriteLine("Welche Kiste wollen sie löschen? Geben sie eine Nummer von 1-100 ein!");
    	nummer = Convert::ToInt32(Console::ReadLine()) -1 ;
    
    	if(nummer <= 100 && nummer >= 0)
    	{
    	if(kisten[nummer].aktiv==0)
    		{
    			Console::WriteLine("Die Kiste ist bereits gelöscht");
    		}
    	if(kisten[nummer].aktiv==1)
    		{	
    			kisten[nummer].aktiv=0;
    			kisten[nummer].hoehe=0;
    			kisten[nummer].breite=0;
    			kisten[nummer].laenge=0;
    			kisten[nummer].volumen=0;
    			Console::WriteLine("Kistennummer: {0} GELÖSCHT",kisten[nummer].kistennummer);
    		}
    	}
    	else
    		Console::WriteLine("Inkorrekte Eingabe");
    
    }
    
    Void ändern(kistenlager kisten[MAXKISTEN])
    {
    		Int32 nummer;
    		Console::WriteLine("Welche Kiste wollen sie ändern? Geben sie eine Nummer von 1-100 ein!");
    		nummer = Convert::ToInt32(Console::ReadLine()) -1 ;
    		if(nummer <= 100 && nummer >= 0)
    	{
    		if(kisten[nummer].aktiv==1)
    		{
    		Console::WriteLine("Geben sie bitte die Höhe der Kiste ein");
    		kisten[nummer].hoehe = Convert::ToInt32(Console::ReadLine());
    
    		Console::WriteLine("Geben sie bitte die Breite der Kiste ein");
    		kisten[nummer].breite = Convert::ToInt32(Console::ReadLine());
    
    		Console::WriteLine("Geben sie bitte die Länge der Kiste ein");
    		kisten[nummer].laenge = Convert::ToInt32(Console::ReadLine());
    
    		kisten[nummer].volumen = kisten[nummer].hoehe * kisten[nummer].breite * kisten[nummer].laenge;
    		}
    		else
    			Console::WriteLine("Die Kiste existiert nicht");
    		}
    		else
    		Console::WriteLine("Inkorrekte Eingabe");
    
    }
    
    Void listAll(kistenlager kisten[MAXKISTEN])
    {
    for(Int32 i=0;i<MAXKISTEN;i++)
    	{
    		if(kisten[i].aktiv == 1)
    		Console::WriteLine("Kistennummer: {0} > Höhe: {1},Breite: {2}, Länge: {3},Volumen: {4}",kisten[i].kistennummer,kisten[i].hoehe, kisten[i].breite, kisten[i].laenge, kisten[i].volumen);
    		else
    		Console::WriteLine("Kistennummer: {0} NICHT BELEGT",kisten[i].kistennummer);
    	}
    
    }
    
    //Funktionsdeklarationen ENDE***************************************************************************
    
    //Hauptprogramm*******************************************************************************
    
    int main(array<System::String ^> ^args)
    {
    	Int32 switchvar = 0;
    	kistenlager kisten[MAXKISTEN];
    
    	//Alle Kistennummern auf 1-100 setzen, damit die erste Kiste nicht mit 0 angesprochen wird
    	//Status Aktiv auf 0 setzen um die Existenz der Kisten zu verwalten
    
    	for(Int32 i=0;i<MAXKISTEN;i++)
    		{
    			kisten[i].kistennummer=i+1;
    			kisten[i].aktiv=0;
    		}
    
    	//Auswahlmenü Schleife
    	while(switchvar!=6)
    	{
    
    		Console::WriteLine("[1] Kiste anlegen");
    		Console::WriteLine("[2] Alle Kisten auflisten");
    		Console::WriteLine("[3] Eine bestimmte Kiste auflisten");
    		Console::WriteLine("[4] Kiste löschen");
    		Console::WriteLine("[5] Kiste ändern");
    		Console::WriteLine("[6] Programm beenden\n");
    
    		switchvar = Convert::ToInt32(Console::ReadLine());
    	switch (switchvar)
    	{
    	case 1:
    		kisteAnlegen(kisten);
    		break;
    	case 2:
    	listAll(kisten);
    	break;
    	case 3:
    	anzeigen(kisten);
    	break;
    	case 4:
    	löschen(kisten);
    	break;
    	case 5:
    	ändern(kisten);
    	break;
    	case 6:
    	break;
    	default:
    		Console::WriteLine("Falsche Eingabe");
    	}
    	}
    
    }
    


  • Der Post ist im Onlinestudienzentrum gemeldet. Also bitte nehmt die Aufgabe nur als Lösungshilfe und kopiert sie nicht 🙂



  • Erstmal danke, aber ich wollte nur Tips, keinen Code.
    Hatte aber schon erste Ansaetze:)
    (Auch wenns nur 2 Funktionen waren)

    Btw:
    Würde ich den Code kopieren, schade ich mir nur selbst
    und es ist unfair anderen Gegenüber die das gleiche machen.
    Drum werd ich weitergrübeln.

    Aber nochmal danke für die herzliche Hilfestellung.:)

    PS:
    Mich wuerde aber mal interessieren wie du darauf kammst?
    Also, von der Struktur her...
    Weil ich aus den Heften 1-4 nicht wirklich schlau wurde...
    Bestimmte Befehle stehen da gar nicht drin-.-



  • Huhu,

    ich habe nun alle Befehle und die Struktuir die ich für den
    Code brauche, verstanden und bin jetzt soweit gekommen
    das ich nur noch 4 Fehler habe(von 32^^)...nur weil eine
    Klammer umgedreht war-.-

    Aber ich weis nicht was ich gegen die anderen Fehler machen
    kann.
    Kann viell. jemand helfen?

    Danke.

    Oh und nochwas:
    Wie kann ich die Code zeilen zahlen zur besseren Übersicht wieder
    einblenden?

    Die Fehler sind:

    .\Cpbs 4.cpp(61) : error C2143: syntax error : missing ')' before ';'
    .\Cpbs 4.cpp(72) : error C2146: syntax error : missing ';' before identifier 'AlleKisten'
    .\Cpbs 4.cpp(84) : error C2664: 'eingabe' : cannot convert parameter 1 from 'Lager' to 'Lager []'
    No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
    .\Cpbs 4.cpp(87) : error C2664: 'anzeigen' : cannot convert parameter 1 from 'Lager' to 'Lager []'
    No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

    #include "stdafx.h"
    
    using namespace System;
    
    const Int32 AlleKisten = 100;
    
    struct Lager
    {
        Int32 kistennummer;
        Int32 hoehe;
        Int32 laenge;
        Int32 breite;
        Int32 volumen;
    
    };
    
    //neue Kiste
    void eingabe(Lager Lagerraum[AlleKisten])
    {
    
    	for (Int32 i = 0; i < AlleKisten;i++)
    	{
    		if(Lagerraum[i].kistennummer != 0) 
    		{
    			Console::WriteLine("Bitte geben Sie die Kistenhoehe ein: ");
    			Lagerraum[i].hoehe = Convert::ToInt32(Console::ReadLine()); 
    
    			Console::WriteLine("Bitte geben Sie die Kistenbreite ein: ");
    			Lagerraum[i].breite = Convert::ToInt32(Console::ReadLine());
    
    			Console::WriteLine("Bitte geben Sie die Kistenlaenge ein: ");
    			Lagerraum[i].laenge = Convert::ToInt32(Console::ReadLine());
    
    			Lagerraum[i].volumen = Lagerraum[i].hoehe * Lagerraum[i].breite * Lagerraum[i].laenge;
    			 break;
    		}
    		else
    			Console::WriteLine("Keine Kiste mehr frei! ");
    	}	
    }
    
    void anzeigen(Lager Lagerraum[AlleKisten]) 
    { 
    	Console::WriteLine(); 
    	Console::WriteLine("\t Nr.\tLänge\tBreite\tHöhe\tVolumen"); 
    	Console::WriteLine("\t-------------------------------------------"); 
    	for(Int32 i = 0; i < AlleKisten; i++) 
    		{ 
    		if(Lagerraum[i].kistennummer != 0) 
    		Console::WriteLine(("\t {0}^\t{1}\t{2}\t{3}\t{4:N} m³)", Lagerraum[i].kistennummer, Lagerraum[i].laenge,Lagerraum[i].breite, Lagerraum[i].hoehe, Lagerraum[i].breite * Lagerraum[i].hoehe * Lagerraum[i].laenge); 
    		} 
    }
    
    int main(array<System::String ^> ^args)
    {
    
    	Int32 switchvar = 0; 
    	Lager Lagerraum AlleKisten;
    
    	while(switchvar!=2)
        {
    
            Console::WriteLine("[1] Kiste anlegen");
            Console::WriteLine("[2] Eine bestimmte Kiste auflisten");
    
            switchvar = Convert::ToInt32(Console::ReadLine());
        switch (switchvar)
        {
        case 1:
        eingabe(Lagerraum);
        break;
        case 2:
        anzeigen(Lagerraum);
        break;
        default:
            Console::WriteLine("Falsche Eingabe");
        }
      }
    }
    


  • Hi,

    eigentlich gibt dir der Debugger schon sehr hilfreiche Fehlermeldungen an die Hand, ma muss sie manchmal nur richtig deuten.

    .\Cpbs 4.cpp(61) : error C2143: syntax error : missing ')' before ';'
    

    Hier mekcert er das ihm eine ')' fehlt, Zeile 61 passt nicht ganz, der Fehler liegt darüber in Zeile 54.

    Die 3 anderen Fehler hängen mit Zeile 65 zusammen, wobei mich hier wundert das der Debugger erst in Zeile 72 Alarm schlägt er hätte sofort in Zeile 65 meckern müssen.

    So die fehlerhaften Zeilen hab ich dir nun genannt, die Fehler wirst du wohl selbst finden.

    Nyoko schrieb:

    Wie kann ich die Code zeilen zahlen zur besseren Übersicht wieder einblenden?

    In der IDE Menü Extras->Optionen, dort dann Text-Editor->Alle Sprachen, unter dem Unterpunkt 'Anzeigen' das erste Feld aktivieren.

    MfG
    Marco



  • Jap:)
    Die Fehlermeldungen sind mir eindeutig, nur seh ich
    die Fehler nicht.
    Ich meine, alle Klammern und Simikolons liegen korrekt.

    Aber das bekomm ich schon hin und vielen Dank für
    deine Hilfe:)

    Oh und eine weitere Sache die mich die ganze Zeit schon wundert:

    Ich kann manchmal bestimmte Projekte nicht öffnen und
    ich weis nicht warum, bzw. ich weis es doch aber ich kann
    es nicht äaendern.

    Das erste mal war es der Pfad, da musst ich komplett neu installieren.
    (Wo ich mit Cpbs anfing).
    Aber jetzt stimmt eigendlich alles und trotzdem kann ich 2-3 Projekte
    meistens nicht öffnen.
    Dann versuch ich meistens, andere im Ordner befindliche Dateien
    zu öffnen.
    Irgendwann klappt es dann auch wieder, dass ich diese Projekte öffnen
    kann.
    Woran "koennte" das liegen?
    (Es ist nichts verschoben oder umgestellt worden.
    Das einzige was ich mir vorstellen kann ist, dass mein System
    auf chinesisch gestellt ist.
    D.h. manche Codezeilen muss ich extra in das Unicode format bringen.)

    Gleiches Problem hatte ich mit VBA.Das ging auf meinem Rechner
    gar nicht^^.
    (Sollte es daran liegen: Nein, das System bleibt auf chinesisch/englisch/deutsch)

    Sry fuer soviel Text aber besser ausführlich als zu wenig.

    Danke:)

    PS: mist...ich lag richtig-.-
    Sollte aber nicht schlimm sein, da es im code eigendlich nur die
    Umlaute sind die stören.

    .\Cpbs 4.cpp(56) : warning C4566: character represented by universal-character-name '\u00E4' cannot be represented in the current code page (936)
    .\Cpbs 4.cpp(56) : warning C4566: character represented by universal-character-name '\u00F6' cannot be represented in the current code page (936)

    Omg hat sich erledigt...nach ewiger Suche hab ich alle Fehler gefunden-.-

    Der erste kam weil ich ein " " " hinter die Klammer gesetzt habe...
    Der 2 u.3 Feher kam weil ich hier "Lager Lagerraum [AlleKisten];"
    in der main die "[]" vergass-.-

    Bloede schlussligkeitsfehler...



  • Wenn du in Visual C++ die Zeile mit dem Fehler doppelklickst, springt der Cursor meist genau in die Zeile des Fehlers (bei solch kleinen Syntaxfehlern und kleinen Programmen).
    Natürlich musst du mit dem 1. vorkommenden Fehler beginnen, da die anderen Fehler meist aus Folge entstehen.

    Du hast dich ja immer selbst verbessert...

    Läuft dein Prog jetzt?

    Am besten stellst du alles auf Englisch, dadurch hast du am wenigsten Schwierigkeiten. Die Dokumentation kannst du ja (k.a. obs die in Chinesisch gibt)
    auf chinesisch nutzen.

    Die Pfade in:

    Extras -> Optionen -> Projekte und Projektmappen -> VC++ Verzeichnisse
    

    müssen die gleiche Bezeichnung haben wie die Pfade deiner Sprachversion.

    z.B.:
    C:.../Dokumente und Einstellungen/... deutsch
    C:.../documents and settings/... englisch



  • Huhu,

    der Code funktioniert soweit.
    Wie gesagt, es waren 2 kleine Fehler worauf sich dann
    nicht definierbare Fehler aufgebaut haben.

    Wegen der Sprache:
    Ich kann nur sehr wenig chinesisch, somit wird das ein
    Problem^^
    Aber das umstellen auf englisch ist eine gute Idee:)

    Ich werd für den restlichen Code noch 1-2 tage brauchen.

    Somit erstmal vielen Dank für deine Hilfe 🙂



  • huhu, ich nochmal....ich hab da jetzt ein gewaltiges Problem
    und weis nicht woran es liegt.

    http://img410.imageshack.us/my.php?image=code.jpg
    (sry die Bild anzeige funktioniert hier nicht )

    Die Kistennummer hat gewaltige Ausmasse^^
    Und ich bekomme zudem noch 2 mal die Meldung:
    "Keine Kiste mehr frei"
    obwohl das doch zur Laufzeit gespeichert werden
    soll-.,-
    Weis jemand Rat?
    Vielen Dank.

    /* ###################################################
    
    Einsendeaufgabe 4
    
    #################################################### */
    
    #include "stdafx.h"
    
    using namespace System;
    
    const Int32 AlleKisten = 100;
    
    struct Lager
    {
        Int32 kistennummer;
        Int32 hoehe;
        Int32 laenge;
        Int32 breite;
        Int32 volumen;
    
    };
    
    //Neue Kiste erstellen
    void eingabe(Lager Lagerraum[AlleKisten])
    {
    
    	for (Int32 i = 0; i < AlleKisten;i++)
    	{
    		if(Lagerraum[i].kistennummer != 0) 
    		{
    			Console::WriteLine("Bitte geben Sie die Kistenhoehe ein: ");
    			Lagerraum[i].hoehe = Convert::ToInt32(Console::ReadLine()); 
    
    			Console::WriteLine("Bitte geben Sie die Kistenbreite ein: ");
    			Lagerraum[i].breite = Convert::ToInt32(Console::ReadLine());
    
    			Console::WriteLine("Bitte geben Sie die Kistenlaenge ein: ");
    			Lagerraum[i].laenge = Convert::ToInt32(Console::ReadLine());
    
    			Lagerraum[i].volumen = Lagerraum[i].hoehe * Lagerraum[i].breite * Lagerraum[i].laenge;
    			 break;
    		}
    		else
    			Console::WriteLine("Keine Kiste mehr frei! ");
    	}	
    }
    
    //eine Kiste anzeigen
    void anzeigen(Lager Lagerraum[AlleKisten]) 
    { 
    	Int32 ID;
    
    	Console::WriteLine("Welche Kiste von 1-100 soll angezeigt werden".");
    	ID = Convert::ToInt32(Console::ReadLine()) ;
    
    	for (Int32 i = 0; i < AlleKisten;i++)
    	{
    		if(Lagerraum[i].kistennummer != 0)  
    		{ 
    		Console::WriteLine(("Kistennummer: {0} > Hoehe: {1},Breite: {2}, Laenge: {3},Volumen: {4}"),Lagerraum[i].kistennummer,Lagerraum[i].hoehe, Lagerraum[i].breite, Lagerraum[i].laenge, Lagerraum[i].volumen);
    		break;
    		} 
    		else
            Console::WriteLine("Inkorrekte Eingabe\n");
    	}
    }
    
    void loeschen (Lager Lagerraum[AlleKisten])
    {
        Int32 ID;
        Console::WriteLine("Welche Kiste von 1-100 soll geloescht werden");
        ID = Convert::ToInt32(Console::ReadLine()); 
    
    	if(ID <= 100 && ID >= 0) 
    	{
    
                Lagerraum[ID].hoehe=0;
                Lagerraum[ID].breite=0;
                Lagerraum[ID].laenge=0;
                Lagerraum[ID].volumen=0;
                Console::WriteLine("Kistennummer: {0} geloescht",Lagerraum[ID].kistennummer);
    
        }
        else
            Console::WriteLine("Falsche Eingabe");
    
    } 
    
    void aendern (Lager Lagerraum[AlleKisten])
    {
            Int32 ID;
            Console::WriteLine("Welche Kiste von 1-100 soll geaendert werden");
            ID = Convert::ToInt32(Console::ReadLine()) ;
    
            if(ID <= 100 && ID >= 0)
            {
    		  Console::WriteLine("Geben sie bitte die hoehe der Kiste ein");
    		  Lagerraum[ID].hoehe = Convert::ToInt32(Console::ReadLine());
    
    		  Console::WriteLine("Geben sie bitte die Breite der Kiste ein");
    		  Lagerraum[ID].breite = Convert::ToInt32(Console::ReadLine());
    
    		  Console::WriteLine("Geben sie bitte die laenge der Kiste ein");
    		  Lagerraum[ID].laenge = Convert::ToInt32(Console::ReadLine());
    
    		  Lagerraum[ID].volumen = Lagerraum[ID].hoehe * Lagerraum[ID].breite * Lagerraum[ID].laenge;
    		}
    		else
    		Console::WriteLine("Die Kiste existiert nicht");
    
    } 
    
    int main(array<System::String ^> ^args)
    {
    
    	Int32 switchvar = 0; 
    	Lager Lagerraum [AlleKisten];
    
    	while(switchvar!=4)
        {
    
            Console::WriteLine("[1] Kiste anlegen");
            Console::WriteLine("[2] Eine bestimmte Kiste auflisten");
    		Console::WriteLine("[3] Eine Kiste loeschen");
    		Console::WriteLine("[4] Eine Kiste aendern");
    
            switchvar = Convert::ToInt32(Console::ReadLine());
        switch (switchvar)
        {
        case 1:
        eingabe(Lagerraum);
        break;
        case 2:
        anzeigen(Lagerraum);
        break;
    	case 3:
    	loeschen(Lagerraum);
    	break;
    	case 4:
    	aendern(Lagerraum);
    	break;
        default:
            Console::WriteLine("Falsche Eingabe");
        }
      }
    }
    


  • Hi du!

    Bei dir haben sich erstmal folgende Fehler eingeschlichen:

    In Zeile 57: Der Punkt muss vor das " und das 2. " muss weg!

    Console::WriteLine("Welche Kiste von 1-100 soll angezeigt werden".");
    

    Also so:

    Console::WriteLine("Welche Kiste von 1-100 soll angezeigt werden.");
    

    Das müsste dir aber der Compiler als Fehler anzeigen!

    Außerdem habe ich festgestellt, dass die Kistennummer aller Kisten immer gleich sind! Das liegt daran, dass ein zufälliger Wert für deine Kisten ID verwendet wird. Und dass liegt daran, dass du in deiner Funktion "eingabe" gar keine Kistennummer vergibts.

    OH OH und da sehe ich gerade dass du in der Funktion "anzeigen" den Wert für ID zwar einliest, aber ihn dann gar nicht verwendest 🤡

    Dein Programm weis also nicht welche ID gemeint ist.
    Versuche die ID in allen Funktion mitzuteilen!

    -Vergebe zuerst die IDs in "eingabe"
    -Lese dann in "anzeigen" die jeweilige ID vom Benutzer ein(hast du ja schon) und gibt diese dann an das Array weiter!

    Hoffe, ich konnte dir wieder helfen! (P.S.: Ich hänge gerade bei der Lösung von CPBS6 😃 )



  • Huhu,

    So viele Ils begeisterte*g*

    Fehler Nr. 1 hab ich schon erkannt gehabt.
    (hab blos vergessen vorm posten zu fixen-.-)

    Danke für die umfangreiche Anwort:)
    Jetzt kenn ich das Problem aber nicht wie
    ich es bewaeltigen koennte.

    In der Schleife mit hochzaehlen?

    lol-.-Da hab ich sogar richtig gefragt.
    Problem geloest.
    ____

    for(Int32 i=0;i<AlleKisten;i++)
            {
                Lagerraum[i].kistennummer=i+1;
    
            }
    

    -->in die Main setzen und das Problem loest sich in luft auf.

    Gl fuer Cpbs 6:)

    PS:Hast du zufaellig Vba 12 und 13 bekommen?
    Wenn ja, ist das nicht i-wie gemein gegenueber
    anderen?
    Ich kenne welche im selben Lehrgang, die jene
    Hefte nicht haben.
    Ich brauchte fuer Vba 12 über 1 Monat-.-
    VBA 13 mach ich ganz zum schluss...:p

    ________________________________________

    Letztes Problem:

    Wenn ich alle Kisten auflisten möchte, bekomme ich
    wieder Zufallszahlen ausgegeben.
    Auch mit Fehlerabfangroutine.

    Ist es möglich, ohne gleich jede Kiste auf 0
    zu setzen, nur die Kisten anzuzeigen die
    gerade im Gebrauch sind?
    Wie koennte man das rausfinden?

    Danke 💡



  • Nyoko schrieb:

    huhu, ich nochmal....ich hab da jetzt ein gewaltiges Problem
    und weis nicht woran es liegt.

    http://img410.imageshack.us/my.php?image=code.jpg
    (sry die Bild anzeige funktioniert hier nicht )

    Die Kistennummer hat gewaltige Ausmasse^^
    Und ich bekomme zudem noch 2 mal die Meldung:
    "Keine Kiste mehr frei"
    obwohl das doch zur Laufzeit gespeichert werden
    soll-.,-
    Weis jemand Rat?
    Vielen Dank.

    /* ###################################################
    
    Einsendeaufgabe 4
    
    #################################################### */
    
    #include "stdafx.h"
    
    using namespace System;
    
    const Int32 AlleKisten = 100;
    
    struct Lager
    {
        Int32 kistennummer;
        Int32 hoehe;
        Int32 laenge;
        Int32 breite;
        Int32 volumen;
    	
    };
    
    //Neue Kiste erstellen
    void eingabe(Lager Lagerraum[AlleKisten])
    {
    
    	for (Int32 i = 0; i < AlleKisten;i++)
    	{
    		if(Lagerraum[i].kistennummer != 0) 
    		{
    			Console::WriteLine("Bitte geben Sie die Kistenhoehe ein: ");
    			Lagerraum[i].hoehe = Convert::ToInt32(Console::ReadLine()); 
    
    			Console::WriteLine("Bitte geben Sie die Kistenbreite ein: ");
    			Lagerraum[i].breite = Convert::ToInt32(Console::ReadLine());
    
    			Console::WriteLine("Bitte geben Sie die Kistenlaenge ein: ");
    			Lagerraum[i].laenge = Convert::ToInt32(Console::ReadLine());
    		
    
    			Lagerraum[i].volumen = Lagerraum[i].hoehe * Lagerraum[i].breite * Lagerraum[i].laenge;
    			 break;
    		}
    		else
    			Console::WriteLine("Keine Kiste mehr frei! ");
    	}	
    }
    
    //eine Kiste anzeigen
    void anzeigen(Lager Lagerraum[AlleKisten]) 
    { 
    	Int32 ID;
    
    	Console::WriteLine("Welche Kiste von 1-100 soll angezeigt werden".");
    	ID = Convert::ToInt32(Console::ReadLine()) ;
    
    	for (Int32 i = 0; i < AlleKisten;i++)
    	{
    		if(Lagerraum[i].kistennummer != 0)  
    		{ 
    		Console::WriteLine(("Kistennummer: {0} > Hoehe: {1},Breite: {2}, Laenge: {3},Volumen: {4}"),Lagerraum[i].kistennummer,Lagerraum[i].hoehe, Lagerraum[i].breite, Lagerraum[i].laenge, Lagerraum[i].volumen);
    		break;
    		} 
    		else
            Console::WriteLine("Inkorrekte Eingabe\n");
    	}
    }
    
    void loeschen (Lager Lagerraum[AlleKisten])
    {
        Int32 ID;
        Console::WriteLine("Welche Kiste von 1-100 soll geloescht werden");
        ID = Convert::ToInt32(Console::ReadLine()); 
    
    	if(ID <= 100 && ID >= 0) 
    	{
    		
                Lagerraum[ID].hoehe=0;
                Lagerraum[ID].breite=0;
                Lagerraum[ID].laenge=0;
                Lagerraum[ID].volumen=0;
                Console::WriteLine("Kistennummer: {0} geloescht",Lagerraum[ID].kistennummer);
            
        }
        else
            Console::WriteLine("Falsche Eingabe");
    
    } 
    
    void aendern (Lager Lagerraum[AlleKisten])
    {
            Int32 ID;
            Console::WriteLine("Welche Kiste von 1-100 soll geaendert werden");
            ID = Convert::ToInt32(Console::ReadLine()) ;
    
            if(ID <= 100 && ID >= 0)
            {
    		  Console::WriteLine("Geben sie bitte die hoehe der Kiste ein");
    		  Lagerraum[ID].hoehe = Convert::ToInt32(Console::ReadLine());
           
    		  Console::WriteLine("Geben sie bitte die Breite der Kiste ein");
    		  Lagerraum[ID].breite = Convert::ToInt32(Console::ReadLine());
           
    		  Console::WriteLine("Geben sie bitte die laenge der Kiste ein");
    		  Lagerraum[ID].laenge = Convert::ToInt32(Console::ReadLine());
    
    		  Lagerraum[ID].volumen = Lagerraum[ID].hoehe * Lagerraum[ID].breite * Lagerraum[ID].laenge;
    		}
    		else
    		Console::WriteLine("Die Kiste existiert nicht");
               
    } 
    
    			
    int main(array<System::String ^> ^args)
    {
    
    	Int32 switchvar = 0; 
    	Lager Lagerraum [AlleKisten];
    
    	while(switchvar!=4)
        {
    
            Console::WriteLine("[1] Kiste anlegen");
            Console::WriteLine("[2] Eine bestimmte Kiste auflisten");
    		Console::WriteLine("[3] Eine Kiste loeschen");
    		Console::WriteLine("[4] Eine Kiste aendern");
    
            switchvar = Convert::ToInt32(Console::ReadLine());
        switch (switchvar)
        {
        case 1:
        eingabe(Lagerraum);
        break;
        case 2:
        anzeigen(Lagerraum);
        break;
    	case 3:
    	loeschen(Lagerraum);
    	break;
    	case 4:
    	aendern(Lagerraum);
    	break;
        default:
            Console::WriteLine("Falsche Eingabe");
        }
      }
    }
    

    Schau doch nochmal in Heft 3 und kuck dir die While Schleife an
    da muss doch bei dir switchvar++;
    hin sonst zählt er doch nicht richtig
    Grus Heinerich



  • Mhm da hast du recht.
    Hab es geändert aber anscheined ging es auch ohne.

    Und mein Problem lösst das leider nicht,
    aber danke fuer den tip:)



  • Schau dir nochmal auf der 2. Postseite meine Lösung an. Habe jetzt die Bestätigung vom Fernlehrer dass alles richtig gelöst ist. (1,0 halt)

    Zerlege deine Fragestellung in kleine Teilprobleme und schau mal worauf du dir selbst eine Antwort geben kannst.

    Wenn du immer vor der gesammten Aufgabe sitzt und denkst "Wie kann das nur gehen?" siehst du vor lauter Bäumen den Wald nicht.

    Gehe in kleinen Schritten an deine Aufgabe heran.
    Überlege dir GENAU welche Variable, welches Array WAS speichert.
    Dann wirst du feststellen woher die riesen Zahlen kommen.

    Darum geht es ja beim Programmieren... Lösungen für Probleme zu finden.

    Wenn ich dir jetzt die Lösung für dein Array-Problem poste, erkennst du natürlich gleich den Fehler... aber dann hast du trotzdem nichts verstanden.
    (Habe gestern von 24 Uhr bis 4 Uhr morgens an der 6.2 gesessen ... und BUMM.. plötzlich spucken die Synapsen alles aus ... und es war doch ganz einfach :))

    OK.. viel bla bla..

    Poste mir mal bitte genau den Quellcode den du gerade vor dir liegen hast.
    Dann schreib ich dir zum Helfen in den Code was gerade genau im Programm passiert. Dann übersetzt du es bei dir und erkennst vielleicht dann die Fehler/Lücken.

    mfg



  • Ja das war anfangs so^^
    Aber ich hab mir angewoehnt alles schritt für schritt
    durchzugehen.

    Sämtliche Schritte sind mir bewusst und auch deren
    auswirkungen.Danke für das Angebot:)
    Aber da ich viell. was noch nicht kenne
    hier der Code:)

    Btw:Gz zu deiner 1^^

    Wobei ich aber doch Arrays schon habe?...
    Die Feldgrenzen ueberschreite ich auch nicht.

    Edit:Nun hatte ich die idee zu schreiben:

    if(Lagerraum[i].kistennummer != 0 && Lagerraum[i].volumen !0) //usw
    

    das klappt zwar aber trotzdem werden einige Kisten immer
    noch falsch erkannt.

    /* ###################################################
    
    Einsendeaufgabe 4
    
    #################################################### */
    
    #include "stdafx.h"
    
    using namespace System;
    
    const Int32 AlleKisten = 100;
    
    struct Lager
    {
        Int32 kistennummer;
        Int32 hoehe;
        Int32 laenge;
        Int32 breite;
        Int32 volumen;
    
    };
    
    //Neue Kiste erstellen
    void eingabe(Lager Lagerraum[AlleKisten])
    {
    
    	for (Int32 i = 0; i < AlleKisten;i++)
    	{
    		if(Lagerraum[i].kistennummer != 0) 
    		{
    			Console::WriteLine("Bitte geben Sie die Kistenhoehe ein: ");
    			Lagerraum[i].hoehe = Convert::ToInt32(Console::ReadLine()); 
    
    			Console::WriteLine("Bitte geben Sie die Kistenbreite ein: ");
    			Lagerraum[i].breite = Convert::ToInt32(Console::ReadLine());
    
    			Console::WriteLine("Bitte geben Sie die Kistenlaenge ein: ");
    			Lagerraum[i].laenge = Convert::ToInt32(Console::ReadLine());
    
    			Lagerraum[i].volumen = Lagerraum[i].hoehe * Lagerraum[i].breite * Lagerraum[i].laenge;
    			 break;
    		}
    		else
    			Console::WriteLine("Keine Kiste mehr frei! ");
    	}	
    }
    
    //eine Kiste anzeigen
    void anzeigen(Lager Lagerraum[AlleKisten]) 
    { 
    	Int32 ID;
    
    	Console::WriteLine("Welche Kiste von 1-100 soll angezeigt werden");
    	ID = Convert::ToInt32(Console::ReadLine()) ;
    
    	for (Int32 i = 0; i < AlleKisten;i++)
    	{
    		if(Lagerraum[i].kistennummer != 0)  
    		{ 
    
    		Console::WriteLine(("Kistennummer: {0} > Hoehe: {1},Breite: {2}, Laenge: {3},Volumen: {4}"),Lagerraum[i].kistennummer,Lagerraum[i].hoehe, Lagerraum[i].breite, Lagerraum[i].laenge, Lagerraum[i].volumen);
    		break;
    		} 
    		else
            Console::WriteLine("Inkorrekte Eingabe\n");
    	}
    }
    
    void loeschen (Lager Lagerraum[AlleKisten])
    {
        Int32 ID;
        Console::WriteLine("Welche Kiste von 1-100 soll geloescht werden");
        ID = Convert::ToInt32(Console::ReadLine()); 
    
    	if(ID <= 100 && ID >= 0) 
    	{
    
                Lagerraum[ID].hoehe=0;
                Lagerraum[ID].breite=0;
                Lagerraum[ID].laenge=0;
                Lagerraum[ID].volumen=0;
                Console::WriteLine("Kistennummer: {0} geloescht",Lagerraum[ID].kistennummer);
    
        }
        else
            Console::WriteLine("Falsche Eingabe");
    
    } 
    
    void aendern (Lager Lagerraum[AlleKisten])
    {
            Int32 ID;
            Console::WriteLine("Welche Kiste von 1-100 soll geaendert werden");
            ID = Convert::ToInt32(Console::ReadLine()) ;
    
            if(ID <= 100 && ID >= 0)
            {
    		  Console::WriteLine("Geben sie bitte die hoehe der Kiste ein");
    		  Lagerraum[ID].hoehe = Convert::ToInt32(Console::ReadLine());
    
    		  Console::WriteLine("Geben sie bitte die Breite der Kiste ein");
    		  Lagerraum[ID].breite = Convert::ToInt32(Console::ReadLine());
    
    		  Console::WriteLine("Geben sie bitte die laenge der Kiste ein");
    		  Lagerraum[ID].laenge = Convert::ToInt32(Console::ReadLine());
    
    		  Lagerraum[ID].volumen = Lagerraum[ID].hoehe * Lagerraum[ID].breite * Lagerraum[ID].laenge;
    		}
    		else
    		Console::WriteLine("Die Kiste existiert nicht");
    
    } 
    
    Void Liste(Lager Lagerraum[AlleKisten])
    {
    
    	for(Int32 i=0;i<AlleKisten;i++)
        {
    		if(Lagerraum[i].kistennummer != 0)
    		{
    		Console::WriteLine("Kistennummer: {0} > Hoehe: {1},Breite: {2}, Laenge: {3},Volumen: {4}",Lagerraum[i].kistennummer,Lagerraum[i].hoehe, Lagerraum[i].breite, Lagerraum[i].laenge, Lagerraum[i].volumen);	
    		}
    		else
            Console::WriteLine("Kistennummer: {0} nicht belegt! ",Lagerraum[i].kistennummer);
    	}
    } 
    
    int main(array<System::String ^> ^args)
    {
    
    	Int32 switchvar = 0; 
    	Lager Lagerraum [AlleKisten];
    
    	for(Int32 i=0;i<AlleKisten;i++)
            {
                Lagerraum[i].kistennummer=i+1;
            } 
    
    	while(switchvar!=5)
        {
    
            Console::WriteLine("[1] Kiste anlegen");
            Console::WriteLine("[2] Eine bestimmte Kiste auflisten");
    		Console::WriteLine("[3] Eine Kiste loeschen");
    		Console::WriteLine("[4] Eine Kiste aendern");
    		Console::WriteLine("[5] Alle Kisten anzeigen");
    
            switchvar = Convert::ToInt32(Console::ReadLine());
        switch (switchvar)
        {
        case 1:
        eingabe(Lagerraum);
        break;
        case 2:
        anzeigen(Lagerraum);
        break;
    	case 3:
    	loeschen(Lagerraum);
    	break;
    	case 4:
    	aendern(Lagerraum);
    	break;
    	case 5:
    	Liste (Lagerraum);
    	break;
        default:
            Console::WriteLine("Falsche Eingabe");
    
    		switchvar++;
        }
      }
    }
    

Anmelden zum Antworten