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

Сортировка отрицательных чисел в массиве

11.01.2015, 19:00. Показов 1869. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Пожалуйста, объясните в чем проблема: я задаю массив целых двузначных случайных чисел
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
For i = 1 To n
    
    Do
        If r() / 10 >= 1 Or r() / 10 <= -1 Then
            arr(i) = r()
        End If
    Loop Until arr(i) = r()
    
    If arr(i) > max Then
        max = arr(i)
        K = i
    Else
        If arr(i) < min Then
            min = arr(i)
            L = i
        End If
    End If
       
    Cells(i, 1) = arr(i)
Next i
а потом мне нужно отсортировать его элементы в порядке возрастания. Пробовала так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
For i = 1 To n
    For j = 1 To (n - 1)
        If arr(j) > arr(j + 1) Then
            z = arr(j)
            arr(j) = arr(j + 1)
            arr(j + 1) = z
        End If
    Next j
    Cells(i, 1) = arr(i)
Next i
но он почему-то упорядочивает только положительные числа, а отрицательные как были, так и остаются в хаосе.
Подскажите, пожалуйста, где ошибка.

п.с. r() - это отдельная функция:
Visual Basic
1
2
3
Function r() As Integer
r = Int((2 * 99 + 1) * Rnd - 99)
End Function
п.п.с. а есть какой-то способ сделать так, чтобы элементы массива не повторялись? (извините за оффтоп)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.01.2015, 19:00
Ответы с готовыми решениями:

Если в массиве больше отрицательных чисел, все положительные числа заменить суммой отрицательных
Задан одномерный массив P(N) (N&lt;=60). Если в нем больше отрицательных чисел, все положительные...

В массиве чисел с n элементов найти сумму всех отрицательных чисел
В одномерном массиве чисел с n элементов найти сумму всех отрицательных чисел. Элементы массива...

Найти сумму всех отрицательных чисел в массиве случайных чисел
Помогите с кодом Найти сумму всех отрицательных чисел в массиве случайных чисел.

Найти индексы положительных чисел и сумму отрицательных чисел в массиве
Найти индексы положительных чисел и сумму отрицательных чисел в целом одномерном массиве Заранее...

9
Заблокирован
11.01.2015, 19:27 2
Если этот код точно из VBA, то можно воспользоваться встроенной функцией
сортировки, причем как по возрастанию так и по убыванию
0
0 / 0 / 0
Регистрация: 24.12.2014
Сообщений: 15
11.01.2015, 19:31  [ТС] 3
Цитата Сообщение от Night Ranger Посмотреть сообщение
Если этот код точно из VBA, то можно воспользоваться встроенной функцией
сортировки, причем как по возрастанию так и по убыванию
а что за функции? вы имеете в виду с помощью самого excel это сделать?
0
Заблокирован
11.01.2015, 19:33 4
crococos, все ваши примеры - обрывки кода.
Если потрудитесь изъяснить исходную задачу с возникшими проблемами (а не наоборот), то шансы решения возрастут, кажется?
0
Заблокирован
11.01.2015, 19:33 5
Цитата Сообщение от crococos Посмотреть сообщение
а что за функции? вы имеете в виду с помощью самого excel это сделать?
Да, например Columns(1).Sort [a1] сортироется колонка 1 с инициируещей ячейкой a1
0
0 / 0 / 0
Регистрация: 24.12.2014
Сообщений: 15
11.01.2015, 19:37  [ТС] 6
Цитата Сообщение от Night Ranger Посмотреть сообщение
Да, например Columns(1).Sort [a1] сортироется колонка 1 с инициируещей ячейкой a1
это, конечно, самый лучший вариант, и я бы им непременно воспользовалась, если бы передо мной не стояла задача обязательно составить программный код :/
0
Заблокирован
11.01.2015, 19:38 7
Ну конечно можно чисто программным способом сделать
наверное на форуме есть 1000 примеров, поэтому трудиться выкладывать не буду
отрицательные или положительные, смотря как сортировать если как число
то будет один результат, если как текст, то может быть другой
0
0 / 0 / 0
Регистрация: 24.12.2014
Сообщений: 15
11.01.2015, 19:42  [ТС] 8
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
Function r() As Integer
r = Int((2 * 99 + 1) * Rnd - 99)
End Function
 
Public Sub Massive()
 
Dim arr() As Integer
Dim n As Integer, i As Integer
Dim arr1() As Integer
 
Cells.Clear
 
Do
    prom = InputBox("Введите количество элементов в массиве N = ")
    If Not IsNumeric(prom) Then MsgBox ("Неверные данные!")
Loop Until IsNumeric(prom)
n = prom
 
ReDim arr(1 To n)
Dim K As Integer, L As Integer, max As Integer, min As Integer
max = -99
min = 99
 
 
 
 
For i = 1 To n
 
    Do
        If r() / 10 >= 1 Or r() / 10 <= -1 Then
        arr(i) = r()
        End If
    Loop Until arr(i) = r()
 
    If arr(i) > max Then
        max = arr(i)
        K = i
    Else
        If arr(i) < min Then
            min = arr(i)
            L = i
        End If
    End If
    
Next i
 
Range("c1") = "Максимальным элементом является a(" & CSng(K) & ") = " & CSng(max)
Range("c2") = "Минимальным элементом является a(" & CSng(L) & ") = " & CSng(min)
 
Dim j As Integer
Dim z As Integer
 
z = 0
For i = 1 To n
    For j = 1 To (n - 1)
        If arr(j) > arr(j + 1) Then
            z = arr(j)
            arr(j) = arr(j + 1)
            arr(j + 1) = z
        End If
    Next j
    Cells(i, 1) = arr(i)
Next i
 
 
End Sub
вот весь текст программы. задача, если полностью, состояла в том, чтобы создать одномерный массив, заполнить его двузначными целыми случайными числами и отсортировать их по возрастанию.
как я уже писала выше, по какой-то причине сортируются только положительные числа. и я не могу понять почему, вот.
0
Заблокирован
11.01.2015, 20:02 9
Есть несколько способов, быстрая, пузырьковая, выборочная, пирамидальная
вы если хотите добиться быстрого результата, сделайте запрос в расширенном поиске
по любому из этих слов и будет вам щастье

Добавлено через 2 минуты
Если не найдёте, до завтра, я сам лично найду все эти способы, обещаю

Добавлено через 13 минут
зы.
в вашем случае нужно сортировать массив как число
1
0 / 0 / 0
Регистрация: 24.12.2014
Сообщений: 15
11.01.2015, 20:18  [ТС] 10
нет-нет, я уже все исправила (нашла, как).
спасибо за то, что не остались безучастны)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.01.2015, 20:18
Помогаю со студенческими работами здесь

В одномерном массиве подсчитать количество положительных чисел, отрицательных чисел и других символов
В одномерном массиве подсчитать количество положительных чисел, отрицательных чисел и других...

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

Количество отрицательных чисел в массиве из 16 целых чисел
Код на СИ, определяющий кол-во отрицательных чисел в массиве из 16 целых чисел, и если их больше...

Сортировка отрицательных чисел по возрастанию
Прошу помощи в написании программы на языке макроассемблера (masm32) по сортировке...


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

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

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