1 / 1 / 0
Регистрация: 30.11.2013
Сообщений: 53
1

Определить, является ли текст правильной записью римскими цифрами целого числа от 1 до 999, и, если является, вывести на экран число арабским

12.03.2014, 22:14. Показов 1794. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот как звучит задача:дан текст из заглавных латинских букв, за которым следует пробел. Определить, является ли этот текст правильной записью римскими цифрами целого числа от 1 до 999, и, если является, вывести на экран это число арабскими цифрами (в десятичной системе).
Вот что мне удалось сделать
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    Label1: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    procedure FormActivate(Sender: TObject);
    procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
    procedure ComboBox1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormActivate(Sender: TObject);
begin
ComboBox1.SetFocus;
end;
 
procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then begin
ComboBox1.Items.Add(combobox1.text);
combobox1.Text:='';
end;
end;
 
procedure TForm1.ComboBox1Click(Sender: TObject);
var
st:string;
n,i,nst,ind,j,t:integer;
b:array[1..50] of integer;
  s:longint;
begin
t:=0;
s:=0;
ind:=0;
nst:=combobox1.ItemIndex;
st:=combobox1.Items[nst];
for i:=1 to length(st) do
begin
  if  (st[i] in ['I', 'V', 'X', 'L', 'C', 'D', 'M']) then
  begin
      if st[i]='I'then b[i]:=1;
      if st[i]='V'then b[i]:=5;
      if st[i]='X'then b[i]:=10;
      if st[i]='L'then b[i]:=50;
      if st[i]='C'then b[i]:=100;
      if st[i]='D'then b[i]:=500;
      if st[i]='M'then b[i]:=1000;
  end else
  b[i]:=0;
end;
   for i:=1 to length(st) do
   if (st[i] in ['I', 'V', 'X', 'L', 'C', 'D', 'M']) then
   t:=t+1;
   if t<>length(st) then
   begin
    label4.Caption:='Введена неверная запись римских символов';
    s:=0;
   end
    else
   for j:=1 to length(st) do
   begin
     s:=s+b[j];
     if(j>1)and(b[j-1]<b[j]) then s:=s-2*b[j-1];
     label4.Caption:='Правильная запись римскими цифрами целого числа от 1 до 999 равна числу:';
   end;
   label5.Caption:=inttostr(s);
end;
end.
Но если я пишу например XXI II мне все равно выдаст 'Введена неверная запись римских символов'.Как это исправить?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.03.2014, 22:14
Ответы с готовыми решениями:

Является ли текст правильной записью римскими цифрами целого числа от 1 до 999, и, если является, распечатать это число арабскими цифрами
1) алг Дума (цел n,k) арг k рез n нач цел i n:=0 i:=0 нц пока i&lt;k n:=n+2*i+1 i:=i+1 кц

Определить, является ли текст правильной записью римскими цифрами целого числа от 1 до 999
Дан текст из заглавных латинских букв, за которым следует пробел. Определить является ли этот текст...

Является ли текст правильной записью римскими цифрами целого числа от 1 до 999
Дан текст из заглавных латинских букв, за которым следует пробел. Определить, является ли этот...

Определить, является ли текст правильной записью римскими цифрами целого числа от 1 до 38
Дан текст из заглавных латинских букв, за которыми следует пробел. Определить, является ли этот...

2
1 / 1 / 0
Регистрация: 30.11.2013
Сообщений: 53
12.03.2014, 22:15  [ТС] 2
И вот задач с формойлааабба номер 15.rar
0
669 / 559 / 242
Регистрация: 26.11.2012
Сообщений: 2,191
14.03.2014, 07:22 3
Цитата Сообщение от powerful123 Посмотреть сообщение
Но если я пишу например XXI II
Цитата Сообщение от powerful123 Посмотреть сообщение
if (st[i] in ['I', 'V', 'X', 'L', 'C', 'D', 'M']) then
а пробел как учитывается?
0
14.03.2014, 07:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.03.2014, 07:22
Помогаю со студенческими работами здесь

Определить ,является ли данный текст правильной записью римскими цифрами целого числа от 1 до 38
Дан текст из заглавных латинских букв, за которыми следует пробел. Определить, является ли этот...

Определить является ли текст правильной записью римскими цифрами числа от 1 до 38
Здравствуйте, я в первый раз на этом форуме (друг посоветовал), вроде вполне удобный форум,...

Определить, является ли текст правильной записью целого числа
Текст задан последовательностью литер, за которыми идет '.' . Написать программу, которая...

Определить, является ли текст правильной десятичной записью целого числа
Вводится текст. Определить, является ли он правильной десятичной записью целого числа.


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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