
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
20.01.2005, 16:26:56
|
|||
|---|---|---|---|
И еще одна задача |
|||
|
#18+
Точнее не задача, а проблема в ней Есть N (300<N<100) натуральных чисел Аi (i=1…N, Ai<2005, все Ai различны). Надо найти длину (количество элементов) самой длиной арифметической прогрессии, которую можно сформировать, используя некоторые из чисел Ai Ввод: Целое N и N строк, в которых записаны N чисел Ai Вывод: Целое число, равное длине самой длиной арифметической прогрессии. Пример: (в ( ) комментарий относительно того что вводится в строке) 5 (N) 10 (A1) 4 (A2) 5(A3) 15(A4) 2(A5) 3 Тут я насколько понимаю массив. Но как его задать, и из него считать, а самое главное в него ввести. В qbasic я знаю как массив задать и использовать Input, а как тут? Буду очень признателен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.01.2005, 07:37:09
|
|||
|---|---|---|---|
И еще одна задача |
|||
|
#18+
ничего не понял, если количество Ai максимально до N, то длина арифметической прогрессии будет N обьявлять одномерный массив просто Dim A(ко-во элементов) или если не знаешь ко-во то просто Dim() двумерные массивы (матрицы) обьявлять Dim A(5,5) as integer и вводится просто A(3)=44 или A(4)="Присвоена строка" можно ввести так for i =1 to N then a(i)=round(rnd*2005-1) next i тогда элементы Ai будут все заполнены случайнами числами от 0 до 2004 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.01.2005, 14:24:59
|
|||
|---|---|---|---|
И еще одна задача |
|||
|
#18+
Попробуй этот код. Я пробовал несколько комбинаций цифр - все работает. Проверь на своих данных. Private N, Mas(2005), B(2005), C(2005), i, j, k, l, m, o As Long Private Sub Run_Click() N = Val(InputBox("Введите N")) For i = 1 To N Mas(i) = Val(InputBox("Введите Mas(" & i & ")")) Next i For i = 1 To N - 1 For j = i + 1 To N If Mas(j) < Mas(i) Then k = Mas(i) Mas(i) = Mas(j) Mas(j) = k End If Next j Next i k = 0 For i = 1 To N - 1 For j = i + 1 To N k = k + 1 B(k) = Mas(j) - Mas(i) Next j Next i l = 1 C(1) = B(1) For i = 2 To k - 1 x = 0 For j = 1 To l If C(j) = B(i) Then x = x + 1 Next j If x = 0 Then l = l + 1 C(l) = B(i) End If Next i o = 0 For i = 1 To N - 1 For j = 0 To l m = Mas(i) + j x = 1 For k = i + 1 To N If Mas(k) = m Then x = x + 1 m = m + j End If Next k o = o + 1 B(o) = (x) C(o) = j Next j Next i k = B(1) For i = 2 To o If B(i) > k Then k = B(i) Next i MsgBox "Длина самой длинной арифметической прогрессии равна " & k End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.01.2005, 09:24:20
|
|||
|---|---|---|---|
И еще одна задача |
|||
|
#18+
Данное решение верно при N>2. Если N равно 1 или 2, то длина прогрессии равна N. Поэтому можно после строки: N = Val(InputBox("Введите N")) ввести: If N < 3 Then MsgBox "Длина самой длинной арифметической прогрессии равна " & N Exit Sub End If ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=60&tablet=1&tid=2168298]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 337ms |

| 0 / 0 |
