Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ задача Div,mod,case

Автор: malou 30.01.2006 4:28

Помогайте решить пожалуйста с помощью case div mod.
2. Постановка задачи :Для числа «к» вывести на экран дисплея разу «мы нашли К грибов в лесу» согласовав окончание слова «гриб» с числом «к».к натуральное число. Если не так тема то прошу изменить название

Автор: lapp 30.01.2006 10:33

Цитата(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 30.01.2006 12:42

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

if k div 10 = 1 then s:='ов';

Автор: lapp 30.01.2006 15:36

Цитата(Atos @ 30.01.2006 8:42) *

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

Точно! Спасибо, Атос smile.gif
За мной глаз да глаз нужен.. smile.gif

Автор: malou 30.01.2006 21:59

Парни огромное спасибо! а как mod рисуется на схеме алгорита?

Автор: klem4 30.01.2006 22:07

так и пиши ... mod

Автор: Ostin 31.01.2006 0:27

как обыкновеная арифмитическая операция

не знаю как это пишется (арифмитическая)

Автор: klem4 31.01.2006 0:35

думаю можно вот так :

a % b

Автор: malou 31.01.2006 0:55

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 31.01.2006 1:11

Цитата
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 31.01.2006 1:11

Цитата(volvo @ 30.01.2006 21:03) *

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

а какже надо задачу делать? сказаличто с помощью или diw или mod

Автор: malou 31.01.2006 1:24

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 31.01.2006 1:31

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 31.01.2006 1:34

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

Автор: klem4 31.01.2006 1:37

Задача решена аж 2-мя способами.
Обсуждать тут больше нечего.
Тема зарыта.