![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
SunDevil |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 28 Пол: Мужской Репутация: ![]() ![]() ![]() |
Помогите, плиз, разобраться с такой проблемой: в прикрепленном файле наполовину сделанный мой курсовик. Все ООП содержтся в файле Main.PAS В этом файле нормально работает только массив (с матрицей и списком я еще не разобрался). Когда запустите прогу, то увидете меню. Мне надо, чтобы на данный момент ВЫ помогли бы мне реализовать первый пункт меню (РАБОТА С МАССИВОМ). Надо, чтобы когда я зашел в этот пункт меню и выбрал любой другой пункт (Ввод массива, ввод диапазона от А до В, вывод измененного массива), то соотвественно это все работало. Моя проблема заключается в том, что я не знаю как вызывать файл Main.PAS и чтобы там все прекрасно работало :o
ПОМОГИТЕ, плиз :p2: Прикрепленные файлы ![]() |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Я же сказал тебе не просто описАть указатели, а работать с указателями:
Исходный код Unit menu; interface Procedure Run; implementation Uses Crt, main; Const maxLen = 42; myHelp:array[1..5] of string=( ' ', 'Курсовая Работа', 'Все права защищены © 2005', 'БГТУ "ВоенМех" им. Д.Ф. Устинова', 'Автор: '); Type menuString = String[maxLen]; Function ShowMenu(Var Options: Array Of menuString; Const n: Integer): Integer; Var ToExit: Boolean; i, CurrSelect: integer; Answer: Char; Begin TextAttr := 7; ClrScr; ToExit := False; CurrSelect := 1; Repeat Window(18,7,50,11); TextBackground(Blue); ClrScr; Window(1,1,80,25); GotoXY(18, 7); TextColor(White); Write('╔════════════════════════════════════════╗'); For i := 1 To 7 Do Begin GotoXY(18,7+i); Write('║ ║') End; GotoXY(18,15); Write('╚════════════════════════════════════════╝'); GotoXY(29, 8); WriteLn('Выберите действие:'); For i := 1 To n Do Begin If i = CurrSelect Then TextBackground(Red) Else TextBackground(Blue); GotoXY(20, 9+i); Write(Options[Pred(i)]) End; TextBackground(Black); Case ReadKey Of #0: Begin Answer := ReadKey; Case Answer Of #80 : {Down} If CurrSelect < n Then Inc(CurrSelect) Else CurrSelect := 1; #72 : {Up} If CurrSelect > 1 Then Dec(CurrSelect) Else CurrSelect := n; End; {case} End; #13 : {Enter} ToExit := True; End; Until ToExit; ShowMenu := CurrSelect End; Const mainMenuSize = 5; mainMenu: Array[1 .. mainMenuSize] Of menuString = (' Работа с массивом ', ' Работа с матрицей ', ' Работа со списком ', ' Справка ', ' Выход '); massivMenuSize = 4; massivMenu: Array[1 .. massivMenuSize] Of menuString = (' Ввести массив ', ' Ввести диапазон от A до B ', ' Вывести измененный массив ', ' Назад '); matrixMenuSize = 4; matrixMenu: Array[1 .. matrixMenuSize] Of menuString = (' Ввести матрицу ', ' Ввести диапазон от A до B ', ' Вывести массив значений ', ' Назад '); listMenuSize = 4; listMenu: Array[1 .. listMenuSize] Of menuString = (' Ввести список ', ' Ввести диапазон от A до B ', ' Вывести измененный список ', ' Назад '); Procedure Run; Var i,menuResult: Integer; pmassObj: ^TMas; pmatrixObj: ^TMatr; plistObj: ^TList Begin pmatrixObj := nil; Repeat Case ShowMenu(mainMenu, mainMenuSize) of 1: { Work with Array: } Begin GotoXY(1, 20); If pmatrixObj <> nil Then Begin New(pmassObj, Init); Repeat menuResult := ShowMenu(massivMenu, massivMenuSize); Case menuResult Of 1: pmassObj^.InData; { ... } 2: pmassObj^.Form; { ... } 3: pmassObj^.OutRes; { ... } 4: pmassObj^.Done; End; Until menuResult = 4; Dispose(pmassObj, Done) End Else WriteLn(' Не могу инициализировать массив.' + ' Матрица не была инициализирована '); End; 2: { Work with Matrix: } Begin New(pmatrixObj, Init); Repeat menuResult := ShowMenu(matrixMenu, matrixMenuSize); Case menuResult Of 1: matrixObj^.InData; { ... } 2: matrixObj^.Form; { ... } 3: matrixObj^.OutRes; { ... } 4: matrixObj^.Done; End; Until menuResult = 4; { не удаляем матрицу - она еще понадобится } End; 3: { Work with List: } Begin { listObj.Init; } Repeat menuResult := ShowMenu(listMenu, listMenuSize); Case menuResult Of 1:; { ... } 2:; { ... } 3:; { ... } 4: { listObj.Done; } End; Until menuResult = 4; End; 4: begin Window(18,7,50,11); TextBackground(Blue); ClrScr; Window(1,1,80,25); GotoXY(18, 7); TextColor(White); Write('╔════════════════════════════════════════╗'); For i := 1 To 7 Do Begin GotoXY(18,7+i); Write('║ ║') End; GotoXY(18,15); Write('╚════════════════════════════════════════╝'); GotoXY(29, 8); WriteLn(' Справка:'); for i:=1 to 5 do begin GoToXY(23,8+i); write(myHelp[i]); end; readln end; { Show help } 5: Break; End; Until False; { А вот тут уже удаляем матрицу } Dispose(pmatrixObj, Done); End; end. |
![]() ![]() |
![]() |
Текстовая версия | 6.07.2025 19:02 |