You are on page 1of 6

VB.

NET Seminar 6
Tablouri - continuare
Determinarea elementului minim/maxim dintr-un vector
Exemplul 1: S se realizeze un formular care s permit introducerea de la tastatur (cu
InputBox) a datelor referitoare la angajaii unei companii i afieaz n 2 casete de text
angajatul cel mai tnr i cel mai vrstnic.

Configurm proprietile urmtoarelor controale:


Control
Form
Label
RichTextBox
Label
TextBox
Label
TextBox
Button
Button
Button

Proprietate
Text
Text
Name
ReadOnly
Text
Name
Text
Name
Name
Text
Name
Text
Name
Text

Codul surs este urmtorul:

Valoare
Minim/maxim vector
Angajati
rtxtAngajati
True
Varsta minima
txtVarstaMin
Varsta maxima
txtVarstaMax
btnCiteste
Citeste Angajati
btnVarstaMin
Varsta minima
btnVarstaMax
Varsta maxima

Eveniment

Click vezi procedura


Click vezi procedura
Click vezi procedura

VB.NET Seminar 6
Public Class Form1
Dim Angajati(5) As String
Dim Varsta(5) As Integer
Dim i As Integer
Private Sub btnCiteste_Click(sender As Object, e As EventArgs) Handles btnCiteste.Click
For i = 0 To 5
Angajati(i) = InputBox("Introduceti numele angajatului: " + Str(i))
Varsta(i) = InputBox("Introduceti varsta angajatului: " + Str(i))
rtxtAngajati.AppendText("Angajatul " + Angajati(i) + " are varsta " + Str(Varsta(i)) + "
ani")
rtxtAngajati.AppendText(Environment.NewLine)
Next
End Sub
Private Sub btnVarstaMin_Click(sender As Object, e As EventArgs) Handles btnVarstaMin.Click
Dim poz_min As Integer
Dim min As Integer
min = Varsta(0)
poz_min = 0
For i = 1 To 5
If Varsta(i) < min Then
min = Varsta(i)
poz_min = i
End If
Next
txtVarstaMin.Text = "Angajatul " + Angajati(poz_min) + " este cel mai tanar"
End Sub
Private Sub btnVarstaMax_Click(sender As Object, e As EventArgs) Handles btnVarstaMax.Click
Dim poz_max As Integer
Dim max As Integer
max = Varsta(0)
poz_max = 0
For i = 1 To 5
If Varsta(i) > max Then
max = Varsta(i)
poz_max = i
End If
Next
txtVarstaMax.Text = "Angajatul " + Angajati(poz_max) + " este cel mai varstnic"
End Sub
End Class

VB.NET Seminar 6
Matrice
O matrice este un tablou bidimensional cu i linii (rnduri) si j coloane, unde i=1,n i j=1,m.
Parcurgerea tablourilor cu dou sau mai multe dimensiuni se face cu ajutorul a dou sau mai
multe structurii repetitive: For Next imbricate.
A(1,1)
A(2,1)
.
A(i,1)

A(n,1)

A(1,2)

A(1,j)

A(1,m)

A(i,j)
A(n,m)

Exemplul 2: S se realizeze un formular prin care s se citeasc matricea A(n,m) de la tastatur


(cu InputBox) i s se afieze ntr-un control de tip RichTextBox.
Formularul va arta ca in figura urmtoare:

Configurm proprietile urmtoarelor controale:


Control
Form
Label
TextBox
Label
TextBox
Label
RichTextBox
Button

Proprietate
Text
Text
Name
Text
Name
Text
Name
ReadOnly
Name
Text

Valoare
Matrice
Nr. de randuri
txtNrR
Nr. de coloane
txtNrC
A
rtxtA
True
btnCitesteA
Citeste A

Eveniment

Click vezi procedura

VB.NET Seminar 6
Button

Name
Text

btnAfiseazaA
Afisare A

Click vezi procedura

Codul surs este urmtorul:


Public Class Form1
Dim n As Integer 'nr de coloane
Dim m As Integer 'nr de linii
Dim i As Integer
Dim j As Integer
Dim A(99, 99) As Double
Private Sub btnCitesteA_Click(sender As Object, e As EventArgs) Handles btnCitesteA.Click
n = Val(txtNrR.Text) - 1
m = Val(txtNrC.Text) - 1
For i = 0 To n
For j = 0 To m
A(i, j) = Val(InputBox("A(" + Str(i) + "," + Str(j) + ")"))
Next
Next
End Sub
Private Sub btnAfiseazaA_Click(sender As Object, e As EventArgs) Handles btnAfiseazaA.Click
For i = 0 To n
For j = 0 To m
rtxtA.AppendText(Str(A(i, j)) + " ")
Next
rtxtA.AppendText(Environment.NewLine) 'la terminarea liniei curente trecem pe linia
urmatoare
Next
End SubEnd Class

Exemplul 3: Modificai aplicaia de mai sus astfel nct n ultima linie/coloan din caseta de tip
RichTextBox s se afieze sumele pe linii si coloane.
Rezolvare: Modificm doar procedura coespunztoare butonului de afiare:
Private Sub btnAfiseazaA_Click(sender As Object, e As EventArgs) Handles btnAfiseazaA.Click
Dim suma_r As Double
Dim suma_c As Double
'afisam matricea si calculam suma pe linii
For i = 0 To n
suma_r = 0 'calculam suma
For j = 0 To m
rtxtA.AppendText(Str(A(i, j)) + " ")
suma_r = suma_r + A(i, j)
Next
rtxtA.AppendText(suma_r)
rtxtA.AppendText(Environment.NewLine) 'la terminarea liniei curente trecem pe linia
urmatoare
Next
'calculam suma pe coloane

VB.NET Seminar 6
For j = 0 To m
suma_c = 0
For i = 0 To n
suma_c = suma_c + A(i, j)
Next
rtxtA.AppendText(Str(suma_c) + " ")
Next
End Sub

Exemplul 4: Modificai aplicaia de mai sus astfel nct n dou casete de tip text s afiai valorile
minime de pe linii/coloane.

Adugm 2 casete de text i 2 butoane:


Control
TextBox
TextBox
Button
Button

Proprietate
Name
Multiline
Name
Name
Text
Name
Text

Valoare
txtMinR
True
txtMinC
btnMinC
Min Coloane
btnMinR
Min Linii

Eveniment

Click vezi procedura


Click vezi procedura

Procedurile pt. butoanele nou adugate sunt:


Private Sub btnMinC_Click(sender As Object, e As EventArgs) Handles btnMinC.Click
Dim min_c(m) As Double 'vectorul valorior minime pe coloane
For j = 0 To m
min_c(j) = A(0, j) 'consideram min = primul element de pe coloana
For i = 1 To n
If A(i, j) < min_c(j) Then 'daca elementul curent < min atunci min se modifica

VB.NET Seminar 6
min_c(j) = A(i, j)
End If
Next
txtMinC.AppendText(Str(min_c(j)) + " ")
Next
End Sub
Private Sub btnMinR_Click(sender As Object, e As EventArgs) Handles btnMinR.Click
Dim min_r(n) As Double 'vectorul valorior minime pe linii
For i = 0 To n
min_r(i) = A(i, 0) 'consideram min = primul element de pe linie
For j = 1 To m
If A(i, j) < min_r(i) Then 'daca elementul curent < min atunci min se modifica
min_r(i) = A(i, j)
End If
Next
txtMinR.AppendText(Str(min_r(i)) + Environment.NewLine)
Next
End Sub

Tema 1: S se realizeze un formular care:


-

s citeasc o matrice de la tastatur;

calculeze suma elementelor matricei;


afieaz elemental minim i maxim din matrice.

Tema 2: Realizai un formular care s permit efectuarea produsului a dou matrice preluate de la
tastatur.

You might also like