Wyznacznik opis programu


Zasada działania:

Private Sub btnOblicz_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOblicz.Click
'Deklaracja zmiennych
Dim n, k, NrPliku, i, p, q As Integer 'p,q - początek i koniec przedziału analizowanego przy pobieraniu macierzy z klawiatury
Dim W(8), wyzn As Single 'W(8) - nasza macierz. W przypadku gdy korzystamy z macierzy 2x2 to
'wykorzystujemy tylko 4 pierwsze elementy tablicy, a pozostałe 5 jest nieużywane
Dim Blad As Boolean
Dim tekst, dane As String
'Przypisanie zmiennym domyślnych wartości
Blad = False
tekst = txtWejscie.Text
dane = ""
'Wyczyszczenie listboxa
lstMacierz.Items.Clear()
'Przypisanie zmiennym n i k domyślnych wartości. Moim zdaniem rozróżnianie n i k jest bez sensu skoro wyznacznik
'można liczyć tylko dla macierzy kwadratowych. Ew. mogę zmienić, że wybór macierzy będzie za pomocą 2 textboxów
'jednego oznaczającego liczbę wierszy, a drugiego ilość kolumn.
If optDwu.Checked Then
n = 2
k = 2
ElseIf optTroj.Checked Then
n = 3
k = 3
End If
'Instrukcje dla wybranego pobierania macierzy z pliku. W każdym kolejnym wierszu powinnien być podany kolejny
'element macierzy. Jeżeli będzie za mało elementów do pobrania zostanie wyświetlony błąd. Jeżeli elementów
'do pobrania będzie więcej niż potrzeba to nadmiar nie zostanie odczytany. Jeżeli podany plik nie istnieje to
'zostanie wyświetlony błąd.
If optPlik.Checked Then
If tekst <> "" Then 'sprawdzenie czy podano jakąś nazwę pliku
NrPliku = FreeFile()
On Error GoTo etyk 'instrukcja dzięki której wykryjemy czy plik istnieje. Niestety nie wiem jak
'ją umieścić w schemacie blokowym (chyba, że po każdej instrukcji byłaby
'skrzynka warunkowa
FileOpen(NrPliku, tekst, OpenMode.Input)'otwarcie pliku
i = 0
Do While Not EOF(NrPliku) And i < n * k 'dopóki nie będzie końca pliku i nie zostanie pobrana
'odpowiednia ilość danych wykonuj

Input(NrPliku, dane) 'pobierz wiersz
W(i) = Val(dane) 'wpisz go do macierzy
i = i + 1
Loop
If i < n * k Then
etyk: MsgBox("Błąd ładowania macierzy z pliku.", , "Bład")'Błąd wyświetlany gdy mamy za mało elementów w pliku

'do pobrania, albo gdy podany plik nie istnieje
'(On Error GoTo etyk)
UWAGA!!!!!!!!!!!!: napis "Błąd" po 2 przecinkach 2 MsgBoxie oznacza tytuł okienka MsgBoxa.

Blad = True
End If
FileClose(NrPliku) 'zamknięcie pliku
Else
MsgBox("Nie podano nazwy pliku.", , "Błąd") 'Błąd wyświetlany w przypadku pustego okienka ze ścieżką do pliku
Blad = True
End If
'Instrukcje dla pobierania macierzy z klawiatury
ElseIf optKlaw.Checked Then
If tekst <> "" Then 'Sprawdzenie czy mamy cokolwiek podane w okienku
i = 0
p = 1 'ustawiamy początek analizowanego fragmentu na początek łańcucha
Do
q = InStr(p, tekst, ";") 'ustawiamy koniec analizowanego fragmentu łańcucha na średnik
If q = 0 Then
MsgBox("Błędnie podana macierz.", , "Błąd") 'Jeżeli nie znaleziono średnika to wyświetlamy błąd
Blad = True
End If
If Not Blad Then
dane = Mid(tekst, p, q - p) 'Wycięcie fragmentu między p a q
W(i) = Val(dane) 'wpisanie elementu do macierzy
p = q + 1 'ustawienie kolejnego początku fragmentu na pierwszy element za średnikiem
i = i + 1
End If
Loop Until Blad Or i >= n * k
If q <> Len(tekst) And i >= n * k Then 'jeżeli podano za mało albo za dużo elementów wyświetlamy błąd
'mamy tu inaczej niż w przypadku pobierania macierzy z pliku, gdzie
'dopuszczaliśmy żeby było elementów w pliku za dużo.
MsgBox("Błędnie podana macierz.", , "Błąd")
Blad = True
End If
Else
MsgBox("Nie podano macierzy.", , "Błąd") 'błąd wyświetlany w przypadku pustego okienka z macierzą
Blad = True
End If
End If
If Not Blad Then
If n = 2 Then
wyzn = W(0) * W(2) - W(1) * W(3) 'wzór na wyznacznik dla macierzy 2x2 (przykładowe źródło - wikipedia)
ElseIf n = 3 Then
'wzór na wyznacznik dla macierzy 3x3
wyzn = W(0) * W(4) * W(8) + W(3) * W(7) * W(2) + W(6) * W(1) * W(5) - W(3) * W(1) * W(8) - W(0) * W(7) * W(5) - W(6) * W(4) * W(2)
End If
If wyzn = 0 Then
lblWynik.Text = Str(wyzn) & "; Macierz osobliwa" 'Jeżeli wyznacznik jest równy 0 to wyświetlamy dodatkowy napis
'że macierz jest osobliwa

Else
lblWynik.Text = Str(wyzn) 'gdy wyznacznik jest niezerowy to go po prostu wpisujemy
End If
End If
If chkWyswietl.Checked And Not Blad Then 'jeżeli zaznaczyliśmy wyświetlanie macierzy i nie było błędu
'dodajemy kolejne elementy do listboxa
For i = 0 To n * k - 1
lstMacierz.Items.Add(W(i))
Next
End If
End Sub
End Class

'W przypadku prośby o zmianę któregoś elementu programu czekam na mail'a cowboy92@wp.pl
'Reklamacje przyjmuję przez 3 dni od czasu otrzymania programu. Nie daję gwarancji, że nie będzie dopytki więc radzę
'poznać strukturę programu (w tym celu podaję ten opis). Starałem się napisać ten program nie tyle najlepiej jak można, a raczej
'najbardziej zgodnie z waszymi standardami i książką (niestety nie mam już do niej dostępu).
'Schemat blokowy w zasadzie nie należał do umowy ale narysowałem go, może nawet zbyt dokładnie.

Wyszukiwarka

Podobne podstrony:
Platforma Stewarta opis programu
Znajdź i zamień opis programu
Opis programowania Pioneer 1430
Opis programu
opis programu czyste powietrze wokol nas
BazaFilmów Opis programu
Polski opis programu Autoruns
Polski opis programu EST
Polski opis programu Chemistry Problems
Opis programu HEC RAS
Opis programu UTC GT
Polski opis programu fx Calc
KEB F5 opis programu
OPIS PROGRAMU
rozdzial 8 Opis programowania krokowego
Opis programu DalilyDiary
Symantec Endpoint Protection 11 0 4014 MR4 MP1 32 bit PL Full OPIS PROGRAMU
Analiza tekstu opis programu

więcej podobnych podstron