Eri Mendz wrote: > > Good day all, Hello,
> Have here a temperature conversion program im trying to "perfect" but no > chance, its not working right. The input validation portion is fine, im > satisfied likewise with the conversion to celsius. My problem is > conversion to fahrenheit: the answer is not right so is the temp unit > during printout. The problem must be obvious but i pick-up slow. Can > you help me out and guide me :-) > > #!/usr/bin/perl -w > use strict; > > print "This is a temperature conversion program.\n"; > print "Enter temperature to convert(e.g., 100C, 212F): "; > chomp(my $input = <STDIN>); > if ($input =~ m/^([+-]?\d+)(\.{1}\d+)?[ ]?([cCfF])$/){ #validate input format > my $real_num = $1; > my $temp_unit = $3; Should probably be: if ($input =~ m/^([+-]?\d+(?:\.\d+)?)\s*([cCfF])$/){ #validate input format my $real_num = $1; my $temp_unit = $2; > my ($in_c, $in_f) = ($real_num, $real_num); > if ($temp_unit eq 'C' or 'c'){ Should be: if ($temp_unit eq 'C' or $temp_unit eq 'c'){ Or better: if (lc $temp_unit eq 'c'){ > $in_f = ($real_num * 9 / 5) + 32; > printf "%.2f C is %.2f F\n", $real_num, $in_f; > } else { #it must be F if not C > $in_c = ($real_num - 32) * 5 / 9; > printf "%.2f C is %.2f F\n", $real_num, $in_c; Should be: printf "%.2f F is %.2f C\n", $real_num, $in_c; > } > } else { > #input failed validation check > print "Error is detected in input\n"; > print "input format is number, optional space then letter C or F, case > insensitive, in exact order\n"; > print "Please check your input and try again.\n"; > } John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]