Решение задач - Pascal (81001)
Формулировка задачи:
Всем здравствуйте. Буду благодарна за любую помощь. У меня уже психоз скоро начнется. Вообще я учусь по специальности "Финансы и Кредит", но поскольку ВУЗ специфический, надо же было что-то воткнуть. В обще задали контрольную по языку программирования - паскаль. А я в этом ни черта не понимаю. Бились месяц всей семьей над задачами. В приложении контрольная. Преподаватель все завернул и написал рецензию и что все не правильно.
Вот рецензия:
Задание 1
Вы как-то слишком вольно обращаетесь с блоками в блок-схемах. Каждый блок имеет свое назначение. Поэтому необходимо использовать для каждого типа команд соответствующий им блок. Вывод данных – параллелограмм, линейная операция – прямоугольник и т.д. Исправить.
Зачем в условии используется операция Not? Без неё разве нельзя?
Задание 2
Странное какое-то решение. Зачем говорить о массивах, если в программе они не используются? Зато в алгоритме (сужу по программе) много непонятных команд. И совсем не помешает рассказать, откуда они взялись.
Это не блок-схема алгоритма. Алгоритм не может содержать непонятные команды, тупики, неопределенные переходы и т.д.
Разработанный алгоритм необходимо записать на языке программирования три раза, каждый раз используя различные виды циклов. А затем сравнить циклы и ответить на вопрос. Эта часть задания не выполнена.
Задание 3
Задача решена неправильно. Точнее сказать, Вы решаете совсем другую задачу.
Размер файл величина переменная N, поэтому должна задаваться с клавиатуры. Результатом работы программы должны являться два массива B и C.
Помогите, пожалуйста. Разъясните пошагово- что не так. Ну не понимаю я что он пишет. Мне папа помогал решать, но и он уже не понимает, что не так. Очень прошу помогите и так, чтобы человек понял, который с паскалем до этого не имел дело
Всем заранее спасибо.
Решение задачи: «Решение задач»
textual
Листинг программы
program Summa;
var
n, k: integer;
A, Amax, temp: longint;
Count: longint;
Sum, i: integer;
begin
readln(n, k);
{решение при помощи цикла for}
Amax := 1;
for i := 1 to n do
Amax := Amax * 10;
Amax := Amax - 1;
Count := 0;
{перебор чисел}
for A := 0 to Amax do
begin
{вычисление суммы цифр текущего числа}
Temp := A;
Sum := 0;
while Temp <> 0 do
begin
Sum := Sum + (Temp mod 10);
Temp := Temp div 10;
end;
{если число подходит, то увеличиваем счётчик чисел}
if Sum = k then
Count := Count + 1;
end;
writeln(Count);
end.
Объяснение кода листинга программы
- В программе объявлены переменные: n, k, A, Amax, temp, Count, Sum и i.
- Числа n и k считываются с клавиатуры.
- Переменная Amax инициализируется как 10^n.
- Затем, в цикле for, Amax уменьшается на единицу, пока не станет равным 1.
- Переменная Count инициализируется как 0.
- Далее, в цикле for, для каждого числа от 0 до Amax, происходит:
- Переменная Temp инициализируется как само число A.
- Переменная Sum инициализируется как 0.
- В цикле while, пока число не равно 0, происходит:
- К Sum добавляется последняя цифра числа, взятая по модулю 10.
- Затем, число делится на 10 и результат присваивается переменной Temp.
- Если число подходит (сумма его цифр равна k), то счетчик чисел увеличивается на 1.
- В конце программы выводится значение переменной Count.