ich habe ein kleines Problem. Hab ein kleines Programm geschrieben zum testen von Kisten Inhalte wo Maße drin stehen und es im Array abgespeichert.
Leider habe ich da das Problem, wenn ich eine Kiste lösche und wieder eine neue Kiste anlegen will, das er nicht die Kiste nimmt die gerade gelöscht worden sind.
Hier ist der Code.
Code: Alles auswählen
/*#######################################
* Einsendeaufgabe 4
#######################################*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace CShp4
{
class Program
{
// Vereinbarung der Struktur
// sie erfolgen auserhalb der Methode
struct Kiste
{
public int Hoehe;
public int Breite;
public int Laenge;
}
// Die Methode zum Einlesen
// Sie liefert die "komplette" Kiste zurück
static Kiste Einlesen(int kistenNummer)
{
// eine Lokale Strukturvariable
Kiste aKiste;
Console.Write("Geben Sie die Höhe der {0}. Kiste ein: ", kistenNummer);
aKiste.Hoehe = Convert.ToInt32(Console.ReadLine());
Console.Write("Geben Sie die Breite der {0}. Kiste ein: ", kistenNummer);
aKiste.Breite = Convert.ToInt32(Console.ReadLine());
Console.Write("Geben Sie die Länge der {0}. Kiste ein: ", kistenNummer);
aKiste.Laenge = Convert.ToInt32(Console.ReadLine());
return aKiste;
}
// Kiste Löschen
static Kiste Loeschen(int KistenNummer)
{
// eine Lokale Strukturvariable
Kiste aKiste;
// Setz die Maße wieder auf Null
aKiste.Laenge = 0;
aKiste.Breite = 0;
aKiste.Hoehe = 0;
return aKiste;
}
static Kiste Aendern(int KistenNummer)
{
// eine Lokale Strukturvariable
Kiste aKiste;
Console.Write("Geben Sie bitte die Neue Länge ein, für die {0}. Kiste:", KistenNummer);
aKiste.Laenge = Convert.ToInt32(Console.ReadLine());
Console.Write("Geben Sie bitte die Neue Breite ein, für die {0}. Kiste:", KistenNummer);
aKiste.Breite = Convert.ToInt32(Console.ReadLine());
Console.Write("Geben Sie bitte die Neue Höhe ein, für die {0}. Kiste:", KistenNummer);
aKiste.Hoehe = Convert.ToInt32(Console.ReadLine());
return aKiste;
}
// Methode zum einzeln Anzeigen.
static int Anzeigen(Kiste aKiste)
{
int wertEinz;
Console.Write("Die Maße sind {0}x{1}x{2} ",aKiste.Laenge,aKiste.Breite,aKiste.Hoehe+" Und das Volumen ist:");
wertEinz = aKiste.Breite * aKiste.Laenge * aKiste.Hoehe;
return wertEinz;
}
// Mehtode zum alles anzeigen in der Liste.
static int Volumen(Kiste aKiste)
{
int wertVol;
Console.Write("Die Maße sind {0}x{1}x{2} ",aKiste.Laenge,aKiste.Breite,aKiste.Hoehe+" Und das Volumen ist:");
wertVol = aKiste.Breite * aKiste.Laenge * aKiste.Hoehe;
return wertVol;
}
static void Main(string[] args)
{
// ein lokales Array kleineKiste for die
// Struktur Kiste
Kiste[] Lagerraum = new Kiste[100];
// Zugriff auf der Struktur Kiste
Kiste Zugriff = new Kiste();
// Kistennummer
int Kistennummer = 0;
// Zeichen für Menu
string Eingabe;
do
{
// Menü Aufbau.
Console.WriteLine("Neue Kiste erstellen. Drücken sie bitte: <n>");
Console.WriteLine("Vorhande Daten in der Kiste Löschen. Drücken sie bitte: <l>");
Console.WriteLine("Vorhande Daten ändern in der Kiste. Drücken sie bitte: <a>");
Console.WriteLine("Vorhande Daten anzeigen in der Kiste. Drücken sie bitte: <d>");
Console.WriteLine("Alle Daten der vorhanden Kisten anzeigen. Drücken sie bitte: <k>");
Console.WriteLine("Programm Beenden. Drücken sie bitte: <b>");
Console.Write("Geben sie ein Buchstaben ein:");
// Menü Eingabe
Eingabe = Console.ReadLine();
// Im Menü Springen.
switch (Eingabe)
{
case "N":
case "n":
// Code Einfügen um neue Kiste zu erstellen.
while (Kistennummer < Lagerraum.Length)
{
if (Zugriff.Laenge == 0 && Zugriff.Breite == 0 && Zugriff.Hoehe == 0)
{
Lagerraum[Kistennummer] = Einlesen(Kistennummer+1);
Console.WriteLine();
}
Kistennummer++;
break;
}
break;
case "L":
case "l":
// Code Einfügen um Kiste zu löschen.
if (Kistennummer < Lagerraum.Length)
{
Console.Write("Geben sie die Kisten NUmmer ein. Von 1 bis 100.:");
Kistennummer = Convert.ToInt32(Console.ReadLine());
Lagerraum[Kistennummer - 1] = Loeschen(Kistennummer);
Console.WriteLine();
}
else
{
Console.Write("Diese Kisten Nummer {0}. gibt es nicht!", Kistennummer);
}
break;
case "A":
case "a":
// Code Einfügen um Daten der Kiste zu ändern.
if (Kistennummer < Lagerraum.Length)
{
Console.Write("Geben sie die Kisten Nummer ein. Von 1 bis 100. : ");
Kistennummer = Convert.ToInt32(Console.ReadLine());
Lagerraum[Kistennummer - 1] = Aendern(Kistennummer);
Console.WriteLine();
}
else
{
Console.Write("Diese Kisten Nummer {0}. gibt es nicht!", Kistennummer);
}
break;
case "D":
case "d":
// Code Einfügen um Daten der Kiste zu zeigen.
Console.WriteLine("Geben sie die Kisten Nummer ein. Von 1 bis 100. : ");
Kistennummer = Convert.ToInt32(Console.ReadLine());
if (Kistennummer < Lagerraum.Length)
{
Console.Write("Kiste {0}.", Kistennummer);
Console.WriteLine(Anzeigen(Lagerraum[Kistennummer - 1]));
Console.WriteLine();
}
else
{
Console.WriteLine("Diese Kisten Nummer {0}. gibt es nicht!",Kistennummer);
}
break;
case "K":
case "k":
// Das Berechnen über die Methode Volumen()
for (int KistenNrIndex = 0; KistenNrIndex < Lagerraum.Length; KistenNrIndex++)
{
Console.Write("Kiste {0}. ",KistenNrIndex+1);
Console.WriteLine( Volumen(Lagerraum[KistenNrIndex]));
Console.WriteLine();
}
break;
case "B":
case "b":
Console.WriteLine("Programm wird Beendet.");
break;
default:
Console.WriteLine("{0} ist keine Gültige Eingabe.", Eingabe);
break;
}
}
while (Eingabe != "B" && Eingabe != "b");
}
}
}