C# :: Aufgabe #7 :: Lösung #1
15 Lösungen
#7
Übung mehrdimensionales Datenfeld welches aus zufälligen Inhalten besteht darstellen
Anfänger - C#
von Gustl
- 30.07.2012 um 23:37 Uhr
#1
von Isparia (690 Punkte)
- 08.11.2012 um 23:18 Uhr
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace aufgabe_7
{/*Aufgabe:
* Schreiben sie ein Programm, in dem den Elementen eines dreidimensionalen Feldes, welches 6 x 3 x4 int-Werte beinhaltet,
*zufällige Werte zugewiesen werden.
*Anschließend sollen alle Positionen des kleinsten Elements des Felds ermittelt und ausgegeben werden, siehe Bild. */
public partial class Form1 : Form
{ /*Definition eines Arrays of Labels um die Zufallswerte anzuzeigen*/
Label[,] labels = new Label[6, 3];
/*Definition eines Arrays of Labels um die vorkommen anzuzeigen*/
Label[] ausgabeLabel;
/*Hilfsvariabelen: - y zum festlegen der Y position der in den Arrays gespeicherten Labels
- x zum festlegen der X Position der in den Arrays gespeicherten Labels und als Hilfsvariabele
- z hilfsvariabele um die ermittelten Positionen auszugeben
- minZahl variabele für den kleinsten Zufallswert
- vorkommenMinZahl Hilfsvariabele zum bestimmen der größe des Label[] ausgabeLabel */
int y ,z=0,x=15, zahl, minZahl = 0, vorkommenMinZahl = 0;
/*Zahlenfeld welches in der Aufgabe gefordert war*/
int[, ,] zahlenFeld = new int[6, 3, 4];
/*Liste in welche die Positionen der kleinsten zahlen Zahlen gespeichert werden*/
List<string> ausgabe = new List<string>();
Random r = new Random();
/*hilfsbool um sicher zugehen das auch wirklich die kleinste zahl ermittelt wurde wenn mein gedanken gang richtig ist^^*/
bool zahlErmittelt = false;
public Form1()
{
InitializeComponent();
for (int i = 0; i < 6; i++)
{
y += 25;
for (int j = 0; j < 3; j++)
{
labels[i, j] = new Label(); //Initialiesieren eines Neuen Labels im LabelArray für die zufallswerte
labels[i, j].AutoSize = false;
labels[i, j].Bounds = new Rectangle(2, 2, 90, 25); //festlegen der Größe des Neuen Labels
this.Controls.Add(labels[i, j]); //hinzufügen des Labels zur From
labels[i, j].Location = new Point(x, y); //Label Positionieren
x += 90;
for (int k = 0; k < 4; k++)
{
zahl = r.Next(10, 100); //ermitteln der zufallszahl
zahlenFeld[i, j, k] = zahl;
switch (k) //überprüfen der Oosition der Zahl in der Gruppe um Formatierung anzupassen
{
case 0:
labels[i, j].Text += "( " + Convert.ToString(zahl);
break;
case 3:
labels[i, j].Text += " " + Convert.ToString(zahl) + " )";
break;
default:
labels[i, j].Text += " " + Convert.ToString(zahl);
break;
}
}
}
x = 15;
}
}
private void button1_Click(object sender, EventArgs e)
{
x = 0;
while (!zahlErmittelt) //ermitteln von Minzahl
{
for (int i = 0; i < 6; i++)
{
for (int j = 0; j < 3; j++)
{
for (int k = 0; k < 4; k++)
{
if (i == 0 && j ==0 &&k==0 && x ==0)
{
minZahl = zahlenFeld[i, j, k];
}
else if (minZahl > zahlenFeld[i, j, k])
{
minZahl = zahlenFeld[i, j, k];
}
if (minZahl == zahlenFeld[i,j,k] && x== 2) //ermitteln der Häufigkeit der minZahl
{
vorkommenMinZahl +=1;
}else
if (minZahl == zahlenFeld[i, j, k] && x == 3) //schreiben der Position in die Liste
{
ausgabe.Add("Zeile: " + (i+1) + " Spalte: " + (j+1) + " Item: " + (k+1));
}
}
}
}
x += 1;
if (x == 4) { zahlErmittelt = true; } //springen aus der Schleife
}
x = 15; //festlegen des x wertes für das 2.LabelArray
y = 215; //festlegen des x wertes für das 2.LabelArray
ausgabeLabel = new Label[vorkommenMinZahl]; //definieren des 2.Labelarrays
for (int i = 0; i < vorkommenMinZahl; i++) //erstellen der Labels zur laufzeit
{
ausgabeLabel[i] = new Label();
ausgabeLabel[i].AutoSize = false;
ausgabeLabel[i].Bounds = new Rectangle(2, 2, 150, 25);
this.Controls.Add(ausgabeLabel[i]);
ausgabeLabel[i].Location = new Point(x, y);
y += 25;
}
label1.Text = "Minnimum: "+minZahl+", an Position:"; //Ausgabe der kleinsten Zahl
foreach (string item in ausgabe) //Ausgabe der Positionen
{
ausgabeLabel[z].Text = item;
z++;
}
z = 0;
this.Height += ((z + 1) * 25); //vergrößert die Form um alle Positionen sichtbar zu machen falls es mal mehr als 1 ist
}
}
}
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
