Warum kann ich in C++/CLI Lehrgang: Lagerverwaltung nicht antworten?



  • Hallo Leute.

    Habe Frage zu meiner Lagerverwaltung und weil ich kein Moderator bin, kann ich diese nicht mehr im angelegten Thema stellen. Die letzten Antworten wurden eben in diesen Ordner verschoben (C++/CLI Lehrgang: Lagerverwaltung).

    Warum??

    Also hier meine neue Farge. Warum läuft meine Funktion "Engabe", wenn ich die Variable num auf 1 (

    Int32 num = 1)
    

    und wenn ich sie nicht initialisiere oder auf Null setze (

    Int32 num = 0)
    

    nicht?

    Hier mein Code. Ende, Liste und Eingabe sind erst fertig.

    #include "stdafx.h"
    
    using namespace System;
    
    struct kiste
    {
    	Int32 art_Nr;
    	Double laenge;
    	Double breite;
    	Double hoehe;
    };
    
    Void eingabe(kiste eingeben[100])
    {
    	Int32 num = 1;
    
    		//eingeben[num].art_Nr = num;
    	while((num != 0) && (num <= 99))
    	{
    		Console::Write("Artikelnr.:	");
    		num = Convert::ToInt32(Console::ReadLine());
    		Console::WriteLine("\n\n");
    
    		if(num == 0)
    		{
    			Console::WriteLine("Falsche Nummer eingegeben.\n\n");
    			return;
    		}
    
    		if(num != 0)
    		{
    			for(Int32 i = 0; i < 99; i++)			
    				if(eingeben[num].art_Nr == num)
    				{
    					Console::WriteLine("Artikel ist schon vorhanden.\n\n");
    					return;
    				}
    		}
    
    		Console::Write("Länge:	");
    		eingeben[num].laenge = Convert::ToDouble(Console::ReadLine());
    		Console::WriteLine();
    		Console::Write("Breite:	");
    		eingeben[num].breite = Convert::ToDouble(Console::ReadLine());
    		Console::WriteLine();
    		Console::Write("Höhe:	");
    		eingeben[num].hoehe = Convert::ToDouble(Console::ReadLine());
    		Console::WriteLine("\n");
    
    	}
    
    }
    
    Double volumen(kiste maße)
    {
    	Double wert;
    
    	wert = maße.laenge * maße.breite * maße.hoehe;
    
    	return wert;
    }
    
    Void liste(kiste liste[])
    {
    	Console::WriteLine("  Arikel-Nr.\t   |  Lange   |  Breite   |  Höhe  |  Volumen   "); 
    	Console::WriteLine("************************************************************* ");
    
    	for (Int32 artikelNr = 0; artikelNr <= 20 ; artikelNr++ ) 
    		Console::WriteLine("     {0} \t \t   |    {1}     |     {2}     |    {3}   |   {4}       \n" 
                                 "_____________________________________________________________\n", 
    		artikelNr+1 ,liste[artikelNr].laenge,liste[artikelNr].breite,liste[artikelNr].hoehe,volumen(liste[artikelNr]));
    }
    
    int main(array<System::String ^> ^args)
    {
    	Int32 auswahl = 0;
    
    	kiste lager[100];
    
    	for(Int32 i = 0; i <= 99; i++)
    	{
    		lager[i].art_Nr = 0;
    		lager[i].laenge = 0,0;
    		lager[i].breite = 0,0;
    		lager[i].hoehe = 0,0;
    	};
    
    	while (auswahl != 6)
    	{
    
    		Console::WriteLine("Bitte wählen sie unter folgenden Aktionen aus\n\n");
    
    		Console::WriteLine(" 1. Eingabe");
    		Console::WriteLine(" 2. Ausgabe");
    		Console::WriteLine(" 3. Ändern");
    		Console::WriteLine(" 4. Löschen");
    		Console::WriteLine(" 5. Liste");
    		Console::WriteLine(" 6. Programm Ende.");
    
    		Console::WriteLine("\n\n");
    
    		auswahl = Convert::ToInt32(Console::ReadLine());
    
    		switch(auswahl)
    		{
    		case 1:
    			eingabe(lager);
    			//Console::WriteLine("Eingabe");
    			break;
    		case 2:
    			Console::WriteLine("Ausgabe");
    			break;
    		case 3:
    			Console::WriteLine("Ändern");
    			break;
    		case 4:
    			Console::WriteLine("Löschen");
    			break;
    		case 5:
    			liste(lager);
    			//Console::WriteLine("Liste");
    			break;
    		case 6:
    			Console::WriteLine("Ende");
    			break;
    		default :
    			Console::WriteLine("Diese Aktion ist nich verfügbar.");
    		}
    
    		Console::ReadKey();
    	}
    
        return 0;
    }
    

    Ausgabe mit 0

    Bitte wählen sie unter folgenden Aktionen aus

    1. Eingabe
    2. Ausgabe
    3. Ändern
    4. Löschen
    5. Liste
    6. Programm Ende.

    1

    Ausgabe mit 1
    Bitte wählen sie unter folgenden Aktionen aus

    1. Eingabe
    2. Ausgabe
    3. Ändern
    4. Löschen
    5. Liste
    6. Programm Ende.

    1
    Artikelnr.:

    Der Rest funktioniert soweit.

    Doch wenn ich dann die Liste aufrufe, habe ich folgendes Bild
    Bitte wählen sie unter folgenden Aktionen aus

    1. Eingabe
    2. Ausgabe
    3. Ändern
    4. Löschen
    5. Liste
    6. Programm Ende.

    1
    Artikelnr.: 1

    Länge: 2,2

    Breite: 2,2

    Höhe: 2,2

    Artikelnr.: 0

    Falsche Nummer eingegeben.

    Bitte wählen sie unter folgenden Aktionen aus

    1. Eingabe
    2. Ausgabe
    3. Ändern
    4. Löschen
    5. Liste
    6. Programm Ende.

    5
    Arikel-Nr. | Lange | Breite | Höhe | Volumen
    *************************************************************
    1 | 0 | 0 | 0 | 0
    _____________________________________________________________

    2 | 2,2 | 2,2 | 2,2 | 10,648
    _____________________________________________________________

    3 | 0 | 0 | 0 | 0
    _____________________________________________________________

    4 | 0 | 0 | 0 | 0
    _____________________________________________________________

    5 | 0 | 0 | 0 | 0
    _____________________________________________________________

    6 | 0 | 0 | 0 | 0
    _____________________________________________________________

    7 | 0 | 0 | 0 | 0
    _____________________________________________________________

    8 | 0 | 0 | 0 | 0
    _____________________________________________________________

    9 | 0 | 0 | 0 | 0
    _____________________________________________________________

    10 | 0 | 0 | 0 | 0
    _____________________________________________________________

    11 | 0 | 0 | 0 | 0
    _____________________________________________________________

    12 | 0 | 0 | 0 | 0
    _____________________________________________________________

    13 | 0 | 0 | 0 | 0
    _____________________________________________________________

    14 | 0 | 0 | 0 | 0
    _____________________________________________________________

    15 | 0 | 0 | 0 | 0
    _____________________________________________________________

    16 | 0 | 0 | 0 | 0
    _____________________________________________________________

    17 | 0 | 0 | 0 | 0
    _____________________________________________________________

    18 | 0 | 0 | 0 | 0
    _____________________________________________________________

    19 | 0 | 0 | 0 | 0
    _____________________________________________________________

    20 | 0 | 0 | 0 | 0
    _____________________________________________________________

    21 | 0 | 0 | 0 | 0
    _____________________________________________________________

    Was mache ich da falsch? Warum beginnt er bei 2 und nicht bei 1(0)? Denke dass das irgendwie mit dem Index zusammenhängt, bin mir aber nicht sicher. Ausgabe ist absichtlich nicht mit 100 gewählt, weil ich das ganze erst mal teste.

    Bin für jede Hilfe dankbar

    champman



  • Ich setze mal ein:

    {
      Int32 num = 1; 
    
      // while((1 != 0) && (1 <= 99))
      while((num != 0) && (num <= 99))
      {
        // diese Bedingung ist true und desshalb wird der Schleifenrumpf durchloffen
      }
    }
    
    {
      Int32 num = 0; 
    
      // while((0 != 0) && (0 <= 99))
      while((num != 0) && (num <= 99))
      {
        // diese Bedingung ist false (wegen 0 != 0) und desshalb wird der Schleifenrumpf NICHT durchloffen
      }
    }
    


  • Recht lieben Dank theta 😃

    Erstes Problem gelöst. Mit

    Int32 num = 0;
    
    while((1 != 0 ) && ( 1 <= 99)
    

    ) und auch

    while(( 1 != 0) && ( 0 <= 99))
    

    funktionieren.

    Bleibt noch die Farge mit der Ausgabe in der Liste übrig. Komme einfach nicht auf die Lösung. Muss mir noch mal den Teil mit der for-Schleife und dem Index ansehen.

    Melde mich, wenn ich es selber raus gefunden habe. Bis dahin bin ich noch für jede Hilfe dankbar.

    champman



  • Bleibt noch die Farge mit der Ausgabe in der Liste übrig. Komme einfach nicht auf die Lösung. Muss mir noch mal den Teil mit der for-Schleife und dem Index ansehen.

    Das hat nichts mit der Ausgabe zu tun, sondern mit der Eingabe. Die Indices der Liste beginnen bei 0 - mit der Bedingung in der while-Schleife und dem folgende if (num == 0) lässt Du kein Eintrag an erster Stelle zu.



  • Aaahaaaaaaa!!!

    Heist das, dass ich etwas anderes als while nehmen muß? Fällt mir jetzt spontan zu der Info ein.

    Hinweis ist aber schon recht super.

    Danke!

    champman

    Schade. Mein Versuch hat nicht funktioniert. Hmmm 😕

    Vielleicht jemand einen anderen Vorschlag?



  • Was lange währt wird endlich gut. Habe meinen Fehler nach langem Nachdenken denn doch noch gefunden.

    Danke für Eure Hinweise, bin manchmal doch etwas Begriffsstutzig.

    Lieben Gruß

    champman


Anmelden zum Antworten