|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
14.04.2013, 17:52 | #1 (permalink) |
Новичок
Регистрация: 14.04.2013
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Помогите дописать программу. Не сложно
program laba_spiski; uses CRT; type aaa = ^student; Student=record kurs,name:string[100]; vozr:integer; next:aaa; prev:aaa; end; var ps,pn,pt, pserch :aaa; n,i, kommand :integer; //---------------------------------------------------------------------- Procedure Init_List; label m1; var i,r:integer; F:text; m:string; Begin writeln(' Здравствуйте!'); writeln('Данная программа создает список студентов'); m1: writeln('Создать новый список или загрузить из файла?'); writeln('для создания нового введите 1 '); writeln('для загрузки из файла введите 2'); readln(r); if (r<>1) and (r<>2) then goto m1; if (r=1) then begin writeln('Укажите число студентов в группе');readln(n); end else begin writeln('Введи имя файла из которого нужно загрузить список'); write('Имя файла:'); readln(m); assign(F, m); reset(F); readln(F, n); end; ps:=nil; pt:=nil; pn:=nil; for i:=1 to n do begin new(pn); if (ps=nil) then begin ps:=pn; pn^.next:=nil; pn^.prev:=nil; end else begin pt^.next:=pn; pn^.prev:=pt; pn^.next:=nil; end; if (r=1) then begin writeln('Введите',i,'-ого студетна'); write('ФИО-'); readln(pn^.name); write('Факультет-'); readln(pn^.kurs); end else begin readln(F, pn^.name); readln(F, pn^.kurs); end; pt:=pn; end; if (r=2) then close(F); End; //--------------------------------------------------------------- Procedure Print_List; var i : integer; Begin i:=1; writeln('Список группы'); pt:=ps; while(pt<>nil) do begin writeln(i, 'ФИО-->', pt^.name,' Факультет-->',pt^.kurs); pt:=pt^.next; I:=I+1; end; End; //------------------------------------------------------------------- Function Get_Command : integer; label m2; var f : integer; Begin m2: writeln; writeln('--------------------------------------------------------'); writeln('для добавления - введите 1 '); writeln('для удаления --- введите 2'); writeln('для поиска ----- введите 3'); writeln('для печати списка ------- введите 4 '); writeln('для выхода из программы - введите 5'); readln(f); if (f<1) or (f>5) then goto m2; writeln; writeln; Get_Command := f; End; //--------------------------------------------------------------- Procedure Save_File; var F:text; s:string; Begin writeln(); writeln('Все результаты программы будут записываться в файл, при указания имени файла укажите формат'); write('имя нового файла:'); readln(s); assign(F, s); rewrite(F); writeln(F,n); pt:=ps; while(pt<>nil) do begin writeln(F,pt^.name); writeln(F,pt^.kurs); pt:=pt^.next; end; close(f); End; //------------------------------------------------------------------- Procedure Ochistka; Begin while (pt<>nil) do begin ps:=pt^.next; dispose(pt); pt:=ps; end; End; //------------------------------------------------------------------- procedure Poisk; var name:string[100]; Begin writeln('Введите ФИО стедента которого необходимо найти в списке'); readln(name); pt:=ps; pserch:=nil; while(pt<>nil) do begin if name=pt^.name then begin pserch:=pt; pt:=nil; end else pt:=pt^.next; end; if pserch=nil then writeln('Такого(-ю) студента(-ку) не найдено') else begin writeln('ФИО-',pserch^.name); writeln('Факультет-',pserch^.kurs); end; end; //------------------------------------------------------------------- label m3; begin Init_List; m3: Kommand:=Get_Command; case Kommand of 1: Begin end; 2: Begin end; 3: Begin Poisk; end; 4: Begin Print_List; end; 5: Begin Save_File; Ochistka; exit; end; end; goto m3; end. |
14.04.2013, 17:52 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Попробуйте найти решение вашего вопроса по данным ссылкам Помогите дописать эту программу Помогите написать программу VBS |
15.04.2013, 00:31 | #3 (permalink) |
С# - learn or die
Регистрация: 17.12.2011
Сообщений: 2,438
Записей в дневнике: 8
Сказал(а) спасибо: 21
Поблагодарили 49 раз(а) в 11 сообщениях
Репутация: 19701
|
Создание списка путем добавления элементов в конец списка. Общий случай:
Код:
Procedure Init(Var u : Ukazatel); Var x : Ukazatel; Digit : integer; {Значение информационной части элемента списка} Begin Writeln('Введите список '); u := Nil; {Список пуст} Writeln ('Введите элементы списка. Конец ввода 0'); Read (Digit); if Digit <> 0 then {Формируем и вставляем первый элемент списка} Begin New(x); x^.Next := Nil; x^.Data := Digit; u := x; Read (Digit); while Digit<>0 do Begin New(x^.Next); {Формируем и вставляем элемент в конец списка} x := x^.Next; x^.Next := Nil; x^.Data := Digit; Read(Digit); End; End; Writeln; End; Код:
Procedure Init(Var u : Ukazatel); Var x, y : Ukazatel; Digit : integer; Begin Writeln('Введите список '); u := Nil; Writeln ('Введите элементы списка. Конец ввода 0'); Read (Digit); while Digit<>0 do Begin New(y); y^.Next := Nil; y^.Data := Digit; if u=Nil then u := y else x^.Next := y; x := y; Read(Digit); End; Writeln; End; Код:
Procedure Del(Digit : integer; Var u : Ukazatel ); Var x, dx : UKAZATEL ; Begin x := u; while x<>Nil do if x^.Data=Digit then Begin if x=u then Begin u := u^.Next; Dispose(x); x := u; End else Begin dx^.Next := x^.Next; Dispose(x); x := dx^.Next; End; End else Begin dx := x; x := x^.Next; End; End; |
15.04.2013, 13:53 | #4 (permalink) |
Новичок
Регистрация: 14.04.2013
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
спс хоть на этом. Может кто нибудь мою переделать? Прост мне побыстрей надо
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|