Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pascal 如何禁止等号_Pascal - Fatal编程技术网

Pascal 如何禁止等号

Pascal 如何禁止等号,pascal,Pascal,我开始学习帕斯卡:)我对制造一种欧洲百万感兴趣。。。然而,我不知道如何禁止相同的数字或星星 我以为这(下面)会解决它。。。但它没有。。。帮忙 Program euromillion; var num: array [1..5] of integer; Procedure numbers; var i, j: integer; Begin write ('Digite o número 1: '); readln (num[1]); for i:=2 to 5 do for j

我开始学习帕斯卡:)我对制造一种欧洲百万感兴趣。。。然而,我不知道如何禁止相同的数字或星星

我以为这(下面)会解决它。。。但它没有。。。帮忙

Program euromillion;

var num: array [1..5] of integer;

Procedure numbers;

var i, j: integer;

Begin
 write ('Digite o número 1: ');
 readln (num[1]);

 for i:=2 to 5 do
  for j:=1 to (i-1) do
  Begin
   repeat
    write ('Digite o número ', i, ': ');
    readln (num[i]);
   until (num[i]>=1) and (num[i]<=50) and ((num[i]=num[j])=false); 
  End;  
End;

Begin
numbers;
readln();
End.
计划亿欧元;
var num:整数的数组[1..5];
程序编号;
var i,j:整数;
开始
写('Digite o número 1:');
readln(num[1]);
对于i:=2到5 do
对于j:=1到(i-1)do
开始
重复
写('Digite o número',i',:');
readln(num[i]);

直到(num[i]>=1)和(num[i]尽管尝试编写单个代码块很有诱惑力,但最好不要这样做。相反,编写这样的程序的更好方法是 就是考虑将任务分解为多个过程或功能 每一个都只完成任务的一部分

查看任务的一种方法是将其拆分为子任务,如下所示:

  • 提示用户输入一系列数字
  • 输入每个数字后,您将检查它是否已在数组中 如果不是,则在数组中输入,否则提示用户输入另一个数字
  • 填充数组后,将输出数组中的数字
  • 所以,关键的一点是,有一个函数可以检查 数组中已经有一个新的数字,如果是,则返回True,否则返回False。如何做是您问题的答案。 您需要注意这一点,因为如果在 程序中,您需要避免将新数字与 上一次。我故意没有在下面的示例代码中解决这个问题,将其作为练习留给读者。提示:一种方法是编写一个“清除”的过程每次使用之前的数组,例如,用无效的彩票号码(如负数或零)填充数组。另一种方法是定义一个记录,其中包括NumberArray和一个计数字段,该字段记录到目前为止已输入的号码数:这样可以避免将新号码与中的所有元素进行比较E 数组,并允许您在调用ReadNumbers之前通过将Count字段重置为零来重新使用数组

    program LotteryNumbers;
    
    uses crt;
    
    type
      TNumberArray = array[1..5] of Integer;
    var
      Numbers : TNumberArray;
      Number : Integer;
    
    function IsInArray(Number : Integer; Numbers : TNumberArray) : Boolean;
    var
      i : Integer;
    begin
      Result := False;
      for i:= Low(Numbers) to High(Numbers) do begin
        if Numbers[i] = Number then begin
          Result := True;
          break;
        end;
      end
    end;
    
    procedure ReadNumbers(var Numbers : TNumberArray);
    var
      i : Integer;
      NewNumber : Integer;
      OK : Boolean;
    begin
      //  Note: This function needs to have a check added to it that the number
      //  the user enters is a valid lottery number, in other words that the   
      //  number is between 1 and the highest ball number in the lottery
    
      for i := Low(Numbers) to High(Numbers) do begin
        repeat
          OK := False;
          writeln('enter a number');
          ReadLn(NewNumber);
          OK := not IsInArray(NewNumber, Numbers);
          if not OK then
            writeln('Sorry, you''ve already chosen ', NewNumber);
        until OK;
        Numbers[i] := NewNumber;
      end;
    end;
    
    procedure ListNumbers(Numbers : TNumberArray);
    var
      i : Integer;
    begin
      for i := Low(Numbers) to High(Numbers) do
        writeln(Numbers[i]);
    end;
    begin
      ReadNumbers(Numbers);
      ListNumbers(Numbers);
      writeln('press any key');
      readkey;
    end.