From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Converting Type Characters to type string
Date: Mon, 31 Mar 2008 17:45:21 +0200
Date: 2008-03-31T17:45:25+02:00 [thread overview]
Message-ID: <gq65fo1scrpp.1cja9mop3lo8v.dlg@40tude.net> (raw)
In-Reply-To: 5052229e-61c3-401d-93b6-a95edee29e58@m71g2000hse.googlegroups.com
On Mon, 31 Mar 2008 07:44:52 -0700 (PDT), jedivaughn wrote:
> Ok, Let me start over. Maybe I'm not approaching my problem the right
> way. I'm trying to write a program that converts integers to roman
> numerals or vice versa depending on the user input. to do this I
> thought I would get the input in separate characters so that I can
> easily compare the values to find whether the user inputed IX or XI or
> something else. This works until unless the user wants to convert an
> integer to roman numeral. to change the input to an integer I'm using
> this int:=Integer'Value(str); But for this to work the input has to be
> in a string not a character. I thought about taking the input as a
> string and then doing a string slice on the characters and storing
> them in different variables but once again I'm not sure how many
> characters will be entered so how can I do that? So how would be the
> optimal way of going about this?
Sorry, I still do not understand the problem. You read a line. Then you
skip spaces there. Then you try to parse an integer number starting from
that position. If that fails you try to parse a Roman number. After
successful parsing you advance to the position following the number and
skip spaces again. Then you check if the whole like was matched. That's it.
Here is a complete program:
--------------------------
with Ada.Text_IO; use Ada.Text_IO;
with Strings_Edit.Integers; use Strings_Edit.Integers;
with Strings_Edit.Roman_Edit; use Strings_Edit.Roman_Edit;
procedure Arabic_Roman_Converter is
begin
loop
Put_Line ("Enter a number:");
declare
Input : constant String := Get_Line;
Number : Integer;
begin
exit when Input'Length = 0;
begin
Number := Value (Input);
Put_Line ("You typed " & Image (Roman (Number)));
exception
when End_Error =>
-- OK, no integer here, maybe it is a Roman number?
Number := Integer (Roman'(Value (Input)));
Put_Line ("You typed " & Image (Number));
end;
exception
when Data_Error =>
Put_Line ("Bad input, possibly syntax or several numbers");
when Constraint_Error =>
Put_Line ("The number is too large");
when End_Error =>
Put_Line ("No any number found");
end;
end loop;
end Arabic_Roman_Converter;
-----------------------------------
Enter a number:
II
You typed 2
Enter a number:
3
You typed III
Enter a number:
1000
You typed M
Enter a number:
f
No any number found
Enter a number:
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
prev parent reply other threads:[~2008-03-31 15:45 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-30 20:04 Converting Type Characters to type string jedivaughn
2008-03-30 20:19 ` Pascal Obry
2008-03-30 21:08 ` jedivaughn
2008-03-30 21:28 ` jimmaureenrogers
2008-03-30 21:38 ` Ludovic Brenta
2008-03-30 21:48 ` Georg Bauhaus
2008-03-30 23:52 ` jedivaughn
2008-03-31 3:04 ` george.priv
2008-03-31 4:00 ` tmoran
2008-03-31 8:54 ` Ludovic Brenta
2008-03-31 9:59 ` Dmitry A. Kazakov
2008-03-31 10:59 ` Jean-Pierre Rosen
2008-03-31 13:50 ` jedivaughn
2008-03-31 14:11 ` Ludovic Brenta
2008-03-31 14:21 ` Dmitry A. Kazakov
2008-03-31 14:44 ` jedivaughn
2008-03-31 15:41 ` Adam Beneschan
2008-03-31 20:26 ` Maciej Sobczak
2008-03-31 22:06 ` Georg Bauhaus
2008-03-31 22:33 ` Adam Beneschan
2008-04-01 1:00 ` jedivaughn
2008-04-01 5:34 ` Simon Wright
2008-04-01 11:22 ` jedivaughn
2008-04-01 12:00 ` jimmaureenrogers
2008-04-01 13:22 ` jedivaughn
2008-04-01 17:03 ` Adam Beneschan
2008-04-01 21:11 ` Simon Wright
2008-04-01 22:22 ` jedivaughn
2008-04-03 5:54 ` tmoran
2008-04-03 14:38 ` Adam Beneschan
2008-04-01 16:58 ` Adam Beneschan
2008-03-31 15:45 ` Dmitry A. Kazakov [this message]
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox