2 / 2 / 1
Регистрация: 02.06.2011
Сообщений: 61
1

Преобразуйте массив, поменяв местами минимальный и максимальный элементы в каждой строке массива

02.06.2011, 13:58. Показов 2000. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дан массив А(n,m). Преобразуйте массив, поменяв местами минимальный и максимальный элементы в каждой строке массива. Для контроля правильности работы алгоритма, при выводе элементов массива в ячейки рабочего листа, параллельно выведите копию массива в ячейки рабочего листа через два столбца от исходного массива (например, исходный массив будет выведен в ячейки A1:E5, а его копия – в ячейки H1:L5).

прошу написать максимально простым алгоритмом)

Добавлено через 1 час 48 минут
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Public Sub йке()
Dim d()
n = InputBox("Введите количество строк массива")
m = InputBox("Введите количество столбцов массива")
a = InputBox("Введите нижнюю границу значений элементов массива")
b = InputBox("Введите верхнюю границу значений элементов массива")
ReDim d(n, m)
S = 0
Randomize
    For i = 1 To n
        For j = 1 To m
             d(i, j) = Int(a + Rnd * (b - a))
            Cells(i, j) = d(i, j)
Cells(i, j + 2 + m) = d(i, j)
Next j
Next i
 
For i = 1 To n
For j = 1 To m
If d(i, j) > d(i, j + 1) Then
 p = d(i, j)
o = d(i, j + 1)
d(i, j) = o
d(i, j + 1) = p
 
End If
Next j
Next i
End Sub
покажите пожалуйсто ошибку)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.06.2011, 13:58
Ответы с готовыми решениями:

Массив: Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой строке.
Дана матрица размера M x N. Преобразовать матрицу, поменяв местами минимальный и максимальный...

Преобразовать матрицу, поменяв местами минимальный и максимальный элементы в каждой строке
2. Дана матрица размером MxN, заполненная произвольным образом целыми числами из диапазона ....

Массив: Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой строке / столбце.
на языке С++ Дана матрица размера 5 x 10. Преобразовать матрицу, поменяв местами минимальный и...

Массив: Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой строке / столбце.
Дана матрица размера 5 x 10. Преобразовать матрицу, поменяв местами минимальный и максимальный...

5
730 / 406 / 95
Регистрация: 19.12.2010
Сообщений: 756
02.06.2011, 14:15 2
подправил.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Public Sub йке()
n = InputBox("Введите количество строк массива")
m = InputBox("Введите количество столбцов массива")
a = InputBox("Введите нижнюю границу значений элементов массива")
b = InputBox("Введите верхнюю границу значений элементов массива")
ReDim d(n, m)
S = 0
Randomize
    For i = 1 To n
        For j = 1 To m
             d(i, j) = Int(a + Rnd * (b - a))
            Cells(i, j) = d(i, j)
'Cells(i, j + 2 + m) = d(i, j)
Next j
Next i
 
For i = 1 To n
Max = d(i, 1)
Min = d(i, 1)
n_max = 1
n_min = 1
For j = 2 To m
If d(i, j) > Max Then
Max = d(i, j)
n_max = j
End If
If d(i, j) < Min Then
Min = d(i, j)
n_min = j
End If
Next j
temp = d(i, n_max)
d(i, n_max) = d(i, n_min)
d(i, n_min) = temp
Next i
    For i = 1 To n
        For j = 1 To m
         Cells(i, j + 2 + m) = d(i, j)
Next j
Next i
 
End Sub
0
437 / 144 / 9
Регистрация: 12.01.2009
Сообщений: 678
Записей в блоге: 1
02.06.2011, 14:24 3
Можно попробовать так, но это очень не оптимизировано.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Sub asdf()
Dim d()
n = InputBox("Введите количество строк массива")
m = InputBox("Введите количество столбцов массива")
a = InputBox("Введите нижнюю границу значений элементов массива")
b = InputBox("Введите верхнюю границу значений элементов массива")
ReDim d(n, m)
s = 0
Randomize
    For i = 1 To n
        For j = 1 To m
             d(i, j) = Int(a + Rnd * (b - a))
            Cells(i, j) = d(i, j)
