Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Часть 1. Вариант 12

.doc
Скачиваний:
15
Добавлен:
01.04.2014
Размер:
56.32 Кб
Скачать

Вариант № 12

1). Задание

Построить таблицу всех разбиений целого числа на сумму трех положительных слагаемых. Повторяющиеся разбиения выводить один раз.

2). Схема алгоритма.

На рис. 1 приведена схема алгоритма методом Насси-Шнейдермана.

program ToBreakNumber;

Uses crt;

Var Number,K:byte; { Number – введенное значение числа, К – максимально возможное значение любого слагаемого}

i,m:byte; {Переменные-счетчики}

a,b,c:byte; {Три положительных слагаемых}

Begin

clrscr; {Очистка Output файла}

write(' Enter number = ');

readln(Number);

K:= Number - 2; {Максимальное значение слагаемого}

i:=1; {Начальное значение переменной}

while i <= K do {Цикл на возможные значения первого слагаемого}

begin

a:=i; {Установка значения переменной (первое слагаемое)}

{Установка/сброс значений второго и третьего слагаемых}

b:=1;

c:=1;

m:=1; {Установка начального значения счетчика}

i:=i+1; {Увеличение переменной-счетчика}

while m <= K do {Цикл на значения второго слагаемого}

begin

b:=m; {Установка значения второго слагаемого}

m:=m+1; {Увеличение переменной-счетчика}

c:=Number-(a+b); {Расчет третьего слагаемого}

{Проверка соответствия суммы трех слагаемых значению переменной, хранимой введенное значение, при положительном значении третьего рассчитываемого слагаемого}

if ((a+b+c)=Number) and (c>0) then

begin

writeln;

{Вывод результатов (трех слагаемых)}

write(a);write('|');write(b);write('|');write(c);

end;

end;

end;

end.

Тестовые наборы для отладки программы.

Тест 1.

Введенное значение:3

Результат:

1|1|1

Тест 2.

Введенное значение:5

Результат:

1|1|3

1|2|2

1|3|1

2|1|2

2|2|1

3|1|1

Тест 3.

Введенное значение:7

Результат:

1|1|5

1|2|4

1|3|3

1|4|2

1|5|1

2|1|4

2|2|3

2|3|2

2|4|1

3|1|3

3|2|2

3|3|1

4|1|2

4|2|1

5|1|1

Рис. 1. Схема алгоритма, представленная методом Нэсси-Шнейдермана

4