Автор | Сообщение |
|
Отправлено: 09.05.17 18:15. Заголовок: Нестандартный вариант. Задача 25
Если не ошибаюсь, то есть выход за границы массива. Подставил Ваши входные данные и вылетает на While const N = 6; var a : array [0..N - 1] of integer; i, j, count : integer; begin for i := 0 to N - 1 do readln(a); count := 0; for i := 0 to N - 1 do begin j := 1; while a[j] <> a do j := j + 1; if j = i then count := count + 1 end; writeln(count); end.
|
|
|
Ответов - 6
[только новые]
|
|
|
Отправлено: 09.05.17 20:13. Заголовок: nikson, добрый вечер..
nikson, добрый вечер! Извиняюсь за опечатку! Первоначально на Паскале массив был с индексами от 1 до N. Потом я решил приблизить решение к решениям на других языках, но 1 на 0 в этом месте не поменял. Выхода за границы в цикле while не будет, т. к. j всегда будет меньше, либо равен i (но в последнем случае будут равны и сами элементы массива). С уважением, Дмитрий Богданов
|
|
|
|
Отправлено: 10.05.17 09:54. Заголовок: Вот решение на Бэйси..
Вот решение на Бэйсике Module module1 Sub main() Const N = 2017 Dim A(N) As Integer Dim i, j, count As Integer For i = 1 To N A(i) = console.readline Next count = 2017 For i = 1 To N - 1 For j = i + 1 To N If A(i) = A(j) Then count -= 1 Next Next console.writeline(count) console.readkey() End Sub End Module
|
|
|
|
Отправлено: 10.05.17 09:55. Заголовок: За использование сор..
За использование сортировки массива не снизят баллы? Вот код этой задачи Module Module1 Sub Main() Const N = 2017 Dim A(N) As Integer Dim i, j, count As Integer For i = 1 To N A(i) = Console.Readline() Next i Array.Sort(A) j = A(1) count = 1 For i = 2 To N If A(i) <> j Then count += 1 : j = A(i) Next i Console.WriteLine(count) Console.ReadKey() End Sub End Module
|
|
|
|
Отправлено: 10.05.17 10:50. Заголовок: nikson, не снизят, н..
nikson, не снизят, но надо иметь ввиду: 1) сортировка "испортит" массив. В целом плохой стиль изменять сами входные данные, вдруг они еще будут нужны далее в программе? 2) так как сортировка будет переставлять элементы, скорость работы будет ниже, хотя в 25 задании эффективность программы не оценивают. Могу предложить еще более радикальный метод. Если сразу объявить A множеством (например, в С++: set<int> A; ), и считывать элементы в него, то потом достаточно вывести длину этого множества: A.count() . В PascalABC и питоне множества тоже поддерживаются, но опять же, это будет совсем другая программа.
|
|
|
|
Отправлено: 18.05.17 16:08. Заголовок: Просто изменить нача..
Просто изменить начальное значение J на 0. J:=0;
|
|
|
|
Отправлено: 18.05.17 16:15. Заголовок: zinaida_49@mail.ru, ..
zinaida_49@mail.ru, да, спасибо! Это опечатку уже исправили.
|
|
|
|