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