Cells(i, j + 2 + m) = d(i, j)
Next j
Next i
 
For i = 1 To n
Min = d(i, 1)
Max = d(i, 1)
For j = 1 To m - 1
If d(i, j + 1) > Max Then
  Max = d(i, j + 1)
ElseIf d(i, j + 1) < Min Then
  Min = d(i, j + 1)
End If
Next j
 
For k = 1 To n
If d(i, k) = Min Then
d(i, k) = Max
Cells(i, k) = Max
ElseIf d(i, k) = Max Then
d(i, k) = Min
Cells(i, k) = Min
End If
Next k
 
Next i
End Sub
Код, который выше - не лучше.
0
2 / 2 / 1
Регистрация: 02.06.2011
Сообщений: 61
02.06.2011, 14:47  [ТС] 4
а мой можно чуть подправить и всё? или там всё так плохо?
0
298 / 298 / 150
Регистрация: 07.05.2011
Сообщений: 592
02.06.2011, 15:14 5
Еще вариант
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Option Explicit
Rem Дан массив А(n,m). Преобразуйте массив, поменяв местами минимальный и
Rem максимальный элементы в каждой строке массива. Для контроля правильности работы 
Rem алгоритма, при выводе элементов массива в ячейки рабочего листа, параллельно
Rem выведите копию массива в ячейки рабочего листа через два столбца от исходного
Rem массива (например, исходный массив будет выведен в ячейки A1:E5, а его копия – 
Rem в ячейки H1:L5).
 
Public Sub йке()
Dim n As Integer, m As Integer, a As Integer, b As Integer
Dim tmp As Integer, d() As Integer
Dim i As Integer, j As Integer
Dim jmax As Integer, jmin As Integer
 
    n = InputBox("Введите количество строк массива")
    m = InputBox("Введите количество столбцов массива")
    a = InputBox("Введите нижнюю границу значений элементов массива")
    b = InputBox("Введите верхнюю границу значений элементов массива")
 
    ReDim d(n, m)
    Randomize
    For i = 1 To n
        For j = 1 To m
            d(i, j) = Int(a + Rnd * (b - a))
            Cells(i, j) = d(i, j)
            Cells(i, j + 2 + m) = d(i, j)
        Next j
    Next i
 
    For i = 1 To n
        jmax = 1
        jmin = 1
        For j = 2 To m
            If d(i, j) > d(i, jmax) Then
                jmax = j
            ElseIf d(i, j) < d(i, jmin) Then
                jmin = j
            End If
        Next j
        If jmax <> jmin Then
            tmp = d(i, jmax)
            d(i, jmax) = d(i, jmin)
            d(i, jmin) = tmp
            Cells(i, jmax) = d(i, jmax)
            Cells(i, jmin) = d(i, jmin)
        End If
    Next i
 
End Sub
0
2 / 2 / 1
Регистрация: 02.06.2011
Сообщений: 61
02.06.2011, 15:28  [ТС] 6
во, шикарно, спасибо)
0
02.06.2011, 15:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.06.2011, 15:28
Помогаю со студенческими работами здесь

Массив: В каждой строке двумерного массива поменять местами максимальный и минимальный элементы
дана матрица вещественных чисел. В каждой строке поменять местами максимальный и минимальный...

Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой строке
Дана матрица размера M × N. Преобразовать матрицу, поменяв местами минимальный и максимальный...

Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой строке
1. Дана матрица размера МxN Преобразовать матрицу, поменяв местами минимальный и максимальный...

Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой строке
Привет помогите пожалуста прогу написать. Дана матрица размера, а x б. Преобразовать матрицу,...

Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой строке
Дана матрица размера M*N, преобразовать матрицу, поменяв местами минимальный и максимальный элемент...

Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой строке
Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой строке ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru