Автор | Сообщение |
|
Отправлено: 08.07.12 06:00. Заголовок: С2 - правильно ли?
Условие: есть одномерный целочисленный массив из 30 элементов. Элементы массива могут принимать значения от 0 до 10000. Задача: найти и вывести на экран сумму трёхзначных элементов массива, которые не делятся на 5. Гарантируется, что хотя бы один такой элемент есть. Запрещается использовать неописанные переменные, но разрешается не использовать часть из них. Начало стандартное, с переменными i, j, s : integer. Моё решение: s:=0; for i:=1 to N do if (a[ i]>=100) and (a[ i]<=999) and (a[ i] mod 5 <> 0) then s:=s+a[ i]; write(s); readln Вроде бы всё чисто? Придраться невозможно?
|
|
|
Ответов - 4
[только новые]
|
|
|
Отправлено: 12.03.13 12:11. Заголовок: Для 13 задания, C2, ..
Для 13 задания, C2, в "Задачах для тренировки" будет приемлем такой вариант решения const N:=30; var a: array [1..N] of integer; i, j, x: integer; begin for i:= 1 to N do readln(a); readln(x); j:=N; for i:= 1 to N do if (a=x) and (i<=j) then j:=i else writeln ('Нет'); writeln (j) end.
|
|
|
|
| Администратор
|
Сообщение: 490
|
|
Отправлено: 12.03.13 12:50. Заголовок: Алексей28 пишет: бу..
Алексей28 пишет: цитата: | будет приемлем такой вариант решения |
|
Думаю, что нет. Попробуйте набрать программу и погонять ее на разных массивах. В том числе на таких, где нет нужного элемента.
|
|
|
|
Отправлено: 12.03.13 22:31. Заголовок: Я доработал. А тепер..
Я доработал. А теперь? const N=5; var a: array [1..N] of integer; i, j, x: integer; begin for i:= 1 to N do readln(a); readln(x); j:=N; for i:= 1 to N do if (a=x) and (i<=j) then begin j:=i; writeln(j) end; if (a[N]<>x) and (j=N) then writeln ('Нет'); end.
|
|
|
|
Отправлено: 19.04.13 19:31. Заголовок: Задание С2: (как-буд..
Задание С2: (как-будто с сайта СтатГрада) Опишите алгоритм поиска минимальной четной суммы двух последовательных элементов (элементы массива положительные) в целочисленном массиве из 70 элементов. Гарантируется, что хотя бы одна четная сумма есть. Решение: ..... for i:=1 to N do readln(A); j:=1; while (A[j] + A[j+1]) mod 2=1 do j:=j+1; {первая четная сумма} MinSum:= A[j] + A[j+1]; for i:=j+1 to N-1 do if ( A [ i] + A[i+1] < MinSum) and ( ( A [ i] + A[i+1] ) mod 2=0) then MinSum := A [ i] + A[i+1]; writeln(MinSum); ..... Подскажите, есть ли другой вариант начального значения MinSum? В общем случае - каким устанавливать начальное значение мин, если верхняя граница не задана, а на значения накладываются доп.условия типа четности, делимости и т.п.
|
|
|
|