Другие языки программирования и технологии

кто разбирается в паскале??У мя турбо паскаль 7.0 помогите!!!

нужно сделать так чтобы при вводе возраста(от 1 до 150) выводило правильно "год","года" или "лет"!!помогите плз!!
var age:integer;
s:string;
begin
read(age);
if ((age mod 10)>=5)or((age mod 20)>=10)or((age mod 10)=0) then s:=" лет" {если заканчивается на 0, 5..9 или на 10..19}
else if ((age mod 10)<=4) and ((age mod 10)>1) then s:=" года" {если заканчивается на 2..4, но не попадает в предыдущее}
else s:=" год"; {иначе заканчивается на 1}
writeln(age,s);
end.

Правильнее будет множествами, но это самостоятельно учи. Удачи!
МР
Максим Рыжиков
98 303
Лучший ответ
Доброго времени суток.

Здесь действует правило 1-2-5. Если значение оканчивается на 1 то год, от 2 до 4 - года и 5 и больше - лет. Дополнительно надо анализировать десятки. Примерно так. После ввода числа выделяем разряд единиц и десятков.

N01 := InN mod 10;
N10 := InN div 10;

затем устанавливаете индексы окончаний

if (N01 = 0) or (N01 > 4) or (N10 = 1) then idx := 3 else
if (N01 > 1) and (N01 < 5) then idx := 2 else idx := 1;

И, наконец, формируете строку

if idx = 3 then tmpS := 'лет'
else if idx = 2 then tmpS := 'года'
else tmpS := 'год';

После чего выводите результат

WriteLn(InN, ' ' + tmpS);

Формирование строки можно объединить с анализом индексов, однако индексы предпочтительнее, т. к. тогда можно будет объявить несколько массивов единиц измерения.

Остальное сами.

Удачи!
Toyly Acilow
Toyly Acilow
59 613
часть программы сам напишешь, основное:
G- переменная типа integer.

redaln(G);
if G>=5 then writeln(G,' Лет')
else if G>=2 then writeln(G,' Года')
else writeln(G,'Год');