Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Задачка на года...
Форум программистов > Системное программирование > Delphi и Pascal > Delphi - FAQ
Могильщик
Задача поставлена так
Цитата
Для целого числа k от 1 до 99 вывести фразу “мне k лет”, учитывая при этом, что при некоторых значениях k слово “лет” надо заменить на слово “год” или “года”.


Как вариант можно написать всё с кучей проверок на числа, но это не вариант. А как можно сделать так, чтобы считывалоаь последняя цифра числа.
Могильщик
Всё, разобрался... вот сам код
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.
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.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.