Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2010, 17:41   #1
fawr
Пользователь
 
Регистрация: 19.10.2009
Сообщений: 25
По умолчанию

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

Код:
program bazaDannix;
uses
 crt;
type
 year=1990..2050;
 list=^data;
 data=record
       y:year;
       next:list;
       nomer:integer;
       model,cvet,fio:string;
      end;
 
procedure vvod(filename:string; var baza:list; var c:integer);
var
 fin:text;
 znach1:string;
 znach2:integer;
begin
 assign(fin,filename+'.txt');
 reset(fin);
 while not eof(fin)  do
 begin
  inc(c);
  readln(fin,znach1);
  baza^.model:=znach1;
  readln(fin,znach2);
  baza^.nomer:=znach2;
  readln(fin,znach1);
  baza^.cvet:=znach1;
  readln(fin,znach1);
  baza^.fio:=znach1;
  readln(fin,znach2);
  baza^.y:=znach2;
  baza:=baza^.next;
  readln(fin);
 end;
end;
 
procedure a(baza:list; c:integer);
var
 i:integer;
begin
 for i:=1 to c do
  if baza^.y < 2010 then
  begin
   writeln(baza^.model);
   writeln(baza^.nomer);
   writeln(baza^.cvet);
   writeln(baza^.fio);
   writeln(baza^.y);
   baza:=baza^.next;
  end
  else
   baza:=baza^.next;
 readln;
end;
 
procedure b(baza:list; c:integer);
var
 i:integer;
begin
 for i:=1 to c do
  if (baza^.model='BMW') and (baza^.cvet='red') then
  begin
   writeln(baza^.fio);
   baza:=baza^.next;
  end
  else
   baza:=baza^.next;
 readln;
end;
 
procedure v(baza:list; c,n:integer);
var
 i:integer;
begin
 for i:=1 to c do
  if baza^.nomer=n then
  begin
   writeln(baza^.model);
   writeln(baza^.nomer);
   writeln(baza^.cvet);
   writeln(baza^.fio);
   writeln(baza^.y);
   baza:=baza^.next;
  end
  else
   baza:=baza^.next;
 readln;
end;
 
var
 filename:string;
 baza:list;
 c,n:integer;
 key:char;
begin
 repeat
 clrscr;
 writeln('================================================================');
 writeln('menu');
 writeln('1) vvesti bazy dannix iz fayla');
 writeln('2) dannie o vsex mashinax ne prowedwix texosmotr v tekywem gody');
 writeln('3) dannie o vladelcax BMW 4ernogo cveta');
 writeln('4) po nomery mawini vivesti vsu informaciu');
 writeln('5) exit');
 writeln('================================================================');
 key:=readkey;
 case key of
  '1':begin
       writeln('vvedite im9 fayla');
       readln(filename);
       vvod(filename,baza,c);
      end;
  '2':a(baza,c);
  '3':b(baza,c);
  '4':begin
       writeln('vvedite nomer avtomobil9');
       readln(n);
       v(baza,c,n);
      end;
 end;
 until key='5';
 
end.
окиньте взглядом!
Вложения
Тип файла: rar Архив WinRAR.rar (6.1 Кб, 10 просмотров)

Последний раз редактировалось Stilet; 22.03.2010 в 08:15.
fawr вне форума Ответить с цитированием
Старый 22.03.2010, 08:38   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Смотри внимательно:
Код:
       new(baza);
       vvod(filename,baza,c);
А выше
Код:
procedure vvod(filename:string; abaza:list; var c:integer);
var
 fin:text;nbaza:list
 znach1:string;
 znach2:integer;
begin
 assign(fin,filename+'.txt');
 reset(fin);
 while not eof(fin)  do
 begin
  inc(c);
  readln(fin,znach1);
  abaza^.model:=znach1;  readln(fin,znach2);
  abaza^.nomer:=znach2;  readln(fin,znach1);
  abaza^.cvet:=znach1;   readln(fin,znach1);
  abaza^.fio:=znach1;    readln(fin,znach2);
  abaza^.y:=znach2;
  readln(fin);
  new(nbaza);
  abaza^.next:=nbaza;
  abaza:=nbaza
 end;
end;
Понял?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.03.2010, 12:39   #3
fawr
Пользователь
 
Регистрация: 19.10.2009
Сообщений: 25
По умолчанию

попробовал сделать так во всех процедурах... что-то нет изменений... может не так сделал...
вы имеете ввиду что проблема с указателем есть?
Вложения
Тип файла: rar Архив WinRAR (2).rar (1.0 Кб, 4 просмотров)
fawr вне форума Ответить с цитированием
Старый 22.03.2010, 13:13   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну ты я вижу совсем методички не понимаешь
Код:
writeln('3) dannie o vladelcax BMW 4ernogo cveta');
А тут написано:
Код:
if (abaza^.model='BMW') and (abaza^.cvet='red') then  begin
Ничего не смущает?

Да и потом. вывод не через цикл делай
Код:
procedure b(abaza:list; c:integer);
var
 nbaza:list;
 i:integer;
begin
 while abaza<>nil do begin
  if (abaza^.model='BMW') and (abaza^.cvet='black') then  begin
   writeln(abaza^.fio);
  end;
  abaza:=abaza^.next;
 end;
 readln;
end;

procedure v(abaza:list; c,n:integer);
var
 nbaza:list;
 i:integer;
begin
  while abaza<>nil do begin
    if abaza^.nomer=n then  begin
     writeln(abaza^.model);
     writeln(abaza^.nomer);
     writeln(abaza^.cvet);
     writeln(abaza^.fio);
     writeln(abaza^.y);
     abaza:=abaza^.next;
    end;
  end;
 readln;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Односвязный список masha17 Общие вопросы C/C++ 1 09.12.2009 12:20
Односвязный список crusarder Помощь студентам 1 23.10.2009 17:56
[C] Односвязный список Dieno Помощь студентам 2 19.10.2009 18:52
C++. Односвязный список. Уничтожить список Olya90 Помощь студентам 2 10.06.2009 18:52
Односвязный список. С++ Ozza Помощь студентам 1 06.02.2009 02:09