MKdI - Metody komputerowe dla inżynierów Laboratorium nr 2
Przykładowe zadania:
Zadanie 1:
Napisać program, w którym wczytuje się wyrazy (liczby) dowolnego ciągu liczb całkowitych (koniec ciągu oznaczony jest zerem). Elementy wczytanego ciągu zapisać w tablicy i wyświetlić w pierwszej linii. W drugiej linii wyświetlić liczby dodatnie podzielne przez 3 (zapisać do drugiej tablicy) oraz ich sumę, np. dla ciągu 5, 6, -3, 3, 9, 5, 0 należy otrzymać wynik: 6, 3, 9 suma = 18. Ciąg testowy: 1, 4, -7, 9, 3, -2, 7, 6, 9, -1, 3, 6, 9, 8, 0. Podać ciąg podzielny i jego sumę.
Sub Zadanie01()
Dim Ciag(1 To 20) As Integer
Dim Podzielne(1 To 20) As Integer
Dim Suma As Integer
Dim Liczba As Integer
Dim i As Integer
Dim n As Integer
Dim m As Integer
Dim strCiag As String
Dim strPodzielne As String
n = 1 'ilość liczb w ciągu
m = 1 'ilość liczb podzielnych przez 3 w ciągu
Suma = 0
Do
Liczba = Val(InputBox("Podaj kolejny wyraz ciągu (0 kończy wprowadzanie danych)", "Wyrazy ciągu"))
If Liczba <> 0 Then 'jeżeli pobrana liczba jest inna niż 0 to:
Ciag(n) = Liczba 'dopisz liczbę do tablicy Ciągu
n = n + 1
If (Liczba > 0 And Liczba / 3 = Liczba \ 3) Then
'jeżeli liczba podzielona przez 3 daje taki sam wynik jak ta liczba dzielona przez 3 w sposób całkowity to jest to liczba podzielna przez 3
Podzielne(m) = Liczba
m = m + 1
Suma = Suma + Liczba
End If 'koniec warunku sprawdzającego czy liczba podzielna przez trzy
End If 'koniec warunku sprawdzającego czy liczba różna od 0
Loop Until Liczba = 0 'pętla Do powtarzana, aż do pobrania liczby 0 kończącej
'Wyświetlenie wyników
strCiag = ""
For i = 1 To n
strCiag = strCiag + Str(Ciag(i))
Next i
MsgBox ("Elementy ciągu:" + strCiag + ", wprowadzono " + Str(n) + " elementów")
strPodzielne = ""
For i = 1 To m
strPodzielne = strPodzielne + Str(Podzielne(i))
Next i
MsgBox ("Elementy podzielne przez 3 ciągu:" + strPodzielne + ", wprowadzono " + Str(m) + " elementów" + Chr(13) + "Suma ciągu:" + Str(Suma))
End Sub
Zadanie 2:
Wpłacamy do banku kwotę X. Oprocentowanie wynosi P procent w skali rocznej. Napisać program, który dla danych X, P obliczy po ilu latach wartość wkładu zostanie podwojona. Wyświetlić również wyniki pośrednie, tzn. wartość wkładów po każdym następnym roku, aż do momentu podwojenia.
Sub Zadanie02()
Dim X As Single 'zmienna przechowująca wpłacaną kwotę
Dim NowaKwota As Single 'zmienna przechowująca kwotę z oprocentowaniem po każdym roku
Dim P As Single 'zmienna przechowująca oprocentowanie
Dim Rok As Integer 'zmienna przechowująca liczbę lat
Do
X = Val(InputBox("Podaj kwotę X wpłaty:", "Bank"))
Loop Until X > 0 'pętla Do uniemożliwia wprowadznie liczby mniejszej lub równej 0
Do
P = Val(InputBox("Podaj oprocentowanie P roczne w %:", "Bank"))
Loop Until P > 0
'pobrane oprocentowanie jest w %, trzeba je podzielić przez 100
P = P / 100
Rok = 0 'zerowanie, wpłata odbywa się w "zerowym" roku oszczędzania
NowaKwota = X 'kwota przechowywana w banku znajduje się w zmiennej NowaKwota
Do
Rok = Rok + 1 'zwiększamy rok oszczędzania
NowaKwota = NowaKwota + NowaKwota * P
'do kwoty oszczędności dodajemy procent z tej kwoty, jaki narósł w ciągu roku
MsgBox ("Rok : " + Str(Rok) + " Oszczędności : " + Str(NowaKwota))
Loop Until NowaKwota >= 2 * X
'pętla Do wykonuje się, aż oprocentowany wkład będzie co najmniej dwukrotnie wyższy
MsgBox ("Wpłata : " + Str(X) + " Oprocentowanie : " + Str(P * 100) + "%")
MsgBox ("Wkład zostanie podwojony po " + Str(Rok) + " latach")
End Sub
Zadanie 3:
Napisać program, który dla grupy studenckiej liczącej p osób wczytuje następujące dane (do tablicy określonego, zdefiniowanego typu): Nazwisko i imię, płeć (K/M), wysokość stypendium. Dla wprowadzonych danych wykonać następujące czynności:
a. Wyświetlić informacje o osobie (osobach) pobierających najwyższe stypendium,
b. Wyświetlić informacje o średnich stypendiach pobieranych przez kobiety i mężczyzn,
Sub Zadanie03()
Dim Studenci() As typStudent 'tablica dynamiczna przechowująca dane o studentach
Dim LiczStud As Integer 'zmienna przechowująca liczbę studentów
Dim i As Integer 'zmienna wykorzystywana w pętlach
Dim iMax As Integer
Dim vMax As Single
Dim SredniaK As Single
Dim SredniaM As Single
Dim IleK As Integer
Dim IleM As Integer
Do 'Podajemy dla ilu studentów wprowadzamy dane
LiczStud = Val(InputBox("Podaj liczbę studentów: ", "Pobieranie danych"))
Loop Until LiczStud > 0 'pętla Do zabezpieczająca
ReDim Studenci(LiczStud) 'znamy liczbę studentów, więc zmieniamy rozmiar tablicy
'Wczytywanie danych o studentach do tablicy Studenci
For i = 1 To LiczStud
Studenci(i).Imie = InputBox("Podaj Imię studenta: ", "Dane studenta " + Str(i) + " z " + Str(LiczStud))
Studenci(i).Nazwisko = InputBox("Podaj Nazwisko studenta: ", "Dane studenta " + Str(i) + " z " + Str(LiczStud))
Studenci(i).Plec = InputBox("Podaj płeć studenta (K lub M): ", "Dane studenta " + Str(i) + " z " + Str(LiczStud))
Studenci(i).Stypendium = Val(InputBox("Podaj wyskość stypendium studenta: ", "Dane studenta " + Str(i) + " z " + Str(LiczStud)))
Next i
'Szukanie najwyższego stypendium
iMax = 0 'indeks
vMax = 0 'wartość stypendium
For i = 1 To LiczStud
If Studenci(i).Stypendium > vMax Then
iMax = i 'nowy indeks wskazujący na osobę mającą największe stypendium
End If
Next i
MsgBox ("Najwyższe stypendium ma " + Studenci(iMax).Nazwisko + " " + Studenci(iMax).Imie + ", które wynosi: " + Str(Studenci(iMax).Stypendium))
'Obliczanie średniego stypendium dla mężczyzn i kobiet
SredniaK = 0
SredniaM = 0
IleK = 0
IleM = 0
For i = 1 To LiczStud
If Studenci(i).Plec = "K" Then 'student jest kobietą
IleK = IleK + 1
SredniaK = SredniaK + Studenci(i).Stypendium
Else 'student jest mężczyzną
IleM = IleM + 1
SredniaM = SredniaM + Studenci(i).Stypendium
End If
Next i
SredniaK = SredniaK / IleK
SredniaM = SredniaM / IleM
MsgBox ("Średnie stypednium z" + Str(IleK) + " kobiet wynosi: " + Str(SredniaK))
MsgBox ("Średnie stypednium z" + Str(IleM) + " mężczyzn wynosi: " + Str(SredniaM))
End Sub
Zadania do samodzielnego rozwiązania:
Zadanie 4:
Napisać program, w którym wczytywany jest ciąg liczb rzeczywistych (koniec ciągu oznaczony jest zerem, które do ciągu nie należy). Wczytane liczby zapisać w trzech tablicach i wyświetlić w trzech kolejnych liniach. W pierwszej wszystkie liczby, w drugiej liczby dodatnie, w trzeciej ujemne. Po każdym ciągu (w danej linii) wyświetlić ich sumę i liczbę elementów znajdujących się w odpowiedniej tablicy.
Zadanie 5:
Wczytać liczbę n oraz wyrazy dowolnego n elementowego ciągu liczb rzeczywistych do tablicy. Obliczyć średnią arytmetyczną sr wyrazów ciągu, a następnie utworzyć jeszcze dwie tablice i wyświetlić ich zawartość. Pierwsza powinna zawierać liczby większe i równe średniej, druga mniejsze od średniej.
2