tmoddiv3.pp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. program tmoddiv3;
  2. const
  3. TestValues: array[0..9] of LongWord = (500, 1, 0, 995, $7FFFFFFF, $80000000, $80000001, $80000002, $FFFFFFFF, 1000000);
  4. const
  5. ExpectedResults: array[0..9,1..16] of LongWord = (
  6. (0,500,500,0,166,2,0,500,0,500,0,500,0,500,0,500),
  7. (0,1,1,0,0,1,0,1,0,1,0,1,0,1,0,1),
  8. (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
  9. (0,995,995,0,331,2,0,995,0,995,0,995,0,995,0,995),
  10. (2147483,647,2147483647,0,715827882,1,524287,4095,1,0,0,2147483647,0,2147483647,0,2147483647),
  11. (2147483,648,2147483648,0,715827882,2,524288,0,1,1,1,0,0,2147483648,0,2147483648),
  12. (2147483,649,2147483649,0,715827883,0,524288,1,1,2,1,1,1,0,0,2147483649),
  13. (2147483,650,2147483650,0,715827883,1,524288,2,1,3,1,2,1,1,0,2147483650),
  14. (4294967,295,4294967295,0,1431655765,0,1048575,4095,2,1,1,2147483647,1,2147483646,1,0),
  15. (1000,0,1000000,0,333333,1,244,576,0,1000000,0,1000000,0,1000000,0,1000000));
  16. var
  17. X, Y, C, Col: LongWord;
  18. procedure DoCheck;
  19. begin
  20. if Y<>ExpectedResults[C,Col] then
  21. begin
  22. writeln('Error at ',C,' ',Col);
  23. halt(1);
  24. end;
  25. Inc(Col);
  26. end;
  27. begin
  28. for C := Low(TestValues) to High(TestValues) do
  29. begin
  30. X := TestValues[C];
  31. Col := 1;
  32. Y := X div 1000;
  33. Write(Y,',');
  34. DoCheck;
  35. Y := X mod 1000;
  36. Write(Y,',');
  37. DoCheck;
  38. Y := X div 1;
  39. Write(Y,',');
  40. DoCheck;
  41. Y := X mod 1;
  42. Write(Y,',');
  43. DoCheck;
  44. Y := X div 3;
  45. Write(Y,',');
  46. DoCheck;
  47. Y := X mod 3;
  48. Write(Y,',');
  49. DoCheck;
  50. Y := X div $1000;
  51. Write(Y,',');
  52. DoCheck;
  53. Y := X mod $1000;
  54. Write(Y,',');
  55. DoCheck;
  56. Y := X div $7FFFFFFF;
  57. Write(Y,',');
  58. DoCheck;
  59. Y := X mod $7FFFFFFF;
  60. Write(Y,',');
  61. DoCheck;
  62. Y := X div $80000000;
  63. Write(Y,',');
  64. DoCheck;
  65. Y := X mod $80000000;
  66. Write(Y,',');
  67. DoCheck;
  68. Y := X div $80000001;
  69. Write(Y,',');
  70. DoCheck;
  71. Y := X mod $80000001;
  72. Write(Y,',');
  73. DoCheck;
  74. Y := X div $FFFFFFFF;
  75. Write(Y,',');
  76. DoCheck;
  77. Y := X mod $FFFFFFFF;
  78. Writeln(Y);
  79. DoCheck;
  80. end;
  81. writeln('ok');
  82. end.