Noch mal Lagerverwaltung



  • Hallo Leute!

    Mein bis jetzt entstandener Code:

    /*############################################################################

    Einsendeaufgabe 4

    ############################################################################*/

    #include "stdafx.h"

    using namespace System;

    struct kiste
    {
    Int32 artikel_Nr;
    Double laenge;
    Double breite;
    Double hoehe;
    Double volumen;
    };

    /###################### Funktion eingabe() ############################/

    kiste eingabe()
    {
    kiste maße;

    Console::WriteLine("Jetzt gib entlich eine Kiste ein!");

    Console::Write("Länge: \n");
    maße.laenge = Convert::ToDouble(Console::ReadLine());

    Console::Write("Breite: \n");
    maße.breite = Convert::ToDouble(Console::ReadLine());

    Console::Write("Höhe: \n");
    maße.hoehe = Convert::ToDouble(Console::ReadLine());

    return maße;
    }

    /##################### Funktion Volumenberechnung() #####################/

    //kiste volumen(kiste maße)
    //{
    // kiste wert;
    //
    // wert = maße.laenge * maße.breite * maße.hoehe;
    //
    // return wert;
    //}

    int main(array<System::String ^> ^args)
    {
    //kiste lager[100];

    Int32 auswahl;

    Console::WriteLine("Bitte geben Sie die entsprechende Nummer aus dem Menü ein.\n\n");

    Console::WriteLine("1. Eingabe\n");
    Console::WriteLine("2. Ausgabe\n");
    Console::WriteLine("3. Ändern\n");
    Console::WriteLine("4. Löschen\n");
    Console::WriteLine("5. Listen Ausgabe\n");
    Console::WriteLine("6. Programm Ende\n");

    auswahl=Convert::ToInt32(Console::ReadLine());

    switch ( auswahl )
    {
    case 1:

    kiste eingabe();

    break;

    case 2:

    //ausgabe();

    Console::WriteLine("Test Ausgabe");

    break;

    case 3:

    //aendern();

    Console::WriteLine("Test Ändern");

    break;

    case 4:

    //loeschen();

    Console::WriteLine("Test Löschen");

    break;

    case 5:

    //liste();

    Console::WriteLine("Test Lisenausgabe");

    break;

    case 6:

    Console::WriteLine("Test Ende");

    /*ende();

    Console::Read();

    return 0;*/

    break;

    default:

    Console::WriteLine("Diese Aktion steht nicht zur Verfügung!");

    }

    Console::ReadKey();

    return 0;
    }

    Fehlermeldung:

    1>------ Erstellen gestartet: Projekt: Aufgabe 4, Konfiguration: Debug Win32 ------
    1> Aufgabe 4.cpp
    1> Aufgabe 4.vcxproj -> C:\Users\Lehwald\Desktop\C++_CLI\CPBS 4C\Lektion 4\Aufgabe 4\Debug\Aufgabe 4.exe
    ========== Erstellen: 1 erfolgreich, Fehler bei 0, 0 aktuell, 0 übersprungen ==========

    Der Funktionsaufruf "kiste eingabe" funktioniert so nicht. Hat jemand eine leise Ahnung warum???? 😞 Programm läßt sich compilieren, aber die Funktion wird nicht angezeigt, wenn ich die 1 im Auswahlmenü eingebe.

    Wenn ich alles, bis auf die Ausgabe (Jetzt gib endlich eine Kiste ein) lösche und void davor angeben, dann wird die Funktion angezeigt.

    Meine Struktur soll in ein Feld gespeichert oder abgelegt werden. Aber soweit bin ich noch nicht. Möchte erst die Funktion aufgerufen bekommen bevor ich weiter bastele.

    Lieben Dank für Eure Hilfe.

    champman



  • Ich würde ja versuchen, den Rückgabewert der Funktion weiterzuverarbeiten - ala kiste k = eingabe(); .
    (in C++ wäre eine Angabe ala kiste eingabe(); keine Anweisung, sondern eine Funktionsdeklaration)

    PS: sfds



  • Das ist aber kein C# o.o''


  • Administrator

    1. Falsches Forum, das ist C++/CLI, ich verschiebe dich gleich.
    2. Benutze bitte [cli] Tags für deinen Code und rück ihn auch anständig ein.

    Grüssli



  • Dieser Thread wurde von Moderator/in Dravere aus dem Forum C# und .NET in das Forum C++/CLI mit .NET verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hallo !

    ich würde auch gerne so ein programm schreiben (nur nicht mit kisten)
    aber das ganze funktioniert ja nur im runtime modus oder ? wenn das progg beendet wird dann gehen die daten verloren oder ?

    kann man das irgendwie ändern ? (kla aber wie ? ^^)

    mfg



  • Auf ein Neues!!

    Sorry, da hab ich gestern Abend wohl schon gepennt.

    Hier noch mal der Code, diesmal eingerückt:

    /*############################################################################
    
    	Einsendeaufgabe 4
    
    ############################################################################*/
    
    #include "stdafx.h"
    
    using namespace System;
    
    struct kiste
    {
    	Int32 artikel_Nr;
    	Double laenge;
    	Double breite;
    	Double hoehe;
    	Double volumen;
    };
    
    /*######################	Funktion eingabe()	############################*/
    
    kiste eingabe()
    {
    	kiste maße;
    
    	Console::WriteLine("Jetzt gib entlich eine Kiste ein!");
    
    	Console::Write("Länge:	\n");
    	maße.laenge = Convert::ToDouble(Console::ReadLine());
    
    	Console::Write("Breite:	\n");
    	maße.breite = Convert::ToDouble(Console::ReadLine());
    
    	Console::Write("Höhe:	\n");
    	maße.hoehe = Convert::ToDouble(Console::ReadLine());
    
    	return maße;
    }
    
    /*#####################	Funktion Volumenberechnung()	#####################*/
    
    //kiste volumen(kiste maße)
    //{
    //	kiste wert;
    //
    //	wert = maße.laenge * maße.breite * maße.hoehe;
    //
    //	return wert;
    //}
    
    int main(array<System::String ^> ^args)
    {
    	//kiste lager[100];
    
    	Int32 auswahl;
    
        Console::WriteLine("Bitte geben Sie die entsprechende Nummer aus dem Menü ein.\n\n");
    
    	Console::WriteLine("1. Eingabe\n");
    	Console::WriteLine("2. Ausgabe\n");
    	Console::WriteLine("3. Ändern\n");
    	Console::WriteLine("4. Löschen\n");
    	Console::WriteLine("5. Listen Ausgabe\n");
    	Console::WriteLine("6. Programm Ende\n");
    
    	auswahl=Convert::ToInt32(Console::ReadLine());
    
    	switch ( auswahl )
    	{
    		case 1:
    
    			kiste eingabe();   //Warum wird die Funktion nicht angezeigt, wenn ich 1 wähle?
    
    			break;
    
    	case 2:
    
    		//ausgabe();
    
    		Console::WriteLine("Test Ausgabe");
    
    		break;
    
    	case 3:
    
    		//aendern();
    
    		Console::WriteLine("Test Ändern");
    
    		break;
    
    	case 4:
    
    		//loeschen();
    
    		Console::WriteLine("Test Löschen");
    
    		break;
    
    	case 5:
    
    		//liste();
    
    		Console::WriteLine("Test Lisenausgabe");
    
    		break;
    
    	case 6:
    
    		Console::WriteLine("Test Ende");
    
    		/*ende();
    
    		Console::Read();
    
    		return 0;*/
    
    		break;
    
    	default:
    
    		Console::WriteLine("Diese Aktion steht nicht zur Verfügung!");
    
    	}
    
    	Console::ReadKey();
    
        return 0;
    }
    

    Tolle Sache mit der Code-Auswahl! 😃

    Das ist meine Meldung nach dem compilieren:

    1>------ Erstellen gestartet: Projekt: Aufgabe 4, Konfiguration: Debug Win32 ------
    1> Aufgabe 4.cpp
    1> Aufgabe 4.vcxproj -> C:\Users\?\Desktop\C++_CLI\CPBS 4C\Lektion 4\Aufgabe 4\Debug\Aufgabe 4.exe
    ========== Erstellen: 1 erfolgreich, Fehler bei 0, 0 aktuell, 0 übersprungen ==========

    kiste eingabe() soll ja auch eine Deklaration der Funktion sein, weil die Funktion ja bekannt sein muss bevor ich sie aufrufe. Weiterverarbeitung sollte später dann passieren. Im Moment frage ich mich nur, warum die Eingabe nicht angezeigt wirt.

    Lieben Dank

    champman



  • switch ( auswahl ) {
       case 1: 
          kiste eingabe();   //Warum wird die Funktion nicht angezeigt, wenn ich 1 wähle?
    

    Weil dies eine Funktionsdeklaration ist?!

    Siehe CStoll Post.



  • Lieben Dank Zeus

    Habe das schon in einem anderen Forum mitgeteilt bekommen, aber trotzdem noch mal einig Fragen zum besseren Verstehen.

    Ist es so, dass ich eine Funktion, die sich auf meine Struktur bezieht genauso aufrufe, als wenn es eine Funktion wäre, die mit void, int oder double deklariert wurde?

    Wenn ich die Funktion "kiste eingabe()" nur mit "eingabe()" aufrufe, dann erscheinen meine Fragen zum Eingeben der Maße.

    Lieben Dank, werde mich beim nächsten Hänger sicher wieder melden.

    champman



  • Ja.

    kiste k =  eingabe();
    
    int i = calc();
    

    nur void ist anders:

    doit();
    


  • Hallo Leute,

    Habe jetzt rausgefunden, wie ich meine Struktur in einer Liste ausgeben kann. Problem, meine Double-Werte Höhe, Breite, Länge zeigt es mir nicht an.

    Hier mein Probecode:

    #include "stdafx.h"
    
    using namespace System;
    
    // Globale Struktur
    
    struct kiste
    {
    	Double hoehe;
    	Double breite;
    	Double laenge;
    };
    
    // Funktione eingeben
    
    kiste eingabe(Int32 artikelNr)
    {
    	kiste groesse;
    
    	Console::WriteLine("ArtikelNr.:	{0}",artikelNr);
    	//artikelNr = Convert::ToInt32(Console::ReadLine());
    	Console::WriteLine();
    	Console::WriteLine();
    
    	Console::Write("Höhe:	");
    	groesse.hoehe = Convert::ToDouble(Console::ReadLine());
    	Console::WriteLine();
    
    	Console::Write("Breite:	");
    	groesse.breite = Convert::ToDouble(Console::ReadLine());
    	Console::WriteLine();
    
    	Console::Write("Länge:	");
    	groesse.laenge = Convert::ToDouble(Console::ReadLine());
    	Console::WriteLine();
    
    	return groesse;
    }
    
    Double volumen(kiste groesse)
    {
    	Double wert;
    
    	wert = groesse.hoehe + groesse.breite + groesse.laenge;
    
    	return wert;
    }
    
    int main(array<System::String ^> ^args)
    {
    	kiste lager[5];
    
    	// Einlesen der Daten über Funktion Eingabe
    
    	for  ( Int32 artikelNr = 0; artikelNr < 5; artikelNr++ )
    		lager[artikelNr] = eingabe(artikelNr + 1 );
    
    	// Funktion Volumenberechnung und Listenausgabe.
    
    	Console::WriteLine("  Arikel-Nr.   |  Höhe    |  Breite   |  Länge   |  Volumen   ");
    	Console::WriteLine("************************************************************* ");
    
    // for soll eigentlich so in der Ausgabe stehen
    // Console::WriteLine("         {0}         {1}        {2}        {3}       {4}
    // Bekomme So aber meine Double-Werte nicht ausgegen
    
    	for ( Int32 artikelNr = 0; artikelNr < 5 ; artikelNr++ )
    		Console::WriteLine("     {0}                                          {1}       \n"
    		                     "-----------------------------------------------------------",
    	artikelNr + 1, volumen(lager[artikelNr]));
    
    	Console::Read();
    
        return 0;
    }
    

    Jemand eine kleine Ahnung wie ich das machen kann? Sollte doch funktionieren, denn ich habe ja deswegen eine Struktur erstellt. Vielmehr mit einer Struktur sollte das möglich sein. Oder habe ich etwas falsch verstanden?

    Danke für Eure Hilfe

    champman



  • Moin !
    ich mache zur übung ein ähnliches prgramm

    würde gerne wissen, mit welcher funktion man nach einer bestimmten kisten suchen kann. und das ganze prog dient nur im runtime modus oder ?

    mfg


Anmelden zum Antworten