Шпоры к экз. по КП 1-й курс 2-й семестр
.doc
|
Вопрос 15. ТА нахождения экстремумов. 1. Опред. max числа и его номера в одномерном массиве: Max = -1E+38 For I = 1 To N If A(I) >Max Then Max = A(I): T=I Next I Если необх. запом. номер послед., то зн. > меняется на зн. >= 2. Опред. min числа и его номера в одномерном массиве: Min = 1E+38 For I = 1 To N If A(I) < Min Then Min = A(I) T=I End If Next I 3. Опред. max числа и его координат в двумер. массиве: Max = -1E+38 For I = 1 To N For J = 1 To M If A(I,J) >Max Then Max = A(I,J) T=I P=J End If Next J,I 4. Опред. max числа и его корд. в кажд. строке двумер. мас. (в столбце): For I = 1 To N Max = -1E+38 For J = 1 To M If A(I,J) > Max Then Max = A(I,J) T=J End If Next J Text1.Text = Max ' значение max числа Text2.Text = I ' номер строки Text3.Text = T ' координаты в столбце 5. Опред. кол-ва max элементов в послед-ти данных: PC=1 Max = -1E+38 Do While PC=1 x = InputBox ("x=") If x > Max Then Max = x K=0 End If If x = Max Then K=K+1 End If PC=("Вв. 1 или 0 для выхода") Loop Text.Text = K 6. Опред. перечня символьных данных, соответствующих max числовым значениям: PC=1 Max = 0 Do While PC=1 FAM = InputBox ("Вв. фамилии") BAL = InputBox ("Вв. баллы") If BAL > Max Then Max = BAL: SPL = "" If BAL = Max Then SPL = SPL + FAM + " " PC= InputBox ("Вв. 1 или 0") Loop Text1.Text = SPL |
Вопрос 20. ТА обработки текстовой информации 1. ТА выделения слов текста
Нахождение максимального слова: 1) If Len(S) > max Then max = Len(S): M = S 2. ТА формир. мас. слов текста с уч. лишних пробелов T = InputBox ("Вв. текст") T = T + " " L = Len(T) ReDim S (1 To L) As String K = 1 ' индекс массива слов S(K) = "" ' обнуление ячейки массива For I = 1 To L C = Mid (T, I, 1) ' выделение одиноч. символа If C <> "" Then S (K) = S(K) + C: GoTo 1 If S(K) <> "" Then K = K + 1: S(K) = "" 1 Next I K = K – 1 3. ТА формир. слова, состоящ. из разных букв SL = InputBox ("Вв. слово с повторяющ. символами") R = "" ' симв. переменная с неповтоярющ. символами L = Len(SL) For I = 1 to L ' доступ к каждому символу введ. слова C = Mid(SL, I, 1) ' выделение одиноч. символа If Instr(R, C) = 0 Then R = R+C 'фор. текста без повтор. сим-в Next I Text1.Text = R 4. ТА удаления
4.1 Удаление символа заданной позиции. SL = InputBox ("Вв. слово") P = InputBox ("Вв. номер удаляемого символа") SL = Mid(SL, 1, P – 1) + Mid(SL, P + 1) 4.2. Удаление заданного символа
SL = InputBox ("Вв. слово") P = InputBox ("Вв. удаляемый символ") (P As String) L = Len(SL) NSL = " " ' новый текст с удаленными символами For I = 1 To L C = Mid(SL, I, 1) If C <> P Then NSL = NSL + C Next I Text1.Text = NSL 5. ТА определения явл. ли выделенный символ цифрой. If C >="0" And C <="9" Then Text1.Text = "Цифра" Else "Не цифра" |
Вопрос 14. Считывание и изменение базы данных. Для обработки инф-ции, содерж. в БД, сущ. много различ. способов. Одним из наиб. известных явл. формир. SQL запросов. Однако далеко не все задачи мож. решить созданием запросов. Универс. методом, позволяющим решить любую задачу управления БД, явл. алгоритмич. программирование. При этом, если программир. ведется с прим. динамич. массивов, то программы получ. компактными, а при их создании мож. активно исп. и творчески применять разнообр. ТА. Для того, чт. исп. дин. массивы, необх. сначала опред. текущ. размер БД: Data1.Recordset.MoveLast N=Data1.Recordset.RecordCount Затем производится переобъявление массива: ReDim MS(1 To N) As ZAP Формир. массива производ. с исп. эл. упр. Data и TextBox: Data1.Recordset.MoveFirst For I=1 To N With MS(I) .NP = Text1(0) .NAZ = Text1(1) ………………………………… End With Data1.Recordset.MoveNext Next I - Вывод БД на форму производ. с исп. эл. упр. ListBox: For I =1 To K' К кол-во полей в БД List1(I-1).Clear ' программа очистки Next I For I = 1 To N With MS(I) List1(0).List(I-1) = .NP List1(1).List(I-1) = .NAZ ……………………………….. End With Next I - Программа добавления записей Command1_Click() Data1.Recordset.AddNew End Sub - Пр-мма удал. записи, предварит. введенной в окно эл. упр. Text1 с пом. эл. упр. Data1: If MsgBox ("Действительно удалить запись _ +Data1.Recordset.Fields ("FAM")+"?", vbYesNO) = vbYes _ Then Data1.Recordset.Delete N=N-1 Data1.Recordset.MoveNext If Data1.Recordset.EOF Then Data1.Recordset.MoveLast End If - Программа удаления записи по номеру строки в БД: Dim K As String K=InputBox ("Вв. номер строки удаляемой записи") Data1.Recordset.MoveFirst Do While Text1(1) <> "" If Text1(0) = K Then Data1.Recordset.Delete: GoTo1 Data1.Recordset.MoveNext Loop 1 Data1.Recordset.Refresh - Программа перехода на другие формы: Form 1.Hide Form 2.Show |
|
Вопрос 18. ТА перемещ. элементов одномер. массива. Успех в разработке программ. проектов повыш. сложности связан с наличием у разработчика хорошо развитого алгоритмич. мышления. Этому в большей степени способствует представленный ниже алгоритм. 1. ТА сдвига. Доп., дан мас. произвольных чисел. Необх. вып. перемещение в мас. так, чт. в начале массива оказ. положит. числа, а в конце отриц. При этом взаимный порядок расположения чисел был сохранен.
For I = 1 To N If A(I) <= 0 Then GoTo 1 B = A(I) For J = I – 1 To P Step -1 A(J + 1) = A(J) Next J A(P) = B: P = P + 1 1 Next I 2. ТА удаления заданного числа в массиве. Доп., дан мас. произвольных чисел. Необх. удалить заданное число и мас. сжать (т.е. уменьшить в размере).
F = 0 For I = 1 To N If B <> A(I) Then GoTo 1 For J = I To N – 1 A(J) = A(J+1) ' текущее число прин. знач. последующего Next J
1 Next I If F = 0 Then Text2.Text = "Таких чисел нет" 3. ТА добавления. Доп., дан массив N сотруд. фирмы, упорядоч. по алфавиту. Необх. добавить M новых фам. так, чт. упор-сть по алф. сохранялась.
For I = 1 To M DF = InputBox ("Вв. добавляемую фам.") F = 0 For J = 1 To N + I -1 If DF >= FAM(I) Then GoTo 1 For L = N + I – 1 To J Step -1 FAM(L-1) = FAM(L) Next L FAM(J) = DF J = N + I – 1 F = 1 1 Next J If F = 0 Then FAM(N+I) = DF Next I |
Вопрос 16. ТА сортировки Сор-ка – это упорядочивание элементов мас., при кот. элементы как бы выстраиваются в порядке возрастания (по алф.) или в порядке убыв.. Наиб. просто осущ. сор-ка элементов одномер. мас., для выполнения кот. необх. два цикла: 1) обеспечивает доступ ко всем текущим элементам, кроме последнего; 2) об. дос. ко всем последующим элементам относительно текущего. 1. Простая сор-ка: сравнивается текущий элемент и последующий. При вып. условия сравнения значения элементов меняются местами: For I = 1 To N – 1 For J = I + 1 To N If A(I) >A(J) Then B = A(I) A(I) = A(J) A(J) = B End If Next J,I Данная программа позволяет упорядочить по возрастанию элементы числового массива или по алф. символьные элементы. Если необх. выполнить сор-ку числового массива по убыванию, то знак > меняется на знак <. 2. Ускоренная сор-ка: сравнивается текущий элемент и последующий. При вып. условия сравнения значения элементов не меняются местами, а запоминают во вспомогат. переменной номер последующего элемента. При вых. из внутр. цикла если вспомогат. переменная изменила свое первонач. значение, то происх. перестановка соответ. элементов: For I = 1 To N-1 T = I ' вспомогательная переменная For J = I +1 To N If A(T) > A(J) Then T=J Next J If T > I Then B = A(T) A(T) = A(J) A(J) = B End If Next I 3. Сор-ка неск. массивов по значениям одного из них: For I = 1 To N-1 For J = I +1 To N If BAL(I) < BAL(J) Then B = BAL(I): BAL(I) = BAL(J): BAL(J) = B F = FAM(I): FAM(I) = FAM(J): FAM(J) = F End If Next J,I 4. Сор-ка мас. записей по значению одного поля. Доп., необх. упорядочить мас. записей по убыванию объема выпуска продукции: DIM MAS As ZAP For I = 1 To N-1 For J = I+1 To N If MS(I).SUM < MS(J).SUM Then MAS = MS(I) MS(I) = MS(J) MS(J) = MAS End If Next J,I 5. Упорядочивание 3-х мас. по двум полям. Доп. даны 3 мас.: NG (1 To N) As Byte FAM (1 To N) As String BAL (1 To N) As Byte Необх. по каждой группе упорядочить фам. студентов в порядке убывания получ. оценок. Снач. применяем предыдущий ТА №3 для сортировки номеров групп по возрастанию: PC=1 Do While PC=1 PC = 0 For I = 1 To N-1 If NG(I) = NG(I+1) And BAL(I) < BAL(I+1) Then B = BAL(I): BAL(I) = BAL (I+1): BAL(I+1) = B F = FAM(I): FAM(I) = FAM(I+1): FAM(I+1) = F PC=1 End If Next I Loop |
Вопрос 17. ТА формирования массива разных данных. Часто при разработке программных проектов возник. необх. корректной обработки массивов с повторяющ. эл-ми. Иногда в этом случае целесооб. сформир. вспомогат. мас. разных данных. 1. Доп., дан мас. повторяющ. фамилий F (1 To N) As String, необх. сформир. мас. R (1 To N) As String без повторений. K = 0' кол-во разных фамилий For I = 1 To N R(I) = InputBox ("Вв. фамилию") For J = 1 To K If F(I) = F(J) Then GoTo 1 Next J K = K+1: R(K) = F(I) 1 Next I 2. Весьма актуальны задачи определения рейтинга, т.е. часто необх. сформир. не только мас. разных данных, но и мас. кол-ва повторений этих данных в исходном массиве: K = 0 For I = 1 To N F(I) = InputBox ("Вв. фамилию") For J = 1 To K If F(I) = R(J) Then Kol(J) = Kol(J) + 1 = GoTo 1 Next J K = K +1: R(K) = F(I): Kol(K) = 1 1 Next I 3. Доп., дан мас. заказанных товаров NAZ (1 To N) As String и мас. их кол-в Kol (1 To N) As Integer. Треб. определить перечень заказ. товаров без повторения и их суммар. спрос: K = 0 For I = 1 To N NAZ(I) = InputBox ("Вв. название товара") Kol(I) = InputBox ("Вв. кол-во товаров") For J = 1 To K If NAZ(I) = R(J) Then SUM(J) = SUM(J) + Kol(I): GoTo 1 Next J K = K +1: R(K) = NAZ(I): SUM(K) = Kol(I) 1 Next I 4. Доп., исход. данные представ. в виде 2-х двумер. мас. Известно название заказ. М товаров и их кол-во N магазинами. Треб. опред. переч. заказ. товаров без повтор. и их суммар. спрос.
K = 0 For I = 1 To N For J = 1 To M NAZ(I,J) = InputBox ("Вв. название товара") Kol(I,J) = InputBox ("Вв. кол-во товара") For L = 1 To K If NAZ(I,J)=R(L) Then SUM(L)=SUM(L) + Kol(I,J): GoTo 1 Next L K = K + 1: R(K) = NAZ(I,J): SUM(K): Kol(I,J) 1 Next J,I |
|
Вопрос 19. ТА проверки на неповторяемость. Часто при решении задач обработки БД возник. необх. проверки на неповт. ее элементов. Здесь возмож. разные комбинации: 1) проверка на неповт. в одномер. мас.; 2) пр-ка на неповт. в строке или столбце двумер. мас.; 3) пр-ка на неповт. во всем двумер. массиве. 1) Пр-ка на неповт. в одномер. массиве: а) при вводе элементов одномер. мас.: For I = 1 To N 1 A(I) = InputBox ("Вв. "+Str(I) + "–й элем. массива") For J = 1 To I – 1 If A(I) = A(J) Then GoTo 1 Next J, I б) опред. элементы одномерного массива разные или нет F = 0 For I = 1 To N – 1 For J = I + 1 To N If A(I) = A(J) Then F = 1 Next J, I If F = 0 Then Text1.Text = "Разные" Else Text1.Text = "Есть повтор" End If 2) Пр-ка на неповт. в строке или столбце двум. массива For I = 1 To N For J = 1 To M 1 A(I,J) = InputBox ("A("+Str(I)+","+Str(J)+")=") For L = 1 To J – 1 If A(I,J) = A(I,L) Then GoTo 1 Next L Next J Next I 3) Пр-ка на неповт. в двум. мас.. Программа анализа: опред. – двумер. мас. состоит из разных чисел или есть в нем повторяющиеся элементы. F = 0 ' вспомогательная переменная K = 0 ' кол-во заполненных ячеек вспомогат. одномер. мас. неповторяющ. данных For I = 1 To N For J = 1 To M For L = 1 To K 'цикл поиска текущ. эл-та в одномер. мас. If A(I,J) = R(L) Then F = 1 Next L K = K + 1: R(K) = A(I,J) Next J,I If F = 0 Then Text1.Text = "Все разные" Else Text1.Text = "Есть повтор" |




