C# :: Aufgabe #7 :: Lösung #1

15 Lösungen Lösungen öffentlich
#7

Übung mehrdimensionales Datenfeld welches aus zufälligen Inhalten besteht darstellen

Anfänger - C# von Gustl - 30.07.2012 um 23:37 Uhr
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.
#1
vote_ok
von Isparia (690 Punkte) - 08.11.2012 um 23:18 Uhr
Quellcode ausblenden C#-Code
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

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben