Форум » Выполнение и анализ алгоритмов для исполнителей » Задание 27. Досрочный вариант » Ответить

Задание 27. Досрочный вариант

kamaliev: Помогите с кодом, не знаю, вроде нужны еще дополнительные условия в цикле, кто-нибудь сможет объяснить? Просто хочу научится задачу понимать, чтобы правильно писать код. ВОТ САМО ЗАДАНИЕ 27 ------------------------------------------- По каналу связи передаётся последовательность положительных целых чисел, все числа не превышают 1000. Количество чисел известно, но может быть очень велико. Затем передаётся контрольное значение последовательности – наименьшее число R, удовлетворяющее следующим условиям: 1) R является произведением двух различных переданных элементов последовательности («различные» означает, что не рассматриваются квадраты переданных чисел, произведения различных элементов последовательности, равных по величине, допускаются); 2) R кратно 6. Если такого числа R нет, то контрольное значение полагается равным 0. В результате помех при передаче как сами числа, так и контрольное значение могут быть искажены. Напишите эффективную, в том числе по используемой памяти, программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая будет проверять правильность контрольного значения. Программа должна напечатать отчёт по следующей форме: Вычисленное контрольное значение: … Контроль пройден (или – Контроль не пройден) Перед текстом программы кратко опишите используемый Вами алгоритм решения. На вход программе в первой строке подаётся количество чисел N; В последней строке записано контрольное значение – натуральное число, не превышающее 1 000 000. Пример входных данных: 6 30 6 5 3 4 300 12 Пример выходных данных для приведённого выше примера входных данных: Вычисленное контрольное значение : 12 Контроль пройден --------------------------------------------------------------- ВОТ МОЙ КОД НА ПАСКАЛЕ --------------------------------------------------------------------------- var m2, m3, m6, min: integer; i, R, N, dat, res: integer; begin m2:=1000; m3:=1000; m6:=1000; min:=1000; readln(N); for i:=1 to N do begin readln(dat); if (dat mod 2 = 0) and (dat < m2) then m2:=dat; if (dat mod 3 = 0) and (dat < m3) then m2:=dat; if (dat mod 6 = 0) and (dat < m6) then m6:=dat; if (dat < min) then min:=dat; end; readln(R); if m2*m3 < m6*min then res:=m2*m3 else res:=m6*min; writeln('Вычисленное контрольное значение: ',res); if res = R then writeln('Контроль пройден') else writeln('Контроль не пройден'); end.

Ответов - 0



полная версия страницы