Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2012, 20:03   #1
ivan1.95@mail.ru
Новичок
Джуниор
 
Регистрация: 05.12.2012
Сообщений: 1
По умолчанию решить задачу Паскаль abc

Ввести возраст человека (от 1 до 150 лет) и вывести его с последующим словом "Год" , "Года" или "Лет"

Пример

Введите возраст 24

ответ со словом лет

Помогите решить заранее спасибо
ivan1.95@mail.ru вне форума Ответить с цитированием
Старый 05.12.2012, 20:44   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

А поиск по форуму поюзать Заратустра не позволяет? Или настолько всерьез верите в уникальность своей задачи?

вот ссылка на похожую задачу, развлекайтесь.


Цитата:
Введите возраст 24

ответ со словом лет
Вообще-то "года"
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 05.12.2012, 22:50   #3
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

ivan1.95@mail.ru

Ввести возраст человека (от 1 до 150 лет) и вывести его с последующим словом "Год" , "Года" или "Лет"

Код:
Program Vozrast;
var
	i : integer;
begin
	write('Введите возраст: ')
	readln(i);
	if i < 1 or i > 150 then begin
		writeln('Это туфта, насяльника!');
		halt;
	end;
	case i of
		1: writeln('1 год');
		2: writeln('2 года');
		3: writeln('3 года');
		4: writeln('4 года');
		5: writeln('5 лет');
		6: writeln('6 лет');
		7: writeln('7 лет');
		8: writeln('8 лет');
		9: writeln('9 лет');
		10: writeln('10 лет');
		11: writeln('11 лет');
		12: writeln('12 лет');
		13: writeln('13 лет');
		14: writeln('14 лет');
		15: writeln('15 лет');
		16: writeln('16 лет');
		17: writeln('17 лет');
		18: writeln('18 лет');
		19: writeln('19 лет');
		20: writeln('20 лет');
		21: writeln('21 год');
		22: writeln('22 года');
		23: writeln('23 года');
		24: writeln('24 года');
		25: writeln('25 лет');
		26: writeln('26 лет');
		27: writeln('27 лет');
		28: writeln('28 лет');
		29: writeln('29 лет');
		30: writeln('30 лет');
		31: writeln('31 год');
		32: writeln('32 года');
		33: writeln('33 года');
		34: writeln('34 года');
		35: writeln('35 лет');
		36: writeln('36 лет');
		37: writeln('37 лет');
		38: writeln('38 лет');
		39: writeln('39 лет');
		40: writeln('40 лет');
		41: writeln('41 год');
		42: writeln('42 года');
		43: writeln('43 года');
		44: writeln('44 года');
		45: writeln('45 лет');
		46: writeln('46 лет');
		47: writeln('47 лет');
		48: writeln('48 лет');
		49: writeln('49 лет');
		50: writeln('50 лет');
		51: writeln('51 год');
		52: writeln('52 года');
		53: writeln('53 года');
		54: writeln('54 года');
		55: writeln('55 лет');
		56: writeln('56 лет');
		57: writeln('57 лет');
		58: writeln('58 лет');
		59: writeln('59 лет');
		60: writeln('60 лет');
		61: writeln('61 год');
		62: writeln('62 года');
		63: writeln('63 года');
		64: writeln('64 года');
		65: writeln('65 лет');
		66: writeln('66 лет');
		67: writeln('67 лет');
		68: writeln('68 лет');
		69: writeln('69 лет');
		70: writeln('70 лет');
		71: writeln('71 год');
		72: writeln('72 года');
		73: writeln('73 года');
		74: writeln('74 года');
		75: writeln('75 лет');
		76: writeln('76 лет');
		77: writeln('77 лет');
		78: writeln('78 лет');
		79: writeln('79 лет');
		80: writeln('80 лет');
		81: writeln('81 год');
		82: writeln('82 года');
		83: writeln('83 года');
		84: writeln('84 года');
		85: writeln('85 лет');
		86: writeln('86 лет');
		87: writeln('87 лет');
		88: writeln('88 лет');
		89: writeln('89 лет');
		90: writeln('90 лет');
		91: writeln('91 год');
		92: writeln('92 года');
		93: writeln('93 года');
		94: writeln('94 года');
		95: writeln('95 лет');
		96: writeln('96 лет');
		97: writeln('97 лет');
		98: writeln('98 лет');
		99: writeln('99 лет');
		100: writeln('100 лет');
		101: writeln('101 год');
		102: writeln('102 года');
		103: writeln('103 года');
		104: writeln('104 года');
		105: writeln('105 лет');
		106: writeln('106 лет');
		107: writeln('107 лет');
		108: writeln('108 лет');
		109: writeln('109 лет');
		110: writeln('110 лет');
		111: writeln('111 лет');
		112: writeln('112 лет');
		113: writeln('113 лет');
		114: writeln('114 лет');
		115: writeln('115 лет');
		116: writeln('116 лет');
		117: writeln('117 лет');
		118: writeln('118 лет');
		119: writeln('119 лет');
		120: writeln('120 лет');
		121: writeln('121 год');
		122: writeln('122 года');
		123: writeln('123 года');
		124: writeln('124 года');
		125: writeln('125 лет');
		126: writeln('126 лет');
		127: writeln('127 лет');
		128: writeln('128 лет');
		129: writeln('129 лет');
		130: writeln('130 лет');
		131: writeln('131 год');
		132: writeln('132 года');
		133: writeln('133 года');
		134: writeln('134 года');
		135: writeln('135 лет');
		136: writeln('136 лет');
		137: writeln('137 лет');
		138: writeln('138 лет');
		139: writeln('139 лет');
		140: writeln('140 лет');
		141: writeln('141 год');
		142: writeln('142 года');
		143: writeln('143 года');
		144: writeln('144 года');
		145: writeln('145 лет');
		146: writeln('146 лет');
		147: writeln('147 лет');
		148: writeln('148 лет');
		149: writeln('149 лет');
		150: writeln('150 лет');
	end;
