comp.lang.ada
 help / color / mirror / Atom feed
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



      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