Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 14.05.2009
Сообщений: 27
1

Оператор case в Pascal

14.05.2009, 01:14. Показов 3562. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет, помогите советом.....Мне надо написать программу к задаче:
Дано натуральное число n (n≤100), определяющее возраст человека (в годах). Дать для
этого числа наименования «год», «года», «лет». Например, 1 год, 23 года, 46 лет и т.д.
Я написал программу, но думаю что она слишком громоздкая....помогите советом, как можно это исправить....
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
program Project2;
 
{$APPTYPE CONSOLE}
 
uses
SysUtils;
 
var
n:integer;
begin
writeln('VVedite Znachenie n:');
readln(n);
case n of
1,21,31,41,51,61,71,81,91:writeln(' God ');
2,3,4,22,23,24,32,33,34,42,43,44,52,53,54,62,63,64 ,72,73,74,82,83,84,92,93,94:writeln(' Goda ');
5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,25,26,2 7,28,29,30,35,36,37,38,39,40,45,46,47,48,49,50,55, 56,57,58,59,60,65,66,67,68,69,70,75,76,77,78,79,80 ,85,86,87,88,89,90,95,96,97,98,99,100:writeln(' Let ');
else
writeln(' StolbKo HE zhivut ');
end;
readln;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.05.2009, 01:14
Ответы с готовыми решениями:

Pascal!? Как такую запись сократить оператор case, нужна формула?
case nx of 0: X:=310; 0.1: X:=312; 0.2: X:=314; 0.3: X:=316; 0.4: X:=318; 0.5: X:=320; 0.6:...

Оператор Case
Подскажите как прогу сделать вот задание: Разработать программу, которая выводит на экран...

Оператор Case
Обьясните пожалуиста на примере,как он работает? Я нашел эту строчку в одном из самоучителей:...

Оператор CASE
Составьте программу вычисления суммы цифр введенного с клавиатуры трехзначного натурального числа....

15
133 / 132 / 60
Регистрация: 10.12.2008
Сообщений: 286
14.05.2009, 01:41 2
Я заметил, что цифры на "год" заканчиваются 1(начиная с 20), на "Года" - 2,3,4; на "Лет" - от 5 до 20 и дальше заканчиваются на 5, 6, 7, 8, 9, 0
Можно это использовать
1
0 / 0 / 0
Регистрация: 14.05.2009
Сообщений: 27
14.05.2009, 01:44  [ТС] 3
Если честно я тоже это заметил, но к сожалению как использовать это не знаю......вот и хотел бы спросить, может кто знает как это использовать и сделать программу компактнее....?
0
133 / 132 / 60
Регистрация: 10.12.2008
Сообщений: 286
14.05.2009, 01:47 4
последняя цифра числа определяется так:
Pascal
1
c:=n mod 10; {c-цифра, n-число}
0
0 / 0 / 0
Регистрация: 14.05.2009
Сообщений: 27
14.05.2009, 02:12  [ТС] 5
Демидрол....а можешь написать как примерно будет выглядеть 1 строчка в программе, с указанием того, что ты сне написал, то есть как заменить такую строчку:
1,21,31,41,51,61,71,81,91:writeln(' God ');
???

Добавлено через 16 минут 59 секунд
я попробовал написать так:
1:1:=n mod 10:writeln(' God ');
но это конечно же неправильно....подскажи как надо это прописать.....
0
133 / 132 / 60
Регистрация: 10.12.2008
Сообщений: 286
14.05.2009, 02:19 6
Вот, проверяй
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
uses
  crt;
var
  i,n,c: integer;
begin
  clrscr;
  write('wwedite chislo: ');
  readln(n);
  c:=n mod 10;
  case c of
    1: if (n>20) or (n=1) then
         writeln('GOD');
    2,3,4: if (n>20) or (n=2) or (n=3) or (n=4) then
             writeln('GODA');
    5,6,7,8,9,0: if (n in [5..20]) or (n>20) then
             writeln('Let');
  end;
  readkey;
end.
0
0 / 0 / 0
Регистрация: 14.05.2009
Сообщений: 27
14.05.2009, 02:39  [ТС] 7
Ну конечно....как сразу не догадался....используя оператор if внутри оператора case.....
написано верно...только у меня есть пара вопросов.....
1)зачем вводить переменную i?
2)надо ещё как то указать промежуток n, ведь n?100.......чтобы при наборе в программе например цифры 105 не высвечивалось лет......как это сделать?
(почему то прописав else,не рабатывает....)

