Solved

help

Posted on 1998-12-16
7
237 Views
Last Modified: 2010-04-16
please tell me how to doo this:
writw a program for a game in which the user guesses what random number between 1 and 1000 the computer has 'thought',untill he or she has found the correct number. The computer should tell the user for each guess whether it was too high, too low or spot on1 The program should also print out how many guesses the user had before the right answer.
0
Comment
Question by:popei
  • 5
7 Comments
 
LVL 1

Accepted Solution

by:
The_Brain earned 200 total points
ID: 1216537
I have a program extremely close to this,  I will quickly write a program for you, and send it.  I am answering now.  I will write it NOW.  It will be ready in 45 min.
0
 
LVL 1

Expert Comment

by:The_Brain
ID: 1216538
I have it here.  but is this an assignment?  I am just wondering.
I will send it once I know what it is for.
0
 
LVL 1

Expert Comment

by:The_Brain
ID: 1216539
Never mind, it is deep into december there are no more classes.  Ok, here it comes:

It is very commented.  every line nearly. :)  so don't panic.


program Randomnumbers; {procedureless guessing game, simple as possible by                                                                  G. du Toit  g_dutoit@hotmail.com}

uses
crt;

var
UserNumber : longint; {declaring variable which the user will input to}
CPUNumber  : longint; {declaring variable which the CPU will input it's random number }
RangeMin, RangeMax   : longint; {declaring variables which the user inputs his desired limits }
Counter    : integer; {I am sure no person will take 100 guesses or more. if so make into longint}
begin
      clrscr; {guess}
      randomize; {init randomizing}
      write('Between what numbers do you want to guess in:');
      read(RangeMin, RangeMax);        {can be written read(RangeMin); read(RangeMax)}
      CPUNumber:=random(RangeMax-RangeMin)+RangeMin;
            {The user can type  10 20  or 10 return press 20;  both will work.}
            {random(x); is the random definition, it generates a random number from
            0 -> x; Now, for min and max. random(RangeMax) is from 0->RangeMax
            but
            random(RangeMax) 0->Max  random(RangeMax-RangeMin)+RangeMin
            say for instance
            min 10 max 15
            random(15) will produce 0->15 this is below 10,
            random(15) will produce 0->15 but PLUS min.  this is now (0->15)+10
            makes 10->25 obvious enough? but now it exceeds the limit.
            random(RangeMax-RangeMin)+RangeMin
            NOW Random(15-10) is random(5) 0->5, now Plus 10 10->15, hey presto
            a limit.}
      repeat
            write('Guess: ');  {prompts 'guess'}
            Counter:=Counter+1;  { or inc counter this climbs by one everytime this
            loop passes by this instruction}
            read(UserNumber);  {reads user 's number}
            if (UserNumber>CPUNumber) then {checking if User number is greater than Comp's}
                  writeln('Smaller');
            if (UserNumber<CPUNumber) then {Checking if smaller, then prompt bigger}
                  writeln('Bigger');
            if (UserNumber=CPUNumber) then {check for equality}
                  writeln('Spot ON! :) The number of guesses: ', Counter); {displays amount of guesses}
      until ((CPUNumber=UserNumber) or (UserNumber=-1)); {repeat fall out statement}
      {the conditions for loop to end, if equality or if user gives up.}
      if (UserNumber=-1) then
            write('Why did you give up! Here is my number: ',CPUNumber); {diplays message with cpu number}
      readkey; {checks for keyboard input before ending, so that you may read the previous message;}
      {last semicolon not necessary but good practice.  Hope this not an assignment that you were given:)
      }
end.
{There it is fully commented}
0
Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
LVL 1

Expert Comment

by:The_Brain
ID: 1216540
Never mind, it is deep into december there are no more classes.  Ok, here it comes: Sorry about the duplicate, I lost all the indents.

It is very commented.  every line nearly. :)  so don't panic.


program Randomnumbers; {procedureless guessing game, simple as possible by G. du Toit  g_dutoit@hotmail.com}

uses
crt;

var
UserNumber : longint; {declaring variable which the user will input to}
CPUNumber  : longint; {declaring variable which the CPU will input it's random number }
RangeMin, RangeMax   : longint; {declaring variables which the user inputs his desired limits }
Counter    : integer; {I am sure no person will take 100 guesses or more. if so make into longint}
begin
  clrscr; {guess}
  randomize; {init randomizing}
  write('Between what numbers do you want to guess in:');
  read(RangeMin, RangeMax);        {can be written read(RangeMin); read(RangeMax)}
  CPUNumber:=random(RangeMax-RangeMin)+RangeMin;
{The user can type  10 20  or 10 return press 20;  both will work.}
{random(x); is the random definition, it generates a random number from
0 -> x; Now, for min and max. random(RangeMax) is from 0->RangeMax
but
random(RangeMax) 0->Max  random(RangeMax-RangeMin)+RangeMin
say for instance
min 10 max 15
random(15) will produce 0->15 this is below 10,
random(15) will produce 0->15 but PLUS min.  this is now (0->15)+10
makes 10->25 obvious enough? but now it exceeds the limit.
random(RangeMax-RangeMin)+RangeMin
NOW Random(15-10) is random(5) 0->5, now Plus 10 10->15, hey presto
a limit.}
  repeat
    write('Guess: ');  {prompts 'guess'}
    Counter:=Counter+1;  { or inc counter this climbs by one everytime this
loop passes by this instruction}
    read(UserNumber);  {reads user 's number}
    if (UserNumber>CPUNumber) then {checking if User number is greater than Comp's}
       writeln('Smaller');
    if (UserNumber<CPUNumber) then {Checking if smaller, then prompt bigger}
       writeln('Bigger');
    if (UserNumber=CPUNumber) then {check for equality}
       writeln('Spot ON! :) The number of guesses: ', Counter); {displays amount of guesses}
  until ((CPUNumber=UserNumber) or (UserNumber=-1)); {repeat fall out statement}
{the conditions for loop to end, if equality or if user gives up.}
  if (UserNumber=-1) then
     write('Why did you give up! Here is my number: ',CPUNumber); {diplays message with cpu number}
  readkey; {checks for keyboard input before ending, so that you may read the previous message;}
{last semicolon not necessary but good practice.  Hope this not an assignment that you were given:)
}
end.
{There it is fully commented}

0
 
LVL 2

Expert Comment

by:omsec
ID: 1216541
well, yet another solution :P I think comments are not necessary.

Program Guess_Test;

uses
  crt;

const
  MAX_TRIES = 100;

var
  CorrectTip,
  CurrentTipVal : Word;
  CurrentTipStr : string[4];
  Counter : Byte;
  Found : Boolean;
  Code : Integer;

begin
  ClrScr;
  Randomize;
  CorrectTip := Random(1001);
  if CorrectTip = 0 then
    CorrectTip := 1;
  Counter := 1;
  Found := False;
  repeat
    WriteLn;
    WriteLn('Enter your Tip (',Counter,') : ');
    ReadLn(CurrentTipStr);
    if CurrentTipStr = '' then
      WriteLn('You didn''t enter anything');
    Val(CurrentTipStr, CurrentTipVal, Code);
    if Code <> 0 then
      begin
        if ((CurrentTipStr = 'q') or (CurrentTipStr = 'Q')) then
          begin
            WriteLn('You aborted after attempt #',Counter);
            Halt(1);
          end
        else
          WriteLn('hmh, that was not a valid Number');
      end
    else
      begin
        if CurrentTipStr <> '' then
          begin
            if CurrentTipVal < CorrectTip then
              WriteLn('hmh, that was too less');
            if CurrentTipVal > CorrectTip then
              WriteLn('hmh, that was too high');
            if CurrentTipVal = CorrectTip then
              begin
                Found := True;
                WriteLn('CORRECT NUMBER FOUND');
              end;
            if not Found then
              inc(Counter);
          end;
      end;
  until ((Counter = MAX_TRIES) or (Found));
  if Counter = MAX_TRIES then
    begin
      WriteLn('You could not find the Number after 100 attempts');
      halt(0);
    end;
  if Found then
    begin
      WriteLn('You have found the Number after ',Counter,' attempts');
      halt(0);
    end;
end.

0
 

Author Comment

by:popei
ID: 1216542
but you did not nclude procedures in the program, making it a lttlie hard to de-bug.
0
 
LVL 1

Expert Comment

by:The_Brain
ID: 1216543
Oh, you wanted procedures, what's to debug anyway, it's fully tested. No bugs, whadda I look like m*cros*ft? :)
I will send ye a copy of a procedurized one if you wish.  just ask


0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Delphi & Indy 10 Whois over Web Proxy 3 1,220
SQL Query issue 13 405
proper way to parse text with delphi 7 159
Mydac connection data base issue 3 177
While it may be true that the internet is a place of possibilities, it is also a hostile environment lurking with many dangers. By clicking on the wrong link, trusting the wrong person or using a weak password, you are virtually inviting hackers to …
This article shows the steps required to install WordPress on Azure. Web Apps, Mobile Apps, API Apps, or Functions, in Azure all these run in an App Service plan. WordPress is no exception and requires an App Service Plan and Database to install
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

713 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question