Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 14.04.2013, 17:52   #1 (permalink)
777Студент777
Новичок
 
Регистрация: 14.04.2013
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Exclamation Помогите дописать программу. Не сложно

Программа создает список студентов. записывает их в файл. может вывести на экран. короче она вся работает только нужно добавить функции добавить и удалить нужного студента из списка и все. Помогите пожалуйста.желательно кинуть сюда сообщение с готовым кодом. заранее спс вот собственно сам код.





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.
777Студент777 вне форума   Ответить с цитированием

Старый 14.04.2013, 17:52
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Попробуйте найти решение вашего вопроса по данным ссылкам

Помогите дописать эту программу
Помогите написать программу VBS

Старый 14.04.2013, 23:49   #2 (permalink)
777Студент777
Новичок
 
Регистрация: 14.04.2013
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Люди ну помогите пожалуйста очень надо
777Студент777 вне форума   Ответить с цитированием
Старый 15.04.2013, 00:31   #3 (permalink)
Léon
С# - learn or die
 
Аватар для Léon
 
Регистрация: 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;
P.s. Извини, переделать под твою прогу нет времени.
Léon вне форума   Ответить с цитированием
Старый 15.04.2013, 13:53   #4 (permalink)
777Студент777
Новичок
 
Регистрация: 14.04.2013
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

спс хоть на этом. Может кто нибудь мою переделать? Прост мне побыстрей надо
777Студент777 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 05:05.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.