. Обработка одномерных массивов и матриц. - VB

Узнай цену своей работы

Формулировка задачи:

1. Обработка одномерных массивов. Дан массив из N чисел. Переместить элементы массива так, чтобы сначала шли все отрицательные по убыванию, а затем все остальные в порядке их ввода. 2. Обработка двумерных массивов (матриц). Даны средние баллы 7 студентов за каждый год обучения. Для каждого студента определить наиболее успешный год нужна программа(((
половину 2го я сделала( Private Sub Command1_Click() Dim i%, j%, Max, A(), B(1 To 7) As Long ReDim A(1 To 7, 1 To 5) For i = 1 To 7 For j = 1 To 5 A(i, j) = Int(Rnd * 4 + 1) List1(j - 1).List(i - 1) = A(i, j) Next j, i Sum = 0 For i = 1 To 7 B(i) = Sum For j = 1 To 5 B(i) = B(i) + A(i, j) List2.List(i - 1) = B(i) Next j, i For i = 1 To 7 For j = 1 To 5 MSFlexGrid1.TextMatrix(i, j) = A(i, j) Next j, i End Sub насколько я понимаю, если здесь правильно, то мне осталось сделать заголовки в гибкой сетке, и собственно определить наиболее успешный год для каждого студента( ах да и еще проблема в заполнении этого массива( я его заполнила от 1 до 5, а на сколько я понимаю там должны быть средние баллы, т.е. как десятичные числа от 1 до 5 =( помогите плиз(

Решение задачи: «. Обработка одномерных массивов и матриц.»

textual
Листинг программы
Dim arrA() As Single, N As Integer 'объявляем исходный массив, его размерность
Dim arrB() As Single, arrC() As Single 'вспомогательный массив
Dim CountB As Integer, CountC As Integer, c As Integer, txt As String 'размерность вспомогательных массивов, счётчик, тектовая переменная для вывода
N = InputBox("N") 'вводим размерность массива
ReDim arrA(1 To N)
CountB = 0: CountC = 0
For i = 1 To N
    arrA(i) = InputBox("A(" & i & ")") 'последовательно вводим элементы
    txt = txt & arrA(i) & " " 'Заполняем текстовую переменную для вывода на экран
    If arrA(i) < 0 Then 'если введённый элемент меньше 0 тогда
        CountB = CountB + 1 'увеличиваем значения счётчика и
        ReDim Preserve arrB(1 To CountB) 'расширяем массив
        arrB(CountB) = arrA(i) 'вводим это значение в массив
    Else
        CountC = CountC + 1 'иначе вводим в другой массив
        ReDim Preserve arrC(1 To CountC)
        arrC(CountC) = arrA(i)
    End If
Next i
'После этой процедуры получится 2 массив, в одном из которых будут все отрицательные, в другом - остальные
'К примеру, мы ввели 0 -1 2 3 -5 8 -2 -1 3 5 . Это будет исходный массив
'первый вспомогательный будет : -1 -5 -2 -1
'второй 0 2 3 8 3 5
 
 
txt = txt & Chr(13) 'Добавляем в текст символ пробела
'сортировка методом пузырька
For i = 1 To CountB
    For j = 1 To CountB - i
        If arrB(j) < arrB(j + 1) Then
            temp = arrB(j)
            arrB(j) = arrB(j + 1)
            arrB(j + 1) = temp
        End If
    Next j
Next i
 
'Теперь у нас есть отсортированный массив отрицательных чисел и остальные числа во втором массиве в порядке их ввода
'Осталось только запихнуть их обратно в исходный массив
For i = 1 To CountB
    arrA(i) = arrB(i) 'Заполняем исходный массив сначала отсортированными отрицательными
    txt = txt & arrA(i) & " "
Next i
c = 0
For i = CountB + 1 To N 'Теперь заполняем остальными в порядке ввода
    c = c + 1
    arrA(i) = arrC(c)
    txt = txt & arrA(i) & " " 'Добавляем в тектовую переменную
Next i
MsgBox txt 'выводим результат

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5
Похожие ответы