Integer comparison: Difference between revisions

From Rosetta Code
Content added Content deleted
(→‎[[Pop11]]: incorrect (see discussion page))
Line 154: Line 154:
==[[Pop11]]==
==[[Pop11]]==
[[Category:Pop11]]
[[Category:Pop11]]
{{incorrect|Pop11}}


;;; Comparison procedure
;;; Comparison procedure
Line 162: Line 161:
elseif x < y then
elseif x < y then
printf('x is less than y\n');
printf('x is less than y\n');
elseif
elseif x = y then
printf('x equals y\n');
printf('x equals y\n');
endif;
endif;

Revision as of 02:23, 12 May 2007

Task
Integer comparison
You are encouraged to solve this task according to the task description, using any language you may know.

Basic Data Operation
This is a basic data operation. It represents a fundamental action on a basic data type.

You may see other such operations in the Basic Data Operations category, or:

Integer Operations
Arithmetic | Comparison

Boolean Operations
Bitwise | Logical

String Operations
Concatenation | Interpolation | Comparison | Matching

Memory Operations
Pointers & references | Addresses

Get two integers from the user, and then output if the first one is less, equal or greater than the other. Test the condition for each case separately, so that all three comparison operators are used in the code.

Ada

with Ada.Text_IO; use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_Io;

procedure Compare_Ints is
   A, B : Integer;
begin
   Get(Item => A);
   Get(Item => B);

   -- Test for equality
   if A = B then
      Put_Line("A equals B");
   end if;

   -- Test For Less Than
   if A < B then
      Put_Line("A is less than B");
   end if;

   -- Test For Greater Than
   if A > B then
      Put_Line("A is greater than B");
   end if;
end Compare_Ints;

C++

#include <iostream>
#include <istream>
#include <ostream>

int main()
{
  int a, b;
  std::cin >> a >> b;

  // test for less-than
  if (a < b)
    std::cout << a << " is less than " << b << "\n";

  // test for equality
  if (a == b)
    std::cout << a << " is equal to " << b << "\n";

  // test for greater-than
  if (a > b)
    std::cout << a << " is greater than " << b << "\n";
}

Clean

import StdEnv

compare a b
    | a < b = "A is less than B"
    | a > b = "A is more than B"
    | a == b = "A equals B"

Start world
    # (console, world) = stdio world
      (_, a, console) = freadi console
      (_, b, console) = freadi console
    = compare a b

Java

import java.io.*;

public class compInt {
       public static void main(String[] args) {
               try {
                       BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

                       int nbr1 = Integer.parseInt(in.readLine());
                       int nbr2 = Integer.parseInt(in.readLine());

                       if(nbr1<nbr2)
                               System.out.println(nbr1 + " is less than " + nbr2);

                       if(nbr1>nbr2)
                                System.out.println(nbr1 + " is greater than " + nbr2);

                       if(nbr1==nbr2)
                                System.out.println(nbr1 + " is equal to " + nbr2);
               } catch(IOException e) { }
       }
} 

Forth

To keep the example simple, the word takes the two numbers from the stack.

: compare-integers ( a b -- )
   2dup < if ." a is less than b" then
   2dup > if ." a is greather than b" then
        = if ." a is equal to b" then ;

Fortran

      program compare
      integer a, b
      read(*,*) a, b
c
c     test for less-than
      if (a .lt. b) then
        write(*, *) a, ' is less than ', b
      end if
c
c     test for equality
      if (a .eq. b) then
        write(*, *) a, ' is equal to ', b
      end if
c
c     test for greater-than
      if (a .gt. b) then
        write(*, *) a, ' is greater than ', b
      end if
c
      end

Perl

Interpreter: Perl 5.x

Seperate tests for less than, greater than, and equals

sub test_num($ $){
  my ($f, $s) = @_;
  if ($f < $s){
    return(-1); # returns -1 if $f is less than $s
  } elsif ($f > $s){
    return(1); # returns 1 if $f is greater than $s
  } elsif ($f == $s){ # note = is a set, == is a test
    return(0); # returns 0 $f is equal to $s
  }
}

All three tests in one. if $f is less than $s return -1, greater than return 1, equal to return 0

sub test_num($ $){
  my ($f, $s) = @_;
  return($f <=> $s);
}

Note in perl, $a and $b are reserved variable names, used in conjunction with the sort() function.

Pop11

;;; Comparison procedure
define compare_integers(x, y);
if x > y then
   printf('x is greater than y\n');
elseif x < y then
   printf('x is less than y\n');
elseif x = y then
   printf('x equals y\n');
endif;
enddefine;

;;; Setup token reader
vars itemrep;
incharitem(charin) -> itemrep;

;;; Read numbers and call comparison procedure
compare_integers(itemrep(), itemrep());

Standard ML

This example is incorrect. It does not accomplish the given task. Please fix the code and remove this message.
fun compare_integers(a, b) =
  if a < b then print "A is less than B\n"
  else if a > b then print "A is greater than B\n"
  else print "A equals B\n"
fun test () =
  let
    open TextIO
    val SOME a = Int.fromString (input stdIn)
    val SOME b = Int.fromString (input stdIn)
  in
    compare_integers (a, b)
  end
    handle Bind => print "Invalid number entered!\n"