Jednowymiarowe tablice statyczne (część 2). Visual Studio C#

Tablice mogą być statyczne lub dynamiczne, jedno lub wielowymiarowe. Jednowymiarowa tablica, to zbiór danych tego samego typu, przypisanych do jednej zmiennej w postaci szeregu wartości. Każda z tych wartości ma niepowtarzalny indeks w tak utworzonym zbiorze danych. Tablica jednowymiarowa jest odpowiednikiem osi liczbowej.

Cel: Napisz aplikację, która wykorzysta trzy tablice jednowymiarowe o ustalonym rozmiarze i losowych wartościach typu całkowitego, na których będzie można wykonać podstawowe działania matematyczne.

statyczne tablice jednowymiarowe visual studio c#

Krok1. Układ komponentów

Proponowane rozmieszczenie komponentów przedstawia poniższa ilustracja

rozmieszczenie komponentów

Trzy kontrolki TextBox są umieszczone wewnątrz trzech kontrolek GroupBox. Każda z kontrolek TextBox ma ustawioną wartość Multiline na True

wartość Multiline

Pole Dock na Fill

dock fill

Wybieramy możliwość przewijania zawartości kontrolki poprzez ustawienie ScrollBars na Vertical

scrollBars na vertical

Krok 2. Deklarujemy zmienne

Deklarując tablice statyczne należy podać ich rozmiar, który określa maksymalną ilość elementów jaka może pomieścić dana tablica. W tym rozwiązaniu rozmiar jest podany jako wartość const w postaci zmiennej typu int.

Wskazówka:


public partial class Form1 : Form
{
	const int ROZMIAR= 10;//rozmiar tablic
	Random los = new Random();//generato wartosci losowych
	int z = 0;//zakres losowania
	int[] t1 = new int[ROZMIAR];//tablica nr 1
	int[] t2 = new int[ROZMIAR];//tablica nr 2

Krok 3. Przypisanie tablicom losowych wartości

Proponowane rozwiązanie oparte jest na funkcji zwracającej typ jednowymiarowej tablicy. Funkcja jest uniwersalna i pozwala wylosować tablicę jednowymiarową o dowolnym rozmiarze z wartości nie przekraczających zadany zakres i różnych od zera

Wskazówka:


int[] losoweElementyTablicy(int rozmiar, int zakres)
{
	int[] tab = new int[rozmiar];
	for (int i = 0; i < rozmiar; i++)
	{
		tab[i] = los.Next(zakres) + 1;
	}
	return tab;
}

Wywołanie opisanej funkcji jest przypisane do zdarzenia Click przycisku button1

Wskazówka:


private void button1_Click(object sender, EventArgs e)
{
	//odczytaj zakres losowego zbioru
	z = Convert.ToInt16(textBox3.Text);
	t1 = losoweElementyTablicy(ROZMIAR, z);
	t2 = losoweElementyTablicy(ROZMIAR, z);
	textBox1.Clear();
	textBox2.Clear();
	for (int i = 0; i < ROZMIAR; i++)
	{
		textBox1.AppendText(i.ToString() + ": " + t1[i].ToString() + Environment.NewLine);
		textBox2.AppendText(i.ToString() + ": " + t2[i].ToString() + Environment.NewLine);
	}
}

Skompiluj i uruchom program. Prawidłowo działająca aplikacja zwróci w kontrolkach TextBox kolejne losowe wartości utworzonych tablic

TextBox visual studio c#

Krok 4. Wykonanie działań na wartościach z określonych indeksów

Odczyt wartości z określonego miejsca (indeksu) tablicy jest proste. Wymaga podania numeru indeksu. Należy zadbać o to, aby indeks nie przekroczył rozmiaru tablicy.

Poniżej przykład instrukcji przypisania wartości odczytanej z tablicy do zmiennej lokalnej

int a=tab[3];

Wykonujemy działanie dodawania dla wybranych wartości odczytanych z tablic przypiszemy do zdarzenia Click przycisku button2

Wskazówka:


private void button2_Click(object sender, EventArgs e)
{
	textBox4.Clear();
	int id = Convert.ToInt16(textBox5.Text);
	float wynik= t1[id] + t2[id];
	textBox4.AppendText(t1[id].ToString()+bt.Tag+t2[id].ToString()+"="+wynik.ToString());
}

Możemy również wykorzystać bardziej uniwersalne podejście dla większej ilości przycisków działań matematycznych. Proponowane rozwiązanie bazuje na rzutowaniu obiektu sender i rozpoznaniu rodzaju przycisku poprzez wartość pola Tag kontrolek Button

Wskazówka:


private void button2_Click(object sender, EventArgs e)
{
	textBox4.Clear();
	int id = Convert.ToInt16(textBox5.Text);
	float wynik=0;
	Button bt= sender as Button;
	switch (bt.Tag)
	{
		case "+":wynik = t1[id] + t2[id];break;
		case "-":wynik = t1[id] - t2[id];break;
	}
	textBox4.AppendText(t1[id].ToString()+bt.Tag+t2[id].ToString()+"="+wynik.ToString());
}

Skompiluj program i sprawdź efekt działania

tablica jednowymiarowa c#

Krok 5. Wykonanie działań na wszystkich elementach tablicy

Jednoczesne wykonanie działań na wszystkich elementach tablicy wymaga użycia pętli. Proponowany kod przedstawia dodawanie kolejnych elementów odczytanych równolegle z dwóch wcześniej utworzonych tablic. Wyniki kolejnych dodawań są wypisywane w kontrolce TextBox. Całość jest wywołana w zdarzeniu Click przycisku button4

Wskazówka:


private void button4_Click(object sender, EventArgs e)
{
	textBox4.Clear();
	for (int id = 0; id < ROZMIAR; id++)
	{
		int wynik = t1[id] + t2[id];
		textBox4.AppendText(t1[id].ToString() + 
		                "+" + t2[id].ToString() +
						"=" + wynik.ToString() +
						Environment.NewLine);
	}
}

Skompiluj i uruchom program. Prawidłowo działająca aplikacja zwróci kolejne sumy

int[] visual studio c#

Kod rozwiązania

Wskazówka:


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 _26tabliceStatyczne
{
    public partial class Form1 : Form
    {
        const int ROZMIAR= 10;//rozmiar tablic
        Random los = new Random();//generato wartosci losowych
        int z = 0;//zakres losowania
        int[] t1 = new int[ROZMIAR];//tablica nr 1
        int[] t2 = new int[ROZMIAR];//tablica nr 2

        int[] losoweElementyTablicy(int rozmiar, int zakres)
        {
            int[] tab = new int[rozmiar];
            for (int i = 0; i < rozmiar; i++)
            {
                tab[i] = los.Next(zakres) + 1;
            }
            return tab;
        }
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //odczytaj zakres losowego zbioru
            z = Convert.ToInt16(textBox3.Text);
            t1 = losoweElementyTablicy(ROZMIAR, z);
            t2 = losoweElementyTablicy(ROZMIAR, z);
            textBox1.Clear();
            textBox2.Clear();
            for (int i = 0; i < ROZMIAR; i++)
            {
                textBox1.AppendText(i.ToString() +
				                    ": " + t1[i].ToString()
									+ Environment.NewLine);
                textBox2.AppendText(i.ToString() +
				                    ": " + t2[i].ToString()
									+ Environment.NewLine);
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            textBox4.Clear();
            int id = Convert.ToInt16(textBox5.Text);
            float wynik=0;
            Button bt= sender as Button;
            switch (bt.Tag)
            {
                case "+":wynik = t1[id] + t2[id];break;
                case "-":wynik = t1[id] - t2[id];break;
            }
            textBox4.AppendText(t1[id].ToString()+
			                    bt.Tag+
								t2[id].ToString()+
								"="+wynik.ToString());
        }

        private void button4_Click(object sender, EventArgs e)
        {
            textBox4.Clear();
            for (int id = 0; id < ROZMIAR; id++)
            {
                int wynik = t1[id] + t2[id];
                textBox4.AppendText(t1[id].ToString() +
				         "+" + t2[id].ToString() +
						 "=" + wynik.ToString() +
						 Environment.NewLine);
            }
        }
    }
}

Rozwiązanie pod konsolę C#

Powyższe zadania rozwiązane przy użyciu konsoli C# Visual Studio

Wskazówka:


using System;

namespace tablice_jednowymiarowe_cz2_konsola
{
    internal class Program
    {
        const int ROZMIAR = 10;//rozmiar tablic
        static Random los = new Random();//generatol wartosci losowych
        static int z = 0;//zakres losowania
        static int[] t1 = new int[ROZMIAR];//tablica nr 1
        static int[] t2 = new int[ROZMIAR];//tablica nr 2


