IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
Closed Topic Открыть новую тему 
> задача Div,mod,case
malou
сообщение 30.01.2006 0:28
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


Помогайте решить пожалуйста с помощью case div mod.
2. Постановка задачи :Для числа «к» вывести на экран дисплея разу «мы нашли К грибов в лесу» согласовав окончание слова «гриб» с числом «к».к натуральное число. Если не так тема то прошу изменить название
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 30.01.2006 6:33
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(malou @ 30.01.2006 0:28) *

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

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


Название я бы сделал такое: "Согласование числительных и окончаний существительных"


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Atos
сообщение 30.01.2006 8:42
Сообщение #3


Прогрессор
****

Группа: Модераторы
Сообщений: 602
Пол: Мужской
Реальное имя: Михаил

Репутация: -  9  +


ещё добавить:
if k div 10 = 1 then s:='ов';
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 30.01.2006 11:36
Сообщение #4


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


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

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

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


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
malou
сообщение 30.01.2006 17:59
Сообщение #5





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


Парни огромное спасибо! а как mod рисуется на схеме алгорита?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 30.01.2006 18:07
Сообщение #6


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


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


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ostin
сообщение 30.01.2006 20:27
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 52
Пол: Мужской
Реальное имя: Стас

Репутация: -  -1  +


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

не знаю как это пишется (арифмитическая)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 30.01.2006 20:35
Сообщение #8


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


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

a % b


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
malou
сообщение 30.01.2006 20:55
Сообщение #9





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


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 - 2.11.2006 17:41
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 30.01.2006 21:11
Сообщение #10


Гость






Цитата
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
сообщение 30.01.2006 21:11
Сообщение #11





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


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

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

а какже надо задачу делать? сказаличто с помощью или diw или mod
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
malou
сообщение 30.01.2006 21:24
Сообщение #12





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


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.


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

ТЕГИ
Мы постоянно за тебя их ставить должны ?


Сообщение отредактировано: volvo - 2.11.2006 17:42
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 30.01.2006 21:31
Сообщение #13


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


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 - 2.11.2006 17:42


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 30.01.2006 21:34
Сообщение #14


Гость






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


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


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


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 18.07.2025 21:33
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"