Добавлено через 3 минуты 31 секунду
То есть программа моя выглядит сейчас так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
program Project2;
 
{$APPTYPE CONSOLE}
 
uses
SysUtils;
 
var
c,n:integer;
begin
writeln('VVedite Znachenie n:');
readln(n);
c:=n mod 10;
case c of
1: if (n>20) or (n=1) then
writeln('GOD');
2,3,4: if (n>20) or (n=2) or (n=3) or (n=4) then
writeln('GODA');
5,6,7,8,9,0: if (n in [5..20]) or (n>20) then
writeln('Let');
else
writeln(' StolbKo HE zhivut ');
end;
readln;
end.
вопрос, как указать промежуток для n???чтобы при наборе например 105 выходило StolbKo HE zhivut, а???
0
133 / 132 / 60
Регистрация: 10.12.2008
Сообщений: 286
14.05.2009, 02:41 8
i поставил на автомате, забыл убрать
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
uses
  crt;
var
  n,c: integer;
begin
  clrscr;
  write('wwedite chislo: ');
  readln(n);
  if n<=100 then
  begin
    c:=n mod 10;
    case c of
      1: if (n>20) or (n=1) then
           writeln('GOD');
      2,3,4: if (n>20) or (n=2) or (n=3) or (n=4) then
               writeln('GODA');
      5,6,7,8,9,0: if (n in [5..20]) or (n>20) then
               writeln('Let');
    end;
  end
  else
    writeln('Ne podxodit');
  readkey;
end.
0
0 / 0 / 0
Регистрация: 14.05.2009
Сообщений: 27
14.05.2009, 02:51  [ТС] 9
я записал условие для n так....
if (n<100) or (n=100) then
компактнее записать можно или так оставить?
0
133 / 132 / 60
Регистрация: 10.12.2008
Сообщений: 286
14.05.2009, 02:51 10
if n<=100 then
0
0 / 0 / 0
Регистрация: 14.05.2009
Сообщений: 27
14.05.2009, 02:54  [ТС] 11
а точно)))просто первый раз так набирал, что то не получалось.....спасибо тебе большое за помощь......
0
133 / 132 / 60
Регистрация: 10.12.2008
Сообщений: 286
14.05.2009, 02:57 12
и еще: когда пишешь код на форуме, выделяй его с помощью кнопки PASCAL на панели
0
0 / 0 / 0
Регистрация: 14.05.2009
Сообщений: 27
14.05.2009, 02:58  [ТС] 13
я тут впервые.......ещё не освоился....буду иметь ввиду.....спасибо ещё раз....
0
0 / 0 / 0
Регистрация: 14.05.2009
Сообщений: 6
14.05.2009, 04:57 14
добрый вечер
0
0 / 0 / 0
Регистрация: 14.05.2009
Сообщений: 27
14.05.2009, 14:42  [ТС] 15
демидрол.....вот так должна выглядеть прога....
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
program Project2;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
var
n:integer;
begin
  writeln(' VVedite Znachenie: ');
  readln(n);
  if n<=100 then
  begin
    if n in [11..14] then write(' Let ') else
      case n mod 10 of
        1:writeln(' God ');
        2,3,4:writeln(' Goda ');
        0,5,6,7,8,9:writeln(' Let ');
      end;
  end
  else
    writeln(' StolbKo HE zhivut ');
  readln;
end.
0
23 / 23 / 4
Регистрация: 21.11.2010
Сообщений: 77
21.11.2010, 18:26 16
Я сделал так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Program Vek;
var N: byte;
begin
write('Введите возраст человека - '); read(N);
if N<=100 then
 
    begin write('Человеку ',N,' ');
    if N in [11..14] then write('лет.')
    else
        case N mod 10 of
            1: write('год.');  
            2..4: write('года.'); 
            0,5..9: write('лет.');  
        end;
    end
 
else write('Неправильно введены данные. Введите в диапазоне от 0 до 100!');
End.

Vik.zip
1
21.11.2010, 18:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.11.2010, 18:26
Помогаю со студенческими работами здесь

оператор Case.
помогите написать вот такую программу. Задание 7.

Оператор case
Идёт N секунда суток. Определить сколько прошло полных часов,минут и секунд. Результат вывести в...

Оператор Case
Как видите, сейчас чтобы компьютер показал нам день недели нужно указать цифру 1 или 2 (в этом...

Оператор CASE
Здравствуйте,помогите пожалуйста! С клавиатуры вводится число (n&gt;0). Составить программу,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru