Другие языки программирования и технологии

Помогите в паскале Исправить ошибку?

Вот код: program RUKZAK; uses crt; var as,l,u,f:longint; ppr,q:real; n,m,x:longint; v,k,c,s,ko1,ko2,ko3,ko4,ko5,ko6,ko7,ko8,a1,a2,a3,a4,a5,a6,a7,a8:integer; w,r1, r2, r3, r4, r5, r6, r7, r8,e1, e2, e3, e4, e5, e6, e7, e8 :integer; b,j,z1,z2,z3,z4,z5,z6,z7,z8 :integer; begin clrscr; writeln ('vvedite posledovateinost zakritogo klycha'); write ('k='); readln (a1, a2, a3, a4, a5, a6, a7, a8); s:=a1+a2+a3+a4+a5+a6+a7+a8; m:=s+1; writeln ('m=',m,' > ',s); writeln; writeln ('vvesti n vzaimno prostoe s m:'); write ('n='); readln (n); ko1:=((a1*n)mod m); writeln ('ko1=',ko1); ko2:=((a2*n)mod m); writeln ('ko2=',ko2); ko3:=((a3*n)mod m); writeln ('ko3=',ko3); ko4:=((a4*n)mod m); writeln ('ko4=',ko4); ko5:=((a5*n)mod m); writeln ('ko5=',ko5); ko6:=((a6*n)mod m); writeln ('ko6=',ko6); ko7:=((a7*n)mod m); writeln ('ko7=',ko7); ko8:=((a8*n)mod m); writeln ('ko8=',ko8); writeln; writeln ('otkritiy klych:'); writeln ('Ko={',ko1,' ',ko2,' ',ko3,' ',ko4,' ',ko5,' ',ko6,' ',ko7,' ',ko8,'}'); writeln; writeln('vvedite chislo dlya shifrovaniya - proizvolnoe:'); write ('P='); readln(r1); writeln; writeln('dvoichnoe predstavlenie chisla :',r1); e1:=r1 mod 2; r2:=r1 div 2; e2:=R2 mod 2; R3:=R2 div 2; E3:=r3 mod 2; R4:=R3 div 2; E4:=R4 mod 2; r5:=r4 div 2; e5:=r5 mod 2; R6:=R5 div 2; r7:=r6 div 2; e6:=r6 mod 2; e7:=r7 mod 2; if e7<1 theN e7:=0 else e7:=1; iF e7=0 theN E8:=0 else e8:=r7 div 2; writeln; writeln ('P(2)=',e8, e7, e6, e5, e4, e3, e2, e1); writeln; { writeln ('Ppr=',ko1*e8,' ',ko2*e7,' ',ko3*e6,' ',ko4*e5,' ',ko5*e4,' ',ko6*e3,' ',ko7*e2,' ',ko8*e1,');} c:=ko1*e8+ko2*e7+ko3*e6+ko4*e5+ko5*e4+ko6*e3+ko7*e2+ko8*e1; writeln; writeln ('c=',c); writeln; x:=1; k:=(m*x+1); while k mod n<>0 do begin x:=x+1; k:=(m*x+1); end; q:=k/n; w:= trunc (q) ; l:=trunc (c); u:=trunc (w); f:=l*u; as:=f mod m; writeln ('Ppr=',as); b:=a8; if b<=as then begin z1:=1; b:=b+a7; end else begin z1:=0; b:=a7; end; if b<=as then begin z2:=1; b:=b+a6; end else begin z2:=0; b:=(b-a7)+a6; end; if b<=as then begin z3:=1; b:=b+a5; end else begin z3:=0; b:=(b-a6)+a5; end; if b<=as then begin z4:=1; b:=b+a4; end else begin z4:=0; b:=(b-a5)+a4; end; if b<=as then begin z5:=1; b:=b+a3; end else begin z5:=0; b:=(b-a4)+a3; end; if b<=as then begin z6:=1; b:=b+a2; end else begin z6:=0; b:=(b-a3)+a2; end; if b<=as then begin z7:=1; b:=b+a1; end else begin z7:=0; b:=(b-a2)+a1; end; if b<=as then z8:=1 else z8:=0; writeln; writeln ('P(2)=',z8,z7,z6,z5,z4,z3,z2,z1); writeln; if z8=e8 then if z7=e7 then if z6=e6 then if z5=e5 then if z4=e4 then if z3=e3 then if z2=e2 then if z1=e1 then j:=r1 else writeln ('FATAL ERROR'); writeln; writeln ('___razhifrovannii text___',j); writeln; readln; end. Это шифрование методом "рюкзак" ошибка в самом начале uses crt помогите ее исправить и подскажите что такое crt. Если у кого нибудь есть такой метод пришли исходник. Спасибо
VA
Viktor Avetcin
240
С чего вы взяли, что имеет место ошибка ("ошибка в самом начале")? Компилятор что-то выводит? Так чего аки партизан вы скрываете это? Почему не приводите его ругань ("он начал ругаться на все AS")? Как вам помочь, если нет практически никакой исходной информации кроме текста программы?

Кстати, у меня она скомпилилась без проблем. Что я сделал не так? И CRT здесь ни при чем. Вывод: ищите ошибку в другом месте.

2 Jurii: Не должно быть AS логического типа. Эта переменная содержит остаток от деления

f:=l*u;
as:=f mod m;
writeln ('Ppr=',as);
Сергей Головин
Сергей Головин
59 613
Лучший ответ
AS должно быть Boolean, а у тебя Longint.
Иван Бобков
Иван Бобков
51 567
написано правильно uses crt = программа использует модуль crt (работа с консолью)
если ругается - может быть у вас этот модуль полетел (в каком файле сидит не помню может crt.tpl или crt.tpu)

вроде бы используете вы этот модуль только 1 раз при очистке экрана. попробуйте убрать clrscr; и uses crt;
Виктор Калев
Виктор Калев
17 923
не uses, а users, а crt -это подключаемая библиотека
АК
Алексей К.
6 821
uses crt написано правильно, это подключение стандартной библиотеки crt паскаля, но у тебя по каким то причинам она не находится или отсутствует.
В твоей программе она нужна чтобы бы выполнить из неё оператор Clrscr, который очищает экран перед началом работы программы, но без него вполне можно обойтись.
Поэтому убери uses crt и оператор Clrscr и у тебя должно всё заработать.
VC
Vladimir Cazacu
497
короч убери crt и вместо as напиши aas