опять проблема в паскале - Форум
Пятница, 09.12.2016, 16:29
Задачи по информатике
Главная | Регистрация | Вход Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: ignorer, KOT_B_MEIIIKE, PASCAL26, atvrider 
Форум » Решение задач по информатике » Задачи по программированию + блок-схемы » опять проблема в паскале (опять проблема в паскале)
опять проблема в паскале
mix1316Дата: Воскресенье, 10.10.2010, 15:05 | Сообщение # 1
Сержант
Группа: Новичок
Сообщений: 5
[ 0 ]
Статус: Offline
Условие задачи

Ввести целое n , если n > 0, вывести значения F – факториалов от 1 до
n в каждой строке в количестве раз равном остатку от деления F +1 на
10 (номер строки соответствует аргументу факториала). Например, для
n = 6:
1 1
2 2 2
6 6 6 6 6 6 6
24 24 24 24 24
120
720

Решение

program ABC;
var i,k,N:integer;
f:LongInt;
begin
writeLn('Введите N');
readLn(N);
f:=1;
for i:=1 to N do
begin
f:=f*i;
write(f);
for k:=1 to i do
if i mod 10 <> 0 then
write('?')
else
write('?');
writeLn;
end;
end.

Суть проблемы в том , что не как не пойму это уловие - "вывести значения F – факториалов от 1 до
n в каждой строке в количестве раз равном остатку от деления F +1 на
10 (номер строки соответствует аргументу факториала)."
Помогите , что надо сделать ?

 
ignorerДата: Воскресенье, 10.10.2010, 21:57 | Сообщение # 2
Генералиссимус
Группа: Модераторы
Сообщений: 602
[ 18 ]
Статус: Offline
разложу по частям:
Quote (mix1316)
вывести значения F – факториалов от 1 до n

перебираем все числа i от 1 до n и выводим для каждого числа его факториал. как, а точнее, сколько раз нужно выводить факториал будет описано далее.
Quote (mix1316)
в количестве раз равном остатку от деления F +1 на 10

в каждой строке находим остаток от деления F+1 на 10. столько раз в этой строке мы выведем F (пояснение F - значение факториала для данного числа i).
короче, рассмотрим на приведённом вами примере:
при i=1:
1!=1. в строке с номером 1 выводим 1. далее определяем кол-во "1" в этой строке.
1!+1=2; 2 mod 10 = 2. значит в 1 строке 2 раза выводим 1.

при i=2:
2!=2. в строке с номером 2 выводим 2. далее определяем кол-во "2" в этой строке.
2!+1=3; 3 mod 10 = 3. значит в 2 строке 3 раза выводим 2.

при i=3:
3!=6. в строке с номером 3 выводим 6. далее определяем кол-во "6" в этой строке.
3!+1=7; 7 mod 10 = 7. значит в 3 строке 7 раз выводим 6.

при i=4:
4!=24. в строке с номером 4 выводим 24. далее определяем кол-во "24" в этой строке.
4!+1=25; 25 mod 10 = 5. значит в 4 строке 5 раз выводим 24.

и так далее...

если нужно упростить алгоритм, то вот небольшое примечание (мне так было бы проще писать, не знаю, как вам)
дело в том, что начиная с i=5, всё время будет выводиться по 1 числу в строке, так как начиная с 5 все факториалы кратны 10, следовательно остаток от деления F+1 на 10 будет равен 1. а теперь, как упростить прогу (если вы не поняли, что я только что написал, дальше лучше не читать smile ):
рассматриваем все случаи при i равном от 1 до 4 и описываем в каждом случае, чтобы выводилось определённое кол-во F. при i=1, F будет выводиться 2 раза; при i=2, F будет выводиться 3 раза; при i=3, F выводится 7 раз; при i=4, F выводится 5 раз. при остальных i, т.е. при 5 и более, F будет выводиться по 1 разу. это всё делается простыми ветвлениями, которые вставляем в цикл "for i:=1 to n do" после выщитывания F.
впринципе, сие сокращение кода не имеет большой надобности, да и многие программисты могут со мной не согласиться, но мне приятней написать несколько ветвлений, нежели банально написать цикл smile если не поняли, что я только что за чухню написал про сокращения кода, или не интересно - забейте, вариант с циклом лучше попрёт при сдаче домашней работы (зависит от препода, у нашей бы норм покатил мой вариант), да и не возникнет ни у кого лишних вопросов smile

 
flash1989Дата: Понедельник, 11.10.2010, 12:34 | Сообщение # 3
Генералиссимус
Группа: Заблокированные
Сообщений: 177
[ 3 ]
Статус: Offline
Если что, пиши, сделаю
icqc: 588002847
email: flash_1989@ukr.net
 
Форум » Решение задач по информатике » Задачи по программированию + блок-схемы » опять проблема в паскале (опять проблема в паскале)
Страница 1 из 11
Поиск:

Copyright MyCorp © 2016