Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 03.03.2019
Сообщений: 21
1

Задача на массивы

03.03.2019, 15:59. Показов 1826. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, я новичок и пока программирование дается мне очень туго Не могли бы вы помочь написать программу по одному заданию, а то как бы я ни пытался, никак у меня пока не получается сделать хоть что-то путное. Буду очень благодарен!
Задача:
В одномерный массив A размерности N при помощи датчика случайных чисел вводятся действительные числа в диапазоне от -800 до 1000 (N вводится с клавиатуры). Вывести их в строку рабочего листа. Ячейки, в которых находятся числа, в разложении которых на простые множители получается наибольшее сумма множителей, выделить цветом, а в соседний столбец вывести разложение таких чисел на множители.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.03.2019, 15:59
Ответы с готовыми решениями:

задача на массивы
1) Имеется массив данных о возрасте и поле сотрудников. Определить общее количество пенсионеров в...

Задача на массивы
Размерность массива и диапазон (от/до) их целочисленных значений вводит пользователь, элементы...

Задача. Массивы
нужно найти сумму всех элементов, а потом из нее вычитать по одному элементу отдельно, вот я не...

Задача на массивы
С++ Помогите написать задачку... *Найти количество отрицательных элиментов массива. ...

8
Модератор
Эксперт MS Access
11960 / 4828 / 779
Регистрация: 07.08.2010
Сообщений: 14,140
Записей в блоге: 4
03.03.2019, 16:07 2
Цитата Сообщение от Stevotherad Посмотреть сообщение
а то как бы я ни пытался, никак у меня пока не получается сделать хоть что-то путное
покажите хотя бы что беспутное у вас получилось
0
0 / 0 / 0
Регистрация: 03.03.2019
Сообщений: 21
03.03.2019, 16:16  [ТС] 3
То, что я пытался сделать у меня уже нету, да и кидать сюда было бы стыдно, т.к еще не научился понимать логики программы, там и пары-тройки строк еле набралось бы.
0
1846 / 1161 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
03.03.2019, 16:49 4
Stevotherad, Присоединяюсь, ну хоть пару-тройку строк покажите, а. Задач на заполнение массива случайными числами примерно миллион, надо только поискать даже на этом форуме и совсем недавно.
0
0 / 0 / 0
Регистрация: 03.03.2019
Сообщений: 21
03.03.2019, 17:23  [ТС] 5
Ну вот как-то так:
Sub massiv()
Dim A() As Byte, N As Integer, b As Double, c As Integer
ReDim A(N)
N = InputBox("Введите размер массива")
Randomize Timer
b = Rnd * 1800 - 800
For c = 1 To N
Cells(1, c) = b
Next c
End Sub

Добавлено через 1 минуту
На месте кракозябры-"Введите размер массива"

Добавлено через 1 минуту
Дальше уже не знаю

Добавлено через 6 минут
Ну вот как-то так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub massiv()
Dim A() As Byte, N As Integer, b As Double, c As Integer
ReDim A(N)
N = InputBox("Введите размер массива")
Randomize Timer
b = Rnd * 1800 - 800
For c = 1 To N
Cells(1, c) = b
Next c
End Sub
На месте кракозябры-"Введите размер массива"
Дальше уже не знаю
0
237 / 148 / 41
Регистрация: 26.01.2019
Сообщений: 545
04.03.2019, 09:54 6
Timer - не нужен; Тип массива поменять на Double; и само случайное число присваивать каждой ячейке, а не один раз перед циклом.

Visual Basic
1
2
3
4
5
6
7
8
9
Sub massiv()
Dim A() As Double, N As Integer, b As Double, c As Long
N = InputBox("Введите размер последовательности")
ReDim A(N)
Randomize
For c = 1 To N
   Cells(1, c) = Rnd() * 1800 - 800
Next c
End Sub
Как разложить число на простые множители, хорошо описано тут, и что-то аналогичное обсуждалось здесь на форуме