end.
:looool:
Rififi вне форума Ответить с цитированием
Старый 05.12.2012, 23:24   #4
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Rififi
Ну ты конечно монстр!))))) Поставил +, не лень же было)
Но я бы сделал как-то так.
Код:
program abh;
uses crt;
var
  a: byte;
begin
  write('Введите возраст:');
  readln(a);
  if a > 150 then
  begin
    writeln ('возраст > 150');
    exit;
  end;
  if ((a mod 10 = 1) and (a div 10 <> 1)) then
  begin
    writeln (a, ' год');
    exit;
  end;
  if (((a mod 10 = 2) or (a mod 10 = 3) or (a mod 10 = 4)) and (a div 10 <> 1))  then
    writeln(a,' года')
  else
    writeln(a,' лет');
end.
Может упустил чего)
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com

Последний раз редактировалось kventin_zhuk; 05.12.2012 в 23:27.
kventin_zhuk вне форума Ответить с цитированием
Старый 06.12.2012, 00:24   #5
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Rififi, кросавчег! Брутфорс - это по нашему.

Мне тоже как-то надо было задержку написать на ассемблере, так я прикинул, что время выполнения одной команды 10^-6 и написал такое:
Код:
...
for i:=0 to 99999 do
  writeln(T,'NOP');
...
Потом скопировал из текстовика, оформил в виде подпрограммы... Исходник, правда, весил очень много, пришлось отказаться от идеи

Update: сейчас вспоминаю, там наносекунды были, 10^-9. Так что объем был еще круче
Все тривиальное просто

Последний раз редактировалось whatever; 06.12.2012 в 00:40.
whatever вне форума Ответить с цитированием
Старый 06.12.2012, 10:59   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

потрясён кодом Rififi. Браво!!
можно смело идти сдавать. Программа чётко решает поставленную задачу, формально подкопаться не к чему!

kventin_zhuk, а вот ваш вариант содержит ошибки в логике..
проверьте, например, возраст 112

Если вдруг, код (с) Rififi не подойдёт, я бы рекомендовал такой код:
Код:

var b, c: integer;
begin
  Writeln('Введите ваш возраст');
  Readln(b);
  if b <= 0 then WriteLn('Вам 0 лет')
  else begin
    c := b mod 100;
    if (c >= 10) and (c <= 20) then WriteLn('Вам ', b, ' лет')
    else
      case (b mod 10) of
        1: WriteLn('Вам ', b, ' год');
        2..4: WriteLn('Вам ', b, ' года');
        5..9, 0: WriteLn('Вам ', b, ' лет')
      end;
  end;
  Writeln('Для выхода нажмите <Enter>');
  Readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.12.2012, 12:09   #7
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Ну ты конечно монстр!))))) Поставил +, не лень же было)
Думаю, что код написан автоматизированным образом...
Вадим Мошев вне форума Ответить с цитированием
Старый 06.12.2012, 12:25   #8
vokar97
Пользователь
 
Аватар для vokar97
 
Регистрация: 23.10.2012
Сообщений: 27
По умолчанию

Код:
var Y : integer;
    S : string;
begin
 repeat
  Write(' Ваш возраст? '); Readln(Y);
     case Y of
       11..14: S:='лет';
        else case Y mod 10 of
          1: S:='год';
          2..4: S:='года';
             else S:='лет';
     end;
             end;
  Writeln ('Вам ', Y,' '+S);
 until Y=0;
end.
vokar97 вне форума Ответить с цитированием
Старый 06.12.2012, 12:27   #9
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

vokar97
а если введем 114 то чего напишет
по вашему коду
Цитата:
Ваш возраст? 114
Вам 114 года
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 06.12.2012, 13:26   #10
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Вот, ну теперь уж должно быть норм)
Код:
program abh;
uses crt;
var
  a: byte;
begin
  write('Введите возраст:');
  readln(a);
  if a > 150 then
  begin
    writeln ('возраст > 150');
    exit;
  end;
  if ((a mod 10 = 1) and (a div 10 <> 1) and (a div 10 <> 11)) then
  begin
    writeln (a, ' год');
    exit;
  end;
  if (((a mod 10 = 2) or (a mod 10 = 3) or (a mod 10 = 4)) and (a div 10 <> 1) and (a div 10 <> 11)) then
    writeln(a,' года')
  else
    writeln(a,' лет');
end.
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
надо решить на паскаль ABC и построить блок схему... Александр_Саня Паскаль, Turbo Pascal, PascalABC.NET 5 20.02.2012 08:56
Нужно решить задачу в паскале ABC в трех циклах Denis866 Паскаль, Turbo Pascal, PascalABC.NET 0 18.12.2011 12:04
Никак не могу решить задачу по масивам (Pascal ABC) Amid1990 Помощь студентам 1 04.07.2011 17:46
помогите решить задачу Pascal ABC массивы aunt Sveta Помощь студентам 12 11.03.2011 16:09