Модераторы: Alx, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Pascal] Задача №3, заочная олимпиада по информатике 
V
    Опции темы
KasMP
Дата 16.10.2006, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 586
Регистрация: 8.8.2006

Репутация: 2
Всего: 30



Цитата
3. Дано натуральное число N (N<999), дать для этого числа наименования "дерево", "дерева", "деревьев". Например: "75 деревьев, 222 дерева".

Вообще есть интересная закономерность:
числа, оканчивающиеся на 1 - "дерево";
числа, оканчивающиеся на 2, 3, 4 -"дерева";
числа, оканчивающиеся на 5, 6, 7, 8, 9, 0 - "деревьев".

Множества непрерывны. Т.е. есть смысл определять, какому множеству ( {1}, [2; 4], [5; 9] или {0} ) принадлежит цифра, стоящая на первой позиции.
Теперь остается придумать механизм. который будет это определять. smile
Можно просто отделить цифру от  первой позиции от цифр, стоящих на последующих позициях через div(10) и mod(10). Н хочется что-то пооригинальней.
Кратность отпадает (т.к. числа, кратные, например, двум или трем, принадлежат разным промежуткам). Больше ничего придумать не могу. smile.

А что думаете вы? smile  smile 
PM MAIL   Вверх
Sartorius
Дата 16.10.2006, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



 Анализировать нужно не одну последнюю цифру а две 
тк 812 деревьев, а не 812  дерева. 
PM MAIL ICQ   Вверх
KasMP
Дата 17.10.2006, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 586
Регистрация: 8.8.2006

Репутация: 2
Всего: 30



Sartorius, ты как всегда вовремя! smile 

Эту задачку я сегодня сдала, т.к. особого простора для творчества в ней не увидела:
(русские слова написаны латиницей, т.к. у нас в школе компилятор не понимает кириллицу)
Код
var n, o, r: integer;
label 1;

procedure opr (var p: integer);
begin
if (p mod(10)=1) then writeln (n, ' derevo');
if ((p mod(10)=2) or (p mod(10)=3) or (p mod(10)=4)) then writeln (n, ' dereva');
if ((p mod(10)=5) or (p mod(10)=6) or (p mod(10)=7)) then writeln (n, ' dereviev');
if ((p mod(10)=8) or (p mod(10)=9) or (p mod(10)=0)) then writeln (n, ' dereviev');
end;


begin
writeln ('Vvegite n:'); readln (n);
r:=n div(10);
if n<=10 then begin
    opr(n);
    goto 1;
    end;
if r<10 then begin
    o:=n mod(10);
    opr(o);
    goto 1;
    end;
if r>=10 then begin
    if ((n mod(10)=1) or (n mod(10)=2) or (n mod(10)=3) or (n mod(10)=4)) then begin
        writeln (n, ' dereviev');
        goto 1;
        end;
    opr(r);
    end;
1:

readln;
end.

PM MAIL   Вверх
skyboy
Дата 17.10.2006, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



KasMP, "21 дерево", но "11 деревьев"... и "12 деревьев"...и "13 деревьев"...
хотя, "22 дерева" и "23 дерева".. для числительных от 11 до 19 - исключение...
PM MAIL   Вверх
Akina
Дата 17.10.2006, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 2
Всего: 454



В инете просто как грязи кодов макросов по переводу чисел и денег в пропись. А рубли или деревья - настолько пофиг...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
KasMP
Дата 18.10.2006, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 586
Регистрация: 8.8.2006

Репутация: 2
Всего: 30



Ладно, наплевать. Если когда-то еще надо будет - предусмотрю и перепишу.

Это сообщение отредактировал(а) KasMP - 18.10.2006, 18:42
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Интересные и занимательные задачи по программированию | Следующая тема »


 




[ Время генерации скрипта: 0.0573 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.