![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
SunDevil |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 28 Пол: Мужской Репутация: ![]() ![]() ![]() |
Помогите, плиз, разобраться с такой проблемой: в прикрепленном файле наполовину сделанный мой курсовик. Все ООП содержтся в файле Main.PAS В этом файле нормально работает только массив (с матрицей и списком я еще не разобрался). Когда запустите прогу, то увидете меню. Мне надо, чтобы на данный момент ВЫ помогли бы мне реализовать первый пункт меню (РАБОТА С МАССИВОМ). Надо, чтобы когда я зашел в этот пункт меню и выбрал любой другой пункт (Ввод массива, ввод диапазона от А до В, вывод измененного массива), то соотвественно это все работало. Моя проблема заключается в том, что я не знаю как вызывать файл Main.PAS и чтобы там все прекрасно работало :o
ПОМОГИТЕ, плиз :p2: Прикрепленные файлы ![]() |
![]() ![]() |
SunDevil |
![]()
Сообщение
#2
|
Новичок ![]() Группа: Пользователи Сообщений: 28 Пол: Мужской Репутация: ![]() ![]() ![]() |
Доделал я этот гребаный курсовик, НО есть теперь опять одно НО! Сначала ввожу матрицу, потом для нее диапазон, все прекрасно. Со списком тоже все хорошо, но вот когда я перехожу к массиву, то при выводе выдает опять черт знает что.
Тестил на: 3 4 6 7 Диапазон 0;3 Вывод 4 6 7 1 Откуда теперь единица? :o Может дело в переменной k? А то ее слишком уж много у меня в программе? Посмотрите, плиз Исходный код unit main; interface uses crt; type TAbst=object n:integer; constructor Init; procedure InData; virtual; procedure Form; virtual; procedure OutRes; virtual; destructor Done; virtual; end; mas=array[1..1] of integer; TMas=object(TAbst) x,y:^mas; constructor Init(n1:integer); procedure InData; virtual; procedure Form; virtual; procedure OutRes; virtual; destructor Done; virtual; end; matr=array[1..1] of ^mas; TMatr=object(TAbst) m:integer; x:^matr; y:^mas; ArrLen:integer; constructor Init(n1,m1:integer); procedure InData; virtual; procedure Form; virtual; procedure OutRes; virtual; destructor Done; virtual; end; PList1=^List1; List1=record dat:integer; next:PList1; end; TList=object(TAbst) beg,beg1:PList1; constructor Init(n1:integer); procedure InData; virtual; procedure Form; virtual; procedure OutRes; virtual; destructor Done; virtual; end; PMas=^TMas; PMatr=^TMatr; PList=^TList; procedure InRazm(var n,m:integer); implementation procedure InRazm(var n,m:integer); begin clrscr; writeln('Введите размерность матрицы :'); readln(n,m); end; constructor TAbst.Init; begin end; procedure TAbst.InData; begin end; procedure TAbst.Form; begin end; procedure TAbst.OutRes; begin end; destructor TAbst.Done; begin end; {Array} constructor TMas.Init(n1:integer); begin n:=n1; getmem(x,n*sizeof(Mas)); getmem(y,n*sizeof(Mas)); end; procedure TMas.InData; var i:integer; begin clrscr; for i:=1 to n do begin write('a[',i,']= '); readln(x^[i]); end; clrscr; end; procedure TMas.Form; var i,k:integer; a,b:real; begin clrscr; writeln('Введите диапазон значений от A до B'); readln( a,B ); k:=0; for i:=1 to n do if (x^[i]<a) OR (x^[i]>b) then begin inc(k); y^[k]:=x^[i]; end; clrscr; end; procedure TMas.OutRes; var k:integer; begin clrscr; for k:=1 to n do write(y^[k],' '); readln; clrscr; end; destructor TMas.Done; begin freemem(x,n*sizeof(Mas)); freemem(y,n*sizeof(Mas)); end; {Matrix} constructor TMatr.Init(n1,m1:integer); var i:integer; begin n:=n1; m:=m1; getmem(x,n*sizeof(Matr)); for i:=1 to n do getmem(x^[i],m*sizeof(Mas)); getmem(y,n*m*sizeof(Mas)); end; procedure TMatr.InData; var i,j:integer; begin clrscr; for i:=1 to n do for j:=1 to m do begin write('a[',i,',',j,']= '); readln(x^[i]^[j]); end; clrscr; end; procedure TMatr.Form; var i,j:integer; a,b:real; begin clrscr; writeln('Введите диапазон значений от A до B'); readln( a,B ); ArrLen:=0; for i:=1 to n do for j:=1 to m do if (x^[i]^[j]<a) OR (x^[i]^[j]>b) then begin inc(ArrLen); y^[ArrLen]:=x^[i]^[j]; end; clrscr; end; procedure TMatr.OutRes; var k:integer; begin clrscr; for k:=1 to ArrLen do write(y^[k],' '); readln; clrscr; end; destructor TMatr.Done; var i:integer; begin for i:=1 to n do freemem(x^[i],m*sizeof(Mas)); freemem(y,n*m*sizeof(Mas)); freemem(x,n*sizeof(Matr)); end; constructor TList.Init(n1:integer); begin n:=n1; end; procedure TList.InData; var i:integer; PEnd,p:PList1; begin clrscr; beg:=nil; for i:=1 to n do begin new(p); write('a[',i,']= '); readln(p^.Dat); p^.next:=nil; if beg=nil then beg:=p else PEnd^.Next:=p; PEnd:=p; end end; procedure TList.Form; var a,b:integer; p,p1,PEnd1:PList1; begin clrscr; writeln('Введите диапазон значений от A до B'); readln( a,B ); p:=beg; beg1:=nil; repeat if (p^.Dat<a) OR (p^.Dat>b) then begin new(p1); p1^.Dat:=p^.Dat; p1^.next:=nil; if beg1=nil then beg1:=p1 else PEnd1^.next:=p1; PEnd1:=p1 end; p:=p^.next; until p=nil; end; procedure TList.OutRes; var p:PList1; begin clrscr; p:=beg1; repeat write(p^.Dat,' '); p:=p^.next; until p=nil; readln end; destructor TList.Done; var p,p1:PList1; begin p:=beg; repeat p1:=p^.next; dispose(p); p:=p1; until p=nil; p:=beg1; repeat p1:=p^.next; dispose(p); p:=p1; until p=nil; end; end. |
![]() ![]() |
![]() |
Текстовая версия | 6.07.2025 17:40 |