Problemm mit Strukturen und Feldern!



  • [Gelöst!]

    Hallo zusammen,

    Ich habe ein Programm geschrieben das zur Lagerverwaltung dient.(Übungsprogramm)
    Jetzt habe ich ein Problem.
    Ich möchte über eine Funktion Daten einlesen lassen und die in eine Struktur mit Feld nach mein übergeben am besten mit return.
    Ziel ist das ich keine Globale Variable "bKiste[]" mehr brauche,wie es im moment der Fall ist, sondern nur die in Main Initialiesierte Variable "aKiste[]".

    Zusätzlich möchte ich das bei der Funktion auflisten() Das Programm beim erreichen des Unteren Bildschirmrandes auf einen Knopfdruch wartet und dan erst weiter auflistet.

    Bitte um dringende Hilfe ich bin am verzweifeln.... 😡

    Hier mein bisheriger Quelltext:

    #include "stdafx.h"
    using namespace System;
    const Int32 MAXZAHL = 3;
    struct Kiste
    {
    	Int32 idNummer;
    	Int32 hoehe;
    	Int32 laenge;	
    	Int32 breite;
    	Int32 volumen;
    };
    
    Kiste bKiste[MAXZAHL];                 //Diese Globale soll weg!
    
    Void anlegen(Int32 kistenID)
    {
    	Int32 eingabe;
    	bKiste[kistenID].idNummer = kistenID;
    	Console::WriteLine("Bitte geben Sie die Höhe der {0} Kiste an:",kistenID);
    	eingabe = Convert::ToInt32(Console::ReadLine());
    	bKiste[kistenID].hoehe = eingabe;
    	Console::WriteLine("Bitte geben Sie die laenge der {0} Kiste an:",kistenID);
    	eingabe = Convert::ToInt32(Console::ReadLine());
    	bKiste[kistenID].laenge = eingabe;
    	Console::WriteLine("Bitte geben Sie die breite der {0} Kiste an:",kistenID);
    	eingabe = Convert::ToInt32(Console::ReadLine());
    	bKiste[kistenID].breite = eingabe;
    	bKiste[kistenID].volumen = bKiste[kistenID].hoehe*bKiste[kistenID].laenge*bKiste[kistenID].breite;
    	Console::WriteLine("Höhe: \t{0}",bKiste[kistenID].hoehe);
    	Console::WriteLine("Länge \t{0}",bKiste[kistenID].laenge);
    	Console::WriteLine("Breite: \t{0}",bKiste[kistenID].breite);
    	Console::WriteLine("--> Volumen: \t{0}",bKiste[kistenID].volumen);
    	Console::ReadLine();
    	return ;
    }
    Void löschen(Int32 kistenID)
    {
    	bKiste[kistenID].idNummer = 0;
    	bKiste[kistenID].hoehe = 0;
    	bKiste[kistenID].laenge = 0;
    	bKiste[kistenID].breite = 0;
    	bKiste[kistenID].volumen = 0;
    	Console::WriteLine("Die Kiste Nummer: {0} wurde gelöscht",kistenID);
    	Console::ReadLine();
    	return ;
    }
    
    Void ändern(Int32 kistenID)
    {
    	Int32 eingabe;
    	bKiste[kistenID].idNummer = kistenID;
    	Console::WriteLine("Bitte geben Sie die neue Höhe der {0} Kiste an:",kistenID);
    	eingabe = Convert::ToInt32(Console::ReadLine());
    	bKiste[kistenID].hoehe = eingabe;
    	Console::WriteLine("Bitte geben Sie die neue Länge der {0} Kiste an:",kistenID);
    	eingabe = Convert::ToInt32(Console::ReadLine());
    	bKiste[kistenID].laenge = eingabe;
    	Console::WriteLine("Bitte geben Sie die neue Breite der {0} Kiste an:",kistenID);
    	eingabe = Convert::ToInt32(Console::ReadLine());
    	bKiste[kistenID].breite = eingabe;
    	bKiste[kistenID].volumen = bKiste[kistenID].hoehe*bKiste[kistenID].laenge*bKiste[kistenID].breite;
    	Console::WriteLine("Höhe: \t{0}",bKiste[kistenID].hoehe);
    	Console::WriteLine("Länge \t{0}",bKiste[kistenID].laenge);
    	Console::WriteLine("Breite: \t{0}",bKiste[kistenID].breite);
    	Console::WriteLine("--> Volumen: \t{0}",bKiste[kistenID].volumen);
    	Console::ReadLine();
    	return ;
    }
    
    Void anzeigen(Kiste aKiste[], Int32 eingabe)
    {
    	Console::WriteLine("Kiste Nummer: {0}",aKiste[eingabe].idNummer);
    	Console::WriteLine("Höhe : {0}",aKiste[eingabe].hoehe);
    	Console::WriteLine("Länge : {0}",aKiste[eingabe].laenge);
    	Console::WriteLine("Breite : {0}",aKiste[eingabe].breite);
    	Console::WriteLine("Volumen : {0}",aKiste[eingabe].volumen);
    	Console::ReadLine();
    	return ;
    }
    
    Void liste(Kiste cKiste[])
    {
    	for (Int32 x = 1; x <= MAXZAHL; x++)
    	{
    		if (cKiste[x].idNummer != 0)
    		{
    		Console::WriteLine("Kiste Nummer: {0}",cKiste[x].idNummer);
    		Console::WriteLine("Höhe: {0}",cKiste[x].hoehe);
    		Console::WriteLine("Länge: {0}",cKiste[x].laenge);
    		Console::WriteLine("Breite: {0}",cKiste[x].breite);
    		Console::WriteLine("Volumen: {0}",cKiste[x].volumen);
    		Console::WriteLine("");
    		}
    	}
    	Console::ReadLine();
    	return;
    }
    int main(array<System::String ^> ^args)
    {
    	Kiste aKiste[MAXZAHL];
    	Int32 eingabe;
    	do{
    		Console::WriteLine("Bitte wählen Sie eine Funktion aus:");
    		Console::WriteLine("1 - Neue Kiste anlegen");
    		Console::WriteLine("2 - Kiste löschen");
    		Console::WriteLine("3 - Kiste ändern");
    		Console::WriteLine("4 - Kiste anzeigen");
    		Console::WriteLine("5 - Liste aller Kisten ausgeben");
    		Console::WriteLine("9 - Programm beenden");
    		Console::WriteLine("\nIhre Auswahl:");
    		eingabe = Convert::ToInt32(Console::ReadLine());
    		switch(eingabe)
    		{
    		case 1:
    
    			Console::WriteLine("Welche Kiste möchten Sie anlegen?");
    			eingabe = Convert::ToInt32(Console::ReadLine());
    			if (eingabe <= MAXZAHL)
    			{
    				if(aKiste[eingabe].idNummer != 0)
    				{
    					anlegen(eingabe);
    					aKiste[eingabe] = bKiste[eingabe];
    				}
    				else
    				{
    					Console::WriteLine("Diese Kiste wurde schon vergeben!");
    				}
    			}
    			else
    			{
    				Console::WriteLine("Sie können höchstens {0} Kisten anlegen!", MAXZAHL);
    				Console::ReadLine();
    			}
    			break;
    
    		case 2:
    
    			Console::WriteLine("Welche Kiste möchten Sie löschen?");
    			eingabe = Convert::ToInt32(Console::ReadLine());
    			if (eingabe <= MAXZAHL)
    			{
    				if (aKiste[eingabe].idNummer != 0)
    				{
    					löschen(eingabe);
    					aKiste[eingabe] = bKiste[eingabe];
    				}
    				else
    				{
    					Console::WriteLine("Sie können keine unvergebene Kiste löschen");
    					Console::ReadLine();
    				}
    			}
    			else
    			{
    				Console::WriteLine("Diese Kiste existiert nicht");
    			}
    			break;
    
    		case 3:
    
    			Console::WriteLine("Welche Kiste möchten Sie ändern?");
    			eingabe = Convert::ToInt32(Console::ReadLine());
    			if (eingabe <= MAXZAHL)
    			{
    				if (aKiste[eingabe].idNummer != 0)
    				{
    					ändern(eingabe);
    					aKiste[eingabe] = bKiste[eingabe];
    				}
    				else
    				{
    					Console::WriteLine("Sie können keine unvergebene Kiste ändern!");
    					Console::ReadLine();
    				}
    			}
    			else
    			{
    				Console::WriteLine("Diese Kiste existiert nicht!");
    			}
    			break;
    
    		case 4:
    
    			Console::WriteLine("Welche Kiste möchten Sie sehen?");
    			eingabe = Convert::ToInt32(Console::ReadLine());
    			if (eingabe <= MAXZAHL)
    			{
    				if (aKiste[eingabe].idNummer != 0)
    				{
    					anzeigen(aKiste,eingabe);
    				}
    				else
    				{
    					Console::WriteLine("Diese Kiste existiert nicht!");
    					Console::ReadLine();
    				}
    			}
    			else
    			{
    				Console::WriteLine("Diese Kiste existiert nicht!");
    			}
    			break;
    
    		case 5:
    
    			liste(aKiste);    //Hier soll er auf knopfdruck warten beim erreichen des Bildschirmrandes
    			break;
    
    		}
    	}
    	while ( eingabe != 9);
    	return 0;
    }
    

    Mit super freundlichen Grüßen 🙂



  • Okay habe es jetzt doch selber gelöst

    für die die es Interessiert hier die Lösung :

    #include "stdafx.h"
    using namespace System;
    const Int32 MAXZAHL = 10;
    struct Kiste
    {
    	Int32 idNummer;
    	Int32 hoehe;
    	Int32 laenge;	
    	Int32 breite;
    	Int32 volumen;
    };
    
    Kiste anlegen(Int32 kistenID)
    {
    	Kiste aKiste;
    	Int32 eingabe;
    	aKiste.idNummer = kistenID;
    	Console::WriteLine("Bitte geben Sie die Höhe der {0} Kiste an:",kistenID);
    	eingabe = Convert::ToInt32(Console::ReadLine());
    	aKiste.hoehe = eingabe;
    	Console::WriteLine("Bitte geben Sie die laenge der {0} Kiste an:",kistenID);
    	eingabe = Convert::ToInt32(Console::ReadLine());
    	aKiste.laenge = eingabe;
    	Console::WriteLine("Bitte geben Sie die breite der {0} Kiste an:",kistenID);
    	eingabe = Convert::ToInt32(Console::ReadLine());
    	aKiste.breite = eingabe;
    	aKiste.volumen = aKiste.hoehe*aKiste.laenge*aKiste.breite;
    	Console::WriteLine("Höhe: \t{0}",aKiste.hoehe);
    	Console::WriteLine("Länge \t{0}",aKiste.laenge);
    	Console::WriteLine("Breite: \t{0}",aKiste.breite);
    	Console::WriteLine("--> Volumen: \t{0}",aKiste.volumen);
    	Console::ReadLine();
    	return aKiste;
    }
    Kiste löschen(Int32 kistenID)
    {
    	Kiste aKiste;
    	aKiste.idNummer = 0;
    	aKiste.hoehe = 0;
    	aKiste.laenge = 0;
    	aKiste.breite = 0;
    	aKiste.volumen = 0;
    	Console::WriteLine("Die Kiste Nummer: {0} wurde gelöscht",kistenID);
    	Console::ReadLine();
    	return aKiste;
    }
    
    Kiste ändern(Int32 kistenID)
    {
    	Kiste aKiste;
    	Int32 eingabe;
    	aKiste.idNummer = kistenID;
    	Console::WriteLine("Bitte geben Sie die neue Höhe der {0} Kiste an:",kistenID);
    	eingabe = Convert::ToInt32(Console::ReadLine());
    	aKiste.hoehe = eingabe;
    	Console::WriteLine("Bitte geben Sie die neue Länge der {0} Kiste an:",kistenID);
    	eingabe = Convert::ToInt32(Console::ReadLine());
    	aKiste.laenge = eingabe;
    	Console::WriteLine("Bitte geben Sie die neue Breite der {0} Kiste an:",kistenID);
    	eingabe = Convert::ToInt32(Console::ReadLine());
    	aKiste.breite = eingabe;
    	aKiste.volumen = aKiste.hoehe*aKiste.laenge*aKiste.breite;
    	Console::WriteLine("Höhe: \t{0}",aKiste.hoehe);
    	Console::WriteLine("Länge \t{0}",aKiste.laenge);
    	Console::WriteLine("Breite: \t{0}",aKiste.breite);
    	Console::WriteLine("--> Volumen: \t{0}",aKiste.volumen);
    	Console::ReadLine();
    	return aKiste;
    }
    
    Void anzeigen(Kiste aKiste[], Int32 eingabe)
    {
    	Console::WriteLine("Kiste Nummer: {0}",aKiste[eingabe].idNummer);
    	Console::WriteLine("Höhe : \t\t{0}",aKiste[eingabe].hoehe);
    	Console::WriteLine("Länge : \t{0}",aKiste[eingabe].laenge);
    	Console::WriteLine("Breite : \t{0}",aKiste[eingabe].breite);
    	Console::WriteLine("Volumen : \t{0}",aKiste[eingabe].volumen);
    	Console::ReadLine();
    	return ;
    }
    
    Void liste(Kiste aKiste[])
    {
    	Int32 y = 0;
    	for (Int32 x = 1; x <= MAXZAHL; x++)
    	{
    		if (aKiste[x].idNummer != 0)
    		{
    			Console::WriteLine("Kiste Nummer: {0}",aKiste[x].idNummer);
    			Console::WriteLine("Höhe: \t\t{0}",aKiste[x].hoehe);
    			Console::WriteLine("Länge: \t\t{0}",aKiste[x].laenge);
    			Console::WriteLine("Breite: \t{0}",aKiste[x].breite);
    			Console::WriteLine("Volumen: \t{0}",aKiste[x].volumen);
    			Console::WriteLine("");
    			y++;
    
    				if (y%4 == 0)
    			{
    				Console::ReadKey();
    			}
    		}
    	}
    	Console::ReadLine();
    	return;
    }
    int main(array<System::String ^> ^args)
    {
    	Kiste aKiste[MAXZAHL+1];
    	Int32 eingabe;
    	Int32 ein;
    
    	for (Int32 x = 0; x <= MAXZAHL-1; x++)
    	{
    		aKiste[x].idNummer = 0;
    		aKiste[x].hoehe = 0;
    		aKiste[x].breite = 0;
    		aKiste[x].laenge = 0;
    		aKiste[x].volumen = 0;
    	}
    
    	do{
    		Console::WriteLine("Bitte wählen Sie eine Funktion aus:");
    		Console::WriteLine("1 - Neue Kiste anlegen");
    		Console::WriteLine("2 - Kiste löschen");
    		Console::WriteLine("3 - Kiste ändern");
    		Console::WriteLine("4 - Kiste anzeigen");
    		Console::WriteLine("5 - Liste aller Kisten ausgeben");
    		Console::WriteLine("9 - Programm beenden");
    		Console::WriteLine("\nIhre Auswahl:");
    		eingabe = Convert::ToInt32(Console::ReadLine());
    		switch(eingabe)
    		{
    		case 1:
    
    			Console::WriteLine("Welche Kiste möchten Sie anlegen?");
    			ein = Convert::ToInt32(Console::ReadLine());
    			if (eingabe != 0)
    			{
    				if (ein <= MAXZAHL)
    				{
    					if ( aKiste[ein].idNummer <= 0)
    					{
    						aKiste[ein] = anlegen(ein);
    					}
    
    					else
    					{
    						Console::WriteLine("Diese kiste wurde schon vergeben!");
    					}
    				}
    
    				else 
    				{
    					Console::WriteLine("Diese Kiste existiert nicht!");
    				}
    			}
    
    			else
    			{
    				Console::WriteLine(" Sie können keine 0 Kisten anlegen!");
    			}
    			break;
    
    		case 2:
    
    			Console::WriteLine("Welche Kiste möchten Sie löschen?");
    			ein = Convert::ToInt32(Console::ReadLine());
    			if (eingabe <= MAXZAHL)
    			{
    				if (aKiste[ein].idNummer <= 0)
    				{
    					Console::WriteLine("Sie können keine unvergebene Kiste löschen");
    					Console::ReadLine();	
    				}
    				else
    				{	
    					aKiste[ein] = löschen(ein);
    				}
    			}
    			else
    			{
    				Console::WriteLine("Diese Kiste existiert nicht");
    			}
    			break;
    
    		case 3:
    
    			Console::WriteLine("Welche Kiste möchten Sie ändern?");
    			ein = Convert::ToInt32(Console::ReadLine());
    			if (ein <= MAXZAHL)
    			{
    				if (aKiste[ein].idNummer <= 0)
    				{
    					Console::WriteLine("Sie können keine unvergebene Kiste ändern!");
    					Console::ReadLine();
    				}
    				else
    				{
    					aKiste[ein] = ändern(ein);
    				}
    			}
    			else
    			{
    				Console::WriteLine("Diese Kiste existiert nicht!");
    			}
    			break;
    
    		case 4:
    
    			Console::WriteLine("Welche Kiste möchten Sie sehen?");
    			eingabe = Convert::ToInt32(Console::ReadLine());
    			if (ein <= MAXZAHL)
    			{
    				if (aKiste[ein].idNummer <= 0)
    				{
    					Console::WriteLine("Diese Kiste existiert nicht!");
    					Console::ReadLine();
    				}
    				else
    				{	
    					anzeigen(aKiste,ein);
    				}
    			}
    			else
    			{
    				Console::WriteLine("Diese Kiste existiert nicht!");
    			}
    			break;
    
    		case 5:
    
    			liste(aKiste);
    			break;
    
    		default :
    		{
    			Console::WriteLine("Diese Option gibt es nicht!");
    			break;
    		}
    
    		}
    	}
    	while ( eingabe != 9);
    	return 0;
    }
    

Anmelden zum Antworten