0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 21
1

В произвольном одномерном массиве поменять местами максимальный и минимальный элементы

28.03.2015, 17:51. Показов 2963. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В произвольном одномерном массиве поменять местами максимальный и минимальный элементы.
Код в Windows Form
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2015, 17:51
Ответы с готовыми решениями:

В одномерном массиве максимальный и минимальный элементы поменять местами
Здравствуйте помогите решить задачу "В одномерном массиве максимальный и минимальный элементы...

В одномерном массиве поменять местами максимальный и минимальный элементы
Здраствуйте, помогите мне пожалуйста, нужно решить 3 задачки. 1) В одномерном массиве поменять...

Массив. В одномерном массиве поменять местами максимальный и минимальный элементы
В одномерном массиве поменять местами максимальный (MAX) и минимальный (MIN) элементы. Вывести...

В одномерном массиве поменять местами максимальный (MAX) и минимальный (MIN) элементы
В одномерном массиве поменять местами максимальный (MAX) и минимальный (MIN) элементы. Вывести...

19
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
28.03.2015, 17:53 2
Цитата Сообщение от SannyTwo Посмотреть сообщение
Код в Windows Form
Наброски в студию! Что не получается?
0
1568 / 1447 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
28.03.2015, 17:54 3
SannyTwo, Покажи свои наработки, поможем. За тебя делать не хочется
0
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 21
28.03.2015, 18:18  [ТС] 4
Pascal
1
2
3
4
5
6
7
8
9
10
11
max:=1;
min:=1;
for i:= 2 to n do
    begin
    if a[i]>a[max] then max:=i
    else
    if a[i]<a[min] then min:=i;
    end;
c:=a[max];
a[max]:=a[min];
a[min]:=c;
Добавлено через 7 минут

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub
Const N = 20 
Dim a(N) As Double, t As Double, i As Integer, imax As Integer, imin As Integer 
Sheets.Select 
Randomize Timer 
For i = 1 To N 
a(i) = Int((9900 * Rnd + 100) * 100) / 100
Cells(i, 3) = a(i) 
Next i 
imax = 1: imin = 1 
For i = 2 To N 
If a(i) > a(imax) Then imax = i 
 If a(i) < a(imin) Then imin = i 
Next i 
t = a(imax): a(imax) = a(imin): a(imin) = t 
For i = 1 To NCells(i, 4) = a(i) 
Next i 
MsgBox ("Совершен обмен в строках " + Str(imin) + " и " + Str(imax)) 
End Sub
0
COM‐пропагандист
859 / 768 / 147
Регистрация: 18.12.2014
Сообщений: 2,195
Записей в блоге: 4
29.03.2015, 20:38 5
Лучший ответ Сообщение было отмечено SannyTwo как решение

Решение

Ловите функциональщину в этом ITT‐треде.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim r As New Random()
Dim n As Integer = 10
' Массив случайных чисел
Dim a() As Integer = (Enumerable.Range(1, n).Select(Function(item) r.Next(10))).ToArray()
MsgBox(String.Join(vbCrlF, a.Select(Function(x) x.ToString).ToArray()))
 
' минимум и максимум
Dim f = a.Select(Function(item, index) New With{item, index})
Dim iMin As Integer = (From x In f Where x.item = f.Min(Function(item) item.item) Select x.index).ToArray()(0)
Dim iMax = (From x In f Where x.item = f.Max(Function(item) item.item) Select x.index).ToArray()(0)
Dim t As Integer = a(iMin)
a(iMin) = a(iMax)
a(iMax) = t
MsgBox(String.Join(vbCrlF, a.Select(Function(x) x.ToString).ToArray()))
3
1529 / 1477 / 322
Регистрация: 03.10.2012
Сообщений: 1,516
29.03.2015, 21:56 6
Если сложно здесь разобраться, вот код попроще:
VB.NET
1
2
3
4
5
6
7
Dim arr() As Double = {1.9, 2, 8, 4, 5.7, 6, 7.2, 1.6}
        Dim indMin As Integer = Array.IndexOf(arr, arr.Min)
        Dim indMax As Integer = Array.IndexOf(arr, arr.Max)
 
        Dim tmp As Double = arr(indMax)
        arr(indMax) = arr(indMin)
        arr(indMin) = tmp
2
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 21
01.04.2015, 16:08  [ТС] 7
Что то не получается
0
Модератор
Эксперт .NET
4201 / 3286 / 496
Регистрация: 27.01.2014
Сообщений: 6,027
01.04.2015, 16:57 8
Цитата Сообщение от MrCrown Посмотреть сообщение
вот код попроще
и у меня не меняет местами, остаётся все как изначально было
0
38 / 38 / 16
Регистрация: 04.03.2014
Сообщений: 249
01.04.2015, 21:25 9
MrCrown,

Прошу прощения, я немного изменил код и добавил для информации.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Public Class Form1
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim arr() As Double = {1.6, 1.9, 2, 8, 4, 5.7, 6, 7.2}
        Dim indMin As Integer = Array.IndexOf(arr, arr.Min)
        Dim indMax As Integer = Array.IndexOf(arr, arr.Max)
        MsgBox(Array.IndexOf(arr, arr.Min) & "    " & "исходный min")  ' исходный номер индекса минимального числа в массиве  (0), отсчет начинается с "0"
        MsgBox(Array.IndexOf(arr, arr.Max) & "    " & "исходный max")  ' исходный номер индекса максиимального числа в массиве  (3), отсчет начинается с "0"
        Dim tmp As Double = arr(indMax)
        arr(indMax) = arr(indMin)
        arr(indMin) = tmp
        MsgBox(Array.IndexOf(arr, arr.Min) & "    " & "измененный min") ' измененный номер индекса минимального числа в массиве  (3), отсчет начинается с "0"
        MsgBox(Array.IndexOf(arr, arr.Max) & "    " & "измененный max") ' измененный номер индекса максиимального числа в массиве  (0), отсчет начинается с "0"
 
        End
    End Sub
        