        static int[] losoweElementyTablicy(int rozmiar, int zakres)
        {
            int[] tab = new int[rozmiar];
            for (int i = 0; i < rozmiar; i++)
            {
                tab[i] = los.Next(zakres) + 1;
            }
            return tab;
        }

        static void zad1()
        {
            //odczytaj zakres losowego zbioru
            Console.WriteLine("Podaj zakres losowego zbioru: ");
            z = int.Parse(Console.ReadLine());
            t1 = losoweElementyTablicy(ROZMIAR, z);
            t2 = losoweElementyTablicy(ROZMIAR, z);
            //Console.Clear();
            //\t znacznik użycia tabulatora
            Console.WriteLine("id\ttab1\ttab2");
            for (int i = 0; i < ROZMIAR; i++)
                Console.WriteLine(i + "\t" + t1[i] + "\t" + t2[i]);
        }

        static void zad2()
        {
            //sumowani elemtów z dwóch tablic
            Console.WriteLine("Podaj indeks: ");
            int id = int.Parse(Console.ReadLine());
            int wynik = t1[id] + t2[id];
            Console.WriteLine(t1[id]+"+"+t2[id]+"="+wynik);
        }

        static void zad3()
        {
            for (int id = 0; id < ROZMIAR; id++)
            {
                int wynik = t1[id] + t2[id];
                Console.WriteLine(t1[id]+"+"+t2[id]+"="+wynik);
            }
        }

        static void Main(string[] args)
        {
            Console.WriteLine("Witaj w CzD!");
            Console.WriteLine("Zad 1");
            zad1();
            Console.WriteLine("Zad 2");
            zad2();
            Console.WriteLine("Zad 3");
            zad3();
        }

    }
}

Ilustracja działającego rozwiązania konsolowego

Ilustracja działającego rozwiązania konsolowego. Visual Studio C#
Alkomat- wirtualny test

Alkomat- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
Olinowanie stałe- kalkulator średnic

Olinowanie stałe- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
przepis na gogfry

Przepis na gofry

zobacz
przepis na bitą śmietanę

Przepis na bitą śmietanę

zobacz