Задачка на года...

  • Автор темы tstf
  • Дата начала
Статус
Закрыто для дальнейших ответов.
T

tstf

Задача поставлена так
Для целого числа k от 1 до 99 вывести фразу “мне k лет”, учитывая при этом, что при некоторых значениях k слово “лет” надо заменить на слово “год” или “года”.

Как вариант можно написать всё с кучей проверок на числа, но это не вариант. А как можно сделать так, чтобы считывалоаь последняя цифра числа.
 
T

tstf

Всё, разобрался... вот сам код
Код:
unit lab_23_3;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
a,a1:integer;
b,c:string;
begin
if (Edit1.Text <> '') then
begin
a:=StrToint(Edit1.Text);
b:=inttostr(a);
b:=b[length(b)];
a1:=strtoint(b);
case a1 of
1:c:='год';
2,3,4:c:='года';
5,6,7,8,9,0:c:='лет';
end;
if (a=11) or (a=12) or (a=13) then
c:='лет';
if a>110 then
Edit1.Text:='Так много не живут!'
else
if a<0 then
Edit1.Text:='ДА ты ещё не родился!'
else
Edit1.Text:='Тебе '+inttostr(a)+' '+c;
end
else
ShowMessage('Введи свои года!!');
end;
{
// возможен поиск последней цифры через остаток
var
a:integer;
b,c:extended;
begin
a:=strtoint(edit1.text);
b:=a/100;
c:=frac(b);
c:=c*100				 ;
edit1.text:=FloatToStr(c);
end;}


end.
 
M

maloy*508

похожая задача только вводишь секунды от 0.00 до 0.99 выдает сообщение сколько введено, правда на Паскале

program bibidon;
uses crt;
var a,b,c,cod : integer;
s,st,st1:string[10];

begin
clrscr;
s:=' sotih';
writeln('Vvedite 4islo ot 0,00 do 0,99');
readln(st);
st1:=copy(st,3,4); {srazy mi s4itivaem to shto vvel }
val(st1,a,cod); {user i otbrasivaem nol i to4ky(0.) }
if cod <> 0 then {copy - kopiruet iz st s 3 po 4 simvol}
begin { val - preobrazyet stroky(st1) v 4islo(a)}
writeln('Oshibka'); { cod - eto kod oshibki esli preobrazovanie ne ydalos' }
halt; { esli vse proshlo yspeshno to cod = 0}
end;
if a<=10 then begin
case a of
0:writeln('nol',s);
1:writeln('odna sotaia');
2:writeln('dve',s);
3:writeln('tri',s);
4:writeln('4etire',s);
5:writeln('piat',s);
6:writeln('shest',s);
7:writeln('sem',s);
8:writeln('vosem',s);
9:writeln('deviat',s);
10:writeln('desiat',s);
end;end;
if ( a>10 ) and ( a<20 ) then
begin
case a of
11:writeln('odinadcat',s);
12:writeln('dvenadcat',s);
13:writeln('trinadcat',s);
14:writeln('4etirnadcat',s);
15:writeln('piatnadcat',s);
16:writeln('shestnadcat',s);
17:writeln('semnadcat',s);
18:writeln('vosemnadcat',s);
19:writeln('deviatnadcat',s);
end;
end;

if a>20 then
begin
b:=a div 10;
case b of
2:write('dvadcat ');
3:write('tridcat ');
4:write('sorok ');
5:write('poatdesiat ');
6:write('shestdesiat ');
7:write('semdesiat ');
8:write('vosemdesiat ');
9:write('devianosto ');
end;end;
c:=a mod 10;
case c of
0:write('');
1:write('odna sotaia');
2:writeln('dve',s);
3:writeln('tri',s);
4:writeln('4etire',s);
5:writeln('piat',s);
6:writeln('shest',s);
7:writeln('sem',s);
8:writeln('vosem',s);
9:writeln('deviat',s);
end;
readkey;
end.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!