Показать сообщение отдельно
Старый 01.04.2011, 00:07   #10 (permalink)
ZEKE
Member
 
Регистрация: 15.02.2011
Сообщений: 23
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Post

Думая с комментариями будет понятней.
Код:
Program num;
uses crt;
var
x,y,z,i,t,p,s,q,d,a,j,b,c:integer;
begin
randomize;
repeat
     x:=random(70);  рандомное 2-x значное число
      y:=x mod 10;   Разбиваю число на  
      z:=x div 10;           две части
until y+1=z;
         write(x);      
         q:=y;    
         d:=10;        
 for i:=1 to 50 do     вывод чисел в обратном порядке
         begin
         p:=random(9);    рандом из 9 чисел
         if(p+1=q)        если число меньше заданного на единицу
         then
         begin
         write('+',p);    записать его в плюс
         t:=t+p;         сложить сумму чисел 
if(p=0) or (p=00)     если дошли до нуля и 100 не набрали
         then
         begin
repeat
         j:=j+d;        
         d:=d-1;     отнимать единицу от каждого предыдущего числа
         write('+',d);  записать числа которые еще не встречались
until d=z+1;           
         end;
         q:=q-1;    
          end;
          end;
 if(x+t>=100)   а тут уже начал мудрить с лимитом,
         then            когда сумма превышает 100
         begin                
         repeat
         b:=(x+t-100);
         write('-',b);
         c:=d-b;
         until c=100;
         writeln('limit = ',t+j+x);
         end
         else
         begin
         writeln('=',t+j+x);
         writeln('symma ne ravna; 100');
          end;
        end.
ZEKE вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070