Уважаемые модераторы, пожалуйста, удалите дублирующую тему от ТС
0
3897 / 2302 / 776
Регистрация: 02.11.2012
Сообщений: 6,119
04.03.2019, 10:16 7
зачем объявлять массив если им потом не пользоваться?
0
4064 / 1445 / 399
Регистрация: 07.08.2013
Сообщений: 3,617
04.03.2019, 10:37 8
у меня сейчас мозг взорвется
Цитата Сообщение от Stevotherad Посмотреть сообщение
В одномерный массив A размерности N при помощи датчика случайных чисел вводятся действительные числа в диапазоне от -800 до 1000 (N вводится с клавиатуры). Вывести их в строку рабочего листа
и чуть дальше
Цитата Сообщение от Stevotherad Посмотреть сообщение
Ячейки, в которых находятся числа, в разложении которых на простые множители получается наибольшее сумма множителей, выделить цветом, а в соседний столбец вывести разложение таких чисел на множители
0
237 / 148 / 41
Регистрация: 26.01.2019
Сообщений: 545
04.03.2019, 12:22 9
Лучший ответ Сообщение было отмечено Stevotherad как решение

Решение

Цитата Сообщение от Vlad999 Посмотреть сообщение
зачем объявлять массив если им потом не пользоваться?
Действительно На автомате записал покороче.

Почти готовый код
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
67
68
Sub massiv()
Dim A() As Long, N As Integer, b As Double, i As Long
Columns(1).ClearContents
Columns(2).ClearContents
N = InputBox("Введите размер последовательности")
ReDim A(N)
Randomize
For i = 0 To N
   A(i) = Rnd() * 1800 - 800
   Cells(i + 1, 1) = A(i)
   Cells(i + 1, 2) = MCH_F(A(i))
Next i
End Sub
 
 
Function MCH_F$(X&)
    Dim n1&, n2&, A(), j&, U&, Y&
    j = 0
    Select Case X
        Case 0 To 3, 5, 7
'        MCH_F = "Prime"
         MCH_F = X
        Exit Function
    End Select
    Do While X Mod 2 = 0
        ReDim Preserve A(j)
        A(j) = 2
        X = X / 2
        j = j + 1
    Loop
    Do While X Mod 3 = 0
        ReDim Preserve A(j)
        A(j) = 3
        X = X / 3
        j = j + 1
    Loop
    U = Abs(X \ 4)
    n1 = 5
    n2 = 7
    Do While n1 < U
        Y = X
        Do While X Mod n1 = 0
            ReDim Preserve A(j)
            A(j) = n1
            X = X / n1
            j = j + 1
        Loop
        Do While X Mod n2 = 0
            ReDim Preserve A(j)
            A(j) = n2
            X = X / n2
            j = j + 1
        Loop
        U = Abs(X \ n2)
        n1 = n1 + 6
        n2 = n1 + 2
    Loop
    If j = 0 Then
'        MCH_F = "Prime"
         MCH_F = X
    Else
        If X <> 1 Then
            ReDim Preserve A(j)
            A(j) = X
        End If
        MCH_F = Join(A, "*")
    End If
End Function


По-моему часть значений не раскладывается на простые множители. Или я что-то упустил при корректировке функции. Времени нет разбираться и проверять.
Остается разложить строку (Split) на множители, просуммировать их и раскрасить ячейки
1
04.03.2019, 12:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.03.2019, 12:22
Помогаю со студенческими работами здесь

Задача на массивы
Ребята, пожалуйста, помогите препод ничего не объясняет, а сроки горят Задание: дан массив X(N)....

Задача на массивы
Здравствуйте. Есть такая задача:Даны массивы А и В с N = 4 элементов. Привести программу...

Задача. Массивы
1) В массиве D1, D2, ... , Dn найти количество чисел, меньших единицы. 2) Из данного массива чисел...

Задача на массивы
У меня такая задача. Сначала я вписываю imax(количество масивов), потом в каждый масив а его...


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

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