End Class
3
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 21
02.04.2015, 07:48  [ТС] 10
Массив случайных чисел нужен еще
0
Модератор
Эксперт .NET
4201 / 3286 / 496
Регистрация: 27.01.2014
Сообщений: 6,027
02.04.2015, 10:22 11
SannyTwo, Создавай его через Rnd
1
38 / 38 / 16
Регистрация: 04.03.2014
Сообщений: 249
02.04.2015, 12:00 12
SannyTwo,
Вот такой код выставил "Ev Оракул" год назад в ответе на такой вопрос
Цитата Сообщение от SannyTwo Посмотреть сообщение
Массив случайных чисел
Проверьте, может быть подойдет.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Public Class Form1
    Private MyArray(49, 9) As Integer
    Private Sub Button1_Click() Handles Button1.Click
        Randomize()
        Dim RND As New Random
        Dim i As Integer
        Dim j As Integer
        For i = 0 To 49
            For j = 0 To 9
                MyArray(i, j) = RND.Next(0, 100)
            Next
        Next
 
        MsgBox("Массив 50х100 заполнен")
    End Sub
End Class
0
COM‐пропагандист
859 / 768 / 147
Регистрация: 18.12.2014
Сообщений: 2,195
Записей в блоге: 4
02.04.2015, 16:08 13
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

vasiliw8, всё решается проще. Вот однострочник на бейсике:
VB.NET
1
2
' Массив случайных чисел
Dim a() As Integer = (Enumerable.Range(1, 100).Select(Function(x) (New Random).Next(100))).ToArray()
2
38 / 38 / 16
Регистрация: 04.03.2014
Сообщений: 249
02.04.2015, 17:26 14
Замабувараев,
Если не трудно, как вывести полученный, по Вашему коду массив в MsgBox или в текстовый файл?
Количество чисел массива можно уменьшить до 10.
0
COM‐пропагандист
859 / 768 / 147
Регистрация: 18.12.2014
Сообщений: 2,195
Записей в блоге: 4
02.04.2015, 17:45 15
vasiliw8,
VB.NET
1
MsgBox(String.Join(vbCrlF, a.Select(Function(x) x.ToString).ToArray()))
Цитата Сообщение от vasiliw8 Посмотреть сообщение
Количество чисел массива можно уменьшить до 10.
Тогда нужно Enumerable.Range(1, 10), а дальше как в коде.
1
38 / 38 / 16
Регистрация: 04.03.2014
Сообщений: 249
02.04.2015, 17:54 16
Замабувараев,
Это понятно. А как же первая часть моего вопроса?
Цитата Сообщение от vasiliw8 Посмотреть сообщение
Если не трудно, как вывести полученный, по Вашему коду массив в MsgBox или в текстовый файл?
0
COM‐пропагандист
859 / 768 / 147
Регистрация: 18.12.2014
Сообщений: 2,195
Записей в блоге: 4
02.04.2015, 18:07 17
vasiliw8, кто‐то не заметил этого кода?
Цитата Сообщение от Замабувараев Посмотреть сообщение
VB.NET
1
MsgBox(String.Join(vbCrlF, a.Select(Function(x) x.ToString).ToArray()))
1
38 / 38 / 16
Регистрация: 04.03.2014
Сообщений: 249
02.04.2015, 20:07 18
Замабувараев,
Да, действительно не заметил, извините.
Цитата Сообщение от Замабувараев Посмотреть сообщение
MsgBox(String.Join(vbCrlF, a.Select(Function(x) x.ToString).ToArray()))
Выдает десять одинаковых чисел.
0
COM‐пропагандист
859 / 768 / 147
Регистрация: 18.12.2014
Сообщений: 2,195
Записей в блоге: 4
02.04.2015, 20:21 19
vasiliw8, тогда объект Random нужно создать отдельно.
VB.NET
1
2
Dim r As New Random
Dim a() As Integer = (Enumerable.Range(1, 50).Select(Function(x) r.Next(100))).ToArray()
Создаст массив из пятидесяти случайных элементов на интервале [0; 100).
1
38 / 38 / 16
Регистрация: 04.03.2014
Сообщений: 249
02.04.2015, 20:55 20
Замабувараев,
Все в порядке, большое спасибо.
0
02.04.2015, 20:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2015, 20:55
Помогаю со студенческими работами здесь

В произвольном двумерном числовом массиве определить минимальный и максимальный элемент и поменять их местами
В произвольном двумерном числовом массиве определить минимальный и максимальный элемент и поменять...

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

Поменять минимальный и максимальный элемент местами в одномерном массиве
Чёта туплю, не выводит второй массив: Нужно поменять минимальный и максимальный элемент местами в...

Найти минимальный и максимальный элементы в одномерном массиве и переставить их местами
1Найти минимальный и максимальный элементы и переставить их местами.


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

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

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