Новичок
Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.12.2009
Репутация: нет Всего: нет
|
В указаной вами теме, я ничего не понил и там видать уже идет работа не с .PAS а уже с компилированой прогой, мнеже надо что бы я запускал через паскаль, мне по ней как бы отчитываться. Да и подключать что то извне да и делать что либо в Паскале я не особо умею. Если ставить текст мод, то буквы только слегка съезжают, но препода это не устраивает, всякие точки то там то тут появляются, некоторые цифры съезжа.т. В общем помогите плиз , скажите что исправить. И напишите какие и где пути надо указать? Ну как я понимаю в процедуре графа надо указать путь до папки с графом(BGI)/ и в directories в поле unit до папки UNITS. И все вроде бы Вот текст проги приложил: Код | program rgr; uses crt,graph; var operat,option:char; rez,ch1,ch2:real; l:integer; label lb1; {-----------Заставка---------} procedure zastavka; var x,y:integer; grDriver: integer; grMode:integer; ErrCode:integer; res:integer; begin grDriver:=detect; InitGraph (grDriver, grMode, 'h:\tp\bgi'); ErrCode:=GraphResult; if ErrCode = grOk then begin x:=150; y:=150; SetFillStyle (SolidFill,White); Bar (x,y,x+30,y+150); SetFillStyle (SolidFill,White); Bar(x+30,y,x+80,y+30); SetFillStyle (SolidFill,White); Bar(x+80,y+30,x+65,y+65); SetFillStyle (SolidFill,White); Bar(x+80,y+100,x+30,y+65); SetFillStyle (SolidFill,Blue); Bar (x+110,y,x+140,y+150); SetFillStyle (SolidFill,Blue); Bar(x+110,y,x+190,y+30); SetFillStyle (SolidFill,Red); Bar (x+220,y,x+250,y+150); SetFillStyle (SolidFill,Red); Bar(x+250,y,x+300,y+30); SetFillStyle (SolidFill,REd); Bar(x+300,y+30,x+285,y+75); SetFillStyle (SolidFill,Red); Bar(x+300,y+100,x+250,y+75); end; readln; CloseGraph; end; {-----------Помощь------------------------} procedure help2; begin clrscr; textcolor (white); writeln('Пример:'); writeln('Преобразовать целое число (125)"10" в "2"'); writeln('125:2=62 1'); writeln('62 :2=31 0'); writeln('31 :2=15 1'); writeln('15 :2=7 1'); writeln('7 :2=3 1'); writeln('3 :2=1 1'); writeln('1 :2=0 1'); writeln('(125)"10"=(1111101)"2"'); writeln('Для перевода правильной дроби "10" в систему с основанием b(2) необходимо последовательно умножать исх'); writeln('одную дробь и дробные части получающихся произведений на b(2). Искомые цифры искомого представления 10'); writeln('-чного числа есть последовательность целых частей произведений, причем первая из них даёт старшую цифр'); writeln('у a(1)'); writeln('Пример:'); writeln('Преобразовать правильную дробь (0.567)"10" в 8-ную систему счисления'); writeln('0.567 0.536 0.288 0.304 0.432 0.456'); writeln('* 8 * 8 * 8 * 8 * 8 * 8'); writeln('4.536 4.288 2.304 0.432 3.456 3.648'); writeln('(0.567)"10"=(0.442033)"8"'); readln; end; {----------Помошь-------------------------------------} procedure help1; begin clrscr; textcolor (white); writeln('Преобразование чисел из одной системы счисления в другую.'); writeln('Пусть N - число в системе с основанием b(1), которое требуется представить в системе с основанием b(2)'); writeln('Так как легко оперировать только с десятичными числами,то преобразование осущес'); writeln('твляется через промежуточную систему счисления:десятичную. Условно это выглядит так: b(1)=>10=>b(2)'); writeln('1)Перевод из b(1) а 10-чную систему'); writeln('Метод преобразования состоит в представлении числа N в виде многочлена по степен'); writeln('ям b(1) и вычислении этого многочлена с помощью десятичной арифметики'); writeln('Пример:'); writeln('Преобразуем число (571.31) из "8" в число в системе с основанием 10'); writeln('(571.31)"8"=5*8^2+7*8^1+1*8^0+3*8^-1+1*8^-2=(377.390625)"10"'); writeln('2)Перевод из 10 в b(2)'); writeln('Для перевода целого числа N по основанию 10 в систему с основанием b(2) необход'); writeln('имо последовательно делить исходное число N и образующиеся частные на b(2) до '); writeln('получения частного,равного 0. Искомое представление числа N по основанию b(2) есть последовательность '); writeln('остатков от операций деления,причём первый остаток даёт младшую цифру'); readln; help2; end; {---------------Титульный лист-----------------} procedure titul; begin clrscr; textcolor(white); gotoxy (14,2);writeln('Саратовский государственный технический университет.'); gotoxy (18,3);writeln('Министерство образования Российской Федерации'); gotoxy (12,5);writeln('Кафедра программного обеспечения вычислительной техники'); gotoxy (25,6);writeln('и информационных систем.'); gotoxy (20,9);writeln('Расчетно-графическая работа по дисциплине'); gotoxy (30,10);writeln('"Информатика"'); gotoxy (35,12);writeln('Тема:'); gotoxy (10,13);writeln('"Перевод чисел из любой системы счисления(СС) в любую СС."'); gotoxy (50,16);writeln('Выполнил:'); gotoxy (50,17);writeln('Студент ФЭТиП, СГТУ, ПВС-11'); gotoxy (50,18);writeln('Командровский В.С.'); gotoxy (50,20);writeln('Проверила: профессор кафедры'); gotoxy (50,21);writeln('Матвеева И.А.'); gotoxy (35,25);writeln('Саратов 2009.'); readkey end; {-------Перевод из любой степени в 10-ю--------------------------} function step1 (b1:integer; num1:string):string; var k,i,n:longint; err:integer; num2,weight:real; begin k:=-1; num2:=0; if (num1[1]='-') then {Если есть - то удаляем его и запоминаем} begin Delete(num1,1,1); l:=1; for i:=1 to length(num1) do if (num1[i]='.') then break else k:=k+1; weight:=1; for i:=1 to k do weight:=weight*b1; for i:=1 to length(num1) do begin val(num1[i],n,err); {Преобразование строки в число} if (n>=b1) then begin writeln('Ошибка ввода:число должно быть с основанием выбраной вами СС'); break end else begin if (num1[i]<>'.') then begin if (num1[i]>='0') and (num1[i]<='9') then val(num1[i],n,err) else n:=ord(num1[i])-55; {порядковое значение выражения.} num2:=num2+n*weight; weight:=weight/b1; end;end;end; str(num2:20:10, num1); {Число в строку} step1:=num1; end else begin {Если "-" не было тогда} for i:=1 to length(num1) do if (num1[i]='.') then break else k:=k+1; weight:=1; for i:=1 to k do weight:=weight*b1; for i:=1 to length(num1) do begin val(num1[i],n,err); if (n>=b1) then begin writeln('Ошибка:число должно быть с основанием выбраной вами СС ',b1); break end else begin if (num1[i]<>'.') then begin if (num1[i]>='0') and (num1[i]<='9') then val(num1[i],n,err) else n:=ord(num1[i])-55; num2:=num2+n*weight; weight:=weight/b1; end;end;end; str(num2:20:10, num1); step1:=num1; end; end; {-------------------Перевод из 10-й в любую--------------} procedure step2 (b2:integer; number1:string); var num,fraction,next:real; int_part, ost,i,n:longint; err:integer; str1:char; begin val(number1, num, err); int_part:=trunc(num); {вещественное в целое} fraction:=num-int_part; number1:=''; while (int_part<>0) do begin ost:=int_part mod b2; if (ost>=10) then str1:=chr(ost+55) else str1:=chr(ost+48); int_part:=int_part div b2; number1:=str1+number1; end; if (fraction<>0) then number1:=number1+'.'; for i:=1 to 10 do begin next:=fraction*b2; if (next<>0) then begin n:=trunc(next); if (n>=10) then str1:=chr(n+55) else str1:=chr(n+48); fraction:=next - trunc(next); number1:=number1+str1; end else break end; if l=1 then begin Insert('-',number1,1); writeln(number1); end else writeln(number1); end; procedure main; var b1,b2:integer; number1:string[50]; begin clrscr; writeln('Введите СС из которой вы будете переводить число'); readln(b1); writeln('_____________________________________________________'); writeln('Введите число с учетом выбраной вами СС'); readln(number1); writeln('_____________________________________________________'); writeln('Введите СС в которую вы хотите перевести число'); readln(b2); writeln('_____________________________________________________'); if (b1=b2) then writeln('Ответ:', number1) else if (b1>0) and (b2>0) then begin number1:=step1(b1,number1); step2(b2,number1); end else writeln('Ошибка, основание системы счисления должно быть больше 0'); readln; end; {-----------------------------------------} begin lb1: clrscr; begin textcolor (white); gotoxy(9,1); writeln('Перевод чисел из любой СС в любую СС.'); gotoxy(9,5); writeln('1. Заставка.'); gotoxy(9,6); writeln('2. Титульный лист.'); gotoxy(9,7); writeln('3. Запустить Программу.'); gotoxy(9,8); writeln('4. Справка.'); gotoxy(9,9); writeln('0. Выход.'); gotoxy(9,11); writeln('Выберите действие: '); gotoxy(58,11); readln(option); end; case option of '1': begin zastavka;goto lb1;end; '2': begin titul; goto lb1; end; '3': begin main; goto lb1; end; '4': begin help1; goto lb1; end; '0': exit; end; readkey end.
|
Это сообщение отредактировал(а) volvo877 - 25.12.2009, 09:57
|