![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 04.12.2010
Сообщений: 16
|
![]()
Здравствуйте уважаемые программисты. Нужна ваша помощь. Написал программу которая вычисляет среднее арифметическое всех положительных элементов над главной диагональю. Но вот при выполнении выводится ошибка 16-разрядная подсистема дос. пишет что процессор обнаружил недопустимую инструкцию, кто знает в чем дело???(проверял на нескольких компиляторах). Вот код:
program kr3; uses crt,dos; type mytype=integer; pmymas=^mymas; mymas=array[0..0] of mytype; myarrayptr=^myarray; myarray=array[0..0] of pmymas; function choosing:byte; var c:char; success:boolean; begin repeat writeln('Выберите один из следующих вариантов:1-ввод матрицы вручную; '); writeln('2-автоматическое заполнение матрицы;3-ввод из файла.'); readln(c); case c of '1':choosing:=1; '2':choosing:=2; '3':choosing:=3; else begin writeln('Ошибка. Вы должны выбрать один из предложенных вариантов.'); success:=false; end; end; if(c='1')or(c='2')or(c='3') then success:=true; until (success=true); end; procedure input(var dinarray:myarrayptr;var n:integer); var i,j,code:integer; s:string; begin writeln('Введите размер квадратной матрицы A'); readln(n); getmem(dinarray,n*sizeof(pmymas)); for i:=1 to n do getmem(dinarray^[i],n*sizeof(mytype)); for j:=1 to n do begin repeat write ('A[',i,',',j,']='); readln(s); val(s,dinarray^[i]^[j],code); if code<>0 then writeln('Введено недопустимое значение! Повторите ввод!'); until(code=0); end; end; procedure automat(var n:integer;var dinarray:myarrayptr); var j,i:integer; begin randomize; writeln('Введите размер квадратной матрицы'); readln(n); for i:=1 to n do for j:=1 to n do begin dinarray^[i]^[j]:=random(50); end; end; procedure filinput(var n:integer;var dinarray:myarrayptr); var i,j:integer; name:string; fin:text; begin repeat writeln('Введите имя файла'); readln(name); assign(fin,name+'.txt'); {$I-} reset(fin); {$I+} if IOResult<>0 then writeln('Данный файл не существует'); until(IOResult=0); read(fin,n); for i:=1 to n do for j:=1 to n do read(fin,dinarray^[i]^[j]); writeln; close(fin); end; procedure ishod(const dinarray:myarrayptr;n:integer); var i,j:integer; begin writeln ('Исходная матрица A '); for i:=1 to n do begin for j:=1 to n do write (dinarray^[i]^[j]:3,' '); writeln; end; end; procedure sred(var kol,sum:integer;const dinarray:myarrayptr;n:integer); var i,j:integer; begin sum:=0; kol:=0; for i:=1 to n do for j:=1 to n do if (dinarray^[i]^[j]>0) and (i<j) then begin inc(kol); sum:=sum+dinarray^[i]^[j]; end; end; procedure output(kol,sum:integer;n:integer); var fout:text; c:char; name:string; begin writeln('Для вывода результата на экран нажмите 1, если в файл - 2'); readln(c); if (c='1') then begin writeln('Сумма положительных элементов над главной диагональю= ',sum); writeln('Их количество= ',kol); writeln('Среднее арифметическое=',sum/kol:4:2); end else if (c='2') then begin writeln('Введите имя файла:'); readln(name); assign(fout,name); rewrite(fout); write(fout,'Среднее арифметическое=',sum/kol:4:2); close(fout); end; end; var kol,sum,n,i:integer; dinarray:myarrayptr; begin clrscr; write('Данная программа находит среднее арифметическое всех положительных элементов,'); writeln('находящихся над главной диагональю.'); case choosing of 1:input(dinarray,n); 2:automat(n,dinarray); 3:filinput(n,dinarray); end; ishod(dinarray,n); sred(kol,sum,dinarray,n); output(kol,sum,n); readln; for i:=1 to n do freemem(dinarray^[i],n*sizeof(mytype)); freemem(dinarray,n*sizeof(pmymas)); readln; end. помогите плиз!!! |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Динамическая матрица | Shab13 | Помощь студентам | 1 | 21.04.2011 11:11 |
Непонятки с DirectX (матрица поворота, камера, матрица проекции) | ROD | Общие вопросы C/C++ | 2 | 17.09.2010 17:00 |
Динамическая матрица через класс и перегрузка | artyom-d | Общие вопросы C/C++ | 0 | 03.04.2010 14:36 |
Динамическая матрица | Selestis | Общие вопросы Delphi | 5 | 20.02.2010 20:37 |
TurboPascal: граф, матрица смежности и матрица инцидентности. | ulala | Помощь студентам | 0 | 02.12.2009 10:11 |