Помощь - Поиск - Пользователи - Календарь
Полная версия: задача Div,mod,case
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
malou
Помогайте решить пожалуйста с помощью case div mod.
2. Постановка задачи :Для числа «к» вывести на экран дисплея разу «мы нашли К грибов в лесу» согласовав окончание слова «гриб» с числом «к».к натуральное число. Если не так тема то прошу изменить название
Lapp
Цитата(malou @ 30.01.2006 0:28) *

Для числа «к» вывести на экран дисплея разу «мы нашли К грибов в лесу» согласовав окончание слова «гриб» с числом «к».к натуральное число. Если не так тема то прошу изменить название

А число К не нужно писать словами? Если так, то задача будет посложнее. Если нет, то решение простое:
  case k mod 10 of
0,5..9: s:='ов';
1: s:='';
2..4: s:='а';
end;
WriteLn('мы нашли ',k,' гриб',s,' в лесу');


Название я бы сделал такое: "Согласование числительных и окончаний существительных"
Atos
ещё добавить:
if k div 10 = 1 then s:='ов';
Lapp
Цитата(Atos @ 30.01.2006 8:42) *

ещё добавить:

Точно! Спасибо, Атос smile.gif
За мной глаз да глаз нужен.. smile.gif
malou
Парни огромное спасибо! а как mod рисуется на схеме алгорита?
klem4
так и пиши ... mod
Ostin
как обыкновеная арифмитическая операция

не знаю как это пишется (арифмитическая)
klem4
думаю можно вот так :

a % b
malou
program V;
var
k:byte;
begin
writeln('Bbedute kol-Bo gribov');
readln(k);
if k div 10 = 1 then writeln('11');
case k mod 10 of
1: writeln('mbI nawlu grib v lesy');
2..4: writeln('mbI nawlu griba v lesy');
0,5..9: writeln('mbI nawlu gribov v lesy');
11,12,13,14 : writeln('mbI nawlu gribov v lesy');
end;
readln;
end.

Парни помогите почему при вводе 11 выдает гриб исправте пожалуйчта.

Теги !
volvo
Цитата
case k mod 10 of
...
11,12,13,14 : writeln('mbI nawlu gribov v lesy');
blink.gif
Как остаток от деления на 10 может быть больше 10?

var
k: byte;
s: string;
begin
writeln('Bbedute kol-Bo gribov');
readln(k);

if k in [11, 12, 13, 14] then s := 'ov'
else
case k mod 10 of
1 : s := '';
2 .. 4: s := 'a';
0,5..9: s := 'ov';
end;
writeln('mbI nawlu ', k, ' grib' + s + ' v lesy');
readln;
end.
malou
Цитата(volvo @ 30.01.2006 21:03) *

blink.gif
Как остаток от деления на 10 может быть больше 10?

а какже надо задачу делать? сказаличто с помощью или diw или mod
malou
program v;
var
k : byte;
s : string;
begin
writeln('wwedite kol-vo gribov');
readln(k);
if k in [11,12,13,14] then s:='gribov'
else
case k mod 10 of
1 : s :='grib';
2..4 : s:='griba';
0,5..9:s :='gribov';
end;
writeln('gribov');
readln;
end.


всегда выводит грибов в чем ошибка?

ТЕГИ
Мы постоянно за тебя их ставить должны ?
klem4
uses crt;
var
k : word;

begin
for k := 1 to 100
do begin
write('Мы нашли в лесу ',k,' гриб');
if k div 10 = 1 then write('ов')
else case k mod 10 of
2..4 : write('а');
5..9,0 : write('ов');
end;
writeln;
end;
readln;
end.


Тегами пользоваться будешь ?

Кстати, эта задача была решена во втором посте .. и дополнена в третьем.
volvo
malou, вот объясни мне, ты ВООБЩЕ смотришь на то, что тебе пишут? Я ж тебе дал готовое решение, НЕТ!!! надо было его ИСПРАВИТЬ, и потом сказать, что оно неправильно работает. dry.gif А зачем исправлял? Прогнать БЕЗ изменений нельзя было?
klem4
Задача решена аж 2-мя способами.
Обсуждать тут больше нечего.
Тема зарыта.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.