easiest way to do upper case and lower case

What's the easiest way to do upper case and lower case on this program?

var
    state: string;
    capital : string;
    Statefile: text;
    states: text;
    tries: integer;
    guess: string;
    correct_guess: integer;
    correct_state: string;


procedure GETDATA (var localStatefile: text;
                   var localstate: string;
                   var localcapital: string);
   begin
      readln (localStatefile, localstate);
      readln (localStatefile, localcapital);
   end; {GETDATA}


procedure GUESS_CAPITAL (var tries: integer;
                         guess: string;
                         var localcorrect_guess: integer);

   begin{GUESS_CAPITAL}
      tries := 0;
     repeat
       tries := tries + 1;
       write ('Give capital of ', state, ' ' );
       readln (guess);
     until (guess = capital) or (tries = 4);
      if guess = capital then
         begin
           writeln ('Nice work. You got it on try ', tries);
           inc(localcorrect_guess);
             if tries = 1 then
                writeln (states, guess);
         end
      else
          begin{until}
           writeln ('You did not get it in 4 tries or less');
           writeln ('The correct answer is ', capital);

     end;{until}
  end; {GUESS_CAPITAL}

procedure GUESSES (localcorrect_guess: integer);
   begin
     writeln ('You have guessed ' ,localcorrect_guess, ' states in 4 or fewer tries ');
   end;{GUESSES}


procedure Tolower (var str: string);
 var i: integer;
   begin
      for i:= 1 to length (str) do
         if ord(str[i]) > = 'A' and ord(str[i]) < = 'Z' then
             str[i] = chr(ord(str[i] - 'A' + 'a'))
   end; {tolower}


begin {main}
     assign (Statefile, 'A:\state2.dat');
     reset (Statefile);
     assign (states, 'A:\state3.dat');
     rewrite (states);
     correct_guess:= 0;
     while not seekeof (Statefile) do
       begin
         GETDATA (Statefile, state, capital);
         GUESS_CAPITAL (tries, guess, correct_guess);
         GUESSES (correct_guess)
         Tolower (str)
       end;
     close (Statefile);
     close (states);
     reset (states);
     writeln ('Great! You got these states in 1 try: ');
        while not eof (states) do
          begin
             readln (states, correct_state);
             writeln (correct_state);
          end;
     close (states)
end.
kazooie21Asked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
My name is MudConnect With a Mentor Systems EngineerCommented:
VAR
  STRTest: String;

Procedure Upper(Var Str: String);
Var
  I: Byte;
Begin
  For I:=1 to Length(Str) Do
    Str[I]:=UpCase(Str[I]);
End;

Procedure Lower(Var Str: String);
Var
  I: Byte;
Begin
  For I:=1 to Length(Str) Do
    If Str[I] in ['A'..'Z'] Then
      Str[I]:=Char(Ord(UpCase(Str[I])) + 32);
End;

Begin
  STRTest:='HeLlO WoRd... @#$%^';
  Upper(STRTest);
  WriteLn(STRTest);
  STRTest:='HeLlO WoRd... @#$%^';
  Lower(STRTest);
  WriteLn(STRTest);
End.
0
 
kazooie21Author Commented:
Adjusted points from 5 to 20
0
 
bakry99Commented:

you can do it as functions


function Tolower(str: string): string;
var i: integer;
begin
  for i:= 1 to length (str) do
     if str[i] in['A'..'Z'] then
     str[i] := chr(ord(str[i]) + 32);
 ToLower := str;
   end; {tolower}

function ToUpper(str: string): string;
var i: integer;
begin
  for i:= 1 to length (str) do
    str[i] := UpCase(str[i]);
  ToUpper:= str;
   end; {toUpper}

Regards Bakry

0
 
vikiingCommented:
┬┐What's the reason to use a ToUpper() function when UpCase() (built-into compiler itself) does the same job?
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.