Перейти к публикации
  • Сейчас на странице   Всего пользователей: 0   (0 пользователей, 0 гостей)

olo)LOLO

посколь

Рекомендованные сообщения

кто может помочь с небольшой программкой на паскале? возникает ошибка "error 100: disk read error"

что надо было сделать

 

Список пациентов старше Х лет с диагнозом Y. Значе¬ния Х и Y ввести с терминала

 

ну я сделал программу записи в файл, заполнил. затем взял похожую прогу и поменял под себя. ну как смог.

сама программа

 

program clin;
type
zap=record
   fam:string[20];
   pol:string[5];
   gor:string[20];
   diag:string[30];
   voz:array[1..99] of byte
end;
mas=array[1..20] of zap;
var
fp:file of zap;
x:zap;
zapros:string;
r:boolean;
dog:mas;
t,i:integer;
procedure prov (var pros:string;var h:boolean);
label met;
var
pr1,pr2:string;
i,n1,n2:integer;
p:boolean;
begin
pr1:='qwertyuiopasdfghjklzxcvbnm -';
pr2:='QWERTYUIOPASDFGHJKLZXCVBNM -';
h:=false;
met:
write ('Vvedite familiu: ');readln (pros);
i:=1; p:=true;
while (i<=length(pros)) and (p=true) do
      begin
      n1:= pos(pros[i],pr1);
      n2:= pos(pros[i],pr2);
      if (n1>0) then
         begin
         pros[i]:=pr2[n1];
         i:=i+1
         end
      else
      if (n2=0) then p:=false else i:=i+1;
      end;
if p=false then begin
writeln ('Oshibka vvoda. Povtorite vvod: ');
goto met;
end
else h:=true;
end;
{formirovanie massiva udovl. uslooviu}
procedure obrab (pros:string; var m1:mas; var k:integer);
var
i:integer;
begin
assign (fp,'klinika');
reset (fp);
k:=0;
while not EOF(fp) do
      begin
      read (fp,x);
      if pros=x.fam then begin
         k:=k+1;
         m1[k]:=x;
         end;
      end;
end;
procedure sort(var m1:mas; k:integer);
{podprogramma sortirovki}
var
i,j:integer;

begin
     for i:=1 to k-1 do
         for j:=i+1 to k do
             if m1[i].diag<m1[j].diag then begin
x:=m1[i];m1[i]:=m1[j];m1[j]:=x;
end;
end;
{sama figovina}
begin
  prov (zapros,r); {vizov proc prov zaprosa}
if r=true then
   begin
   obrab (zapros,dog,t); {vizov proc obrab zaprosa}
   if t=0 then writeln ('no tip')
   else
     sort(dog,t);
     for i:=1 to t do
     writeln (dog[i].diag:10,dog[i].gor:15);
     end;
   readln
end.

 

файл записей

 

 

помогите сделать. в понедельник сдавать. прошлый.

 

скайп huir1141

 

Поделиться сообщением


Ссылка на сообщение

могу сказать лишь то, что твой файл захерен

прога неправильно его читает

И что за массив чисел ты там хранишь в каждой записи?


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

:dunno: перезаписал файл - все одно

 

И что за массив чисел ты там хранишь в каждой записи?

да пес его знает. в свое время как то на отъебись паскаль здал. ща на заочке учусь и совсем хз как делать

Поделиться сообщением


Ссылка на сообщение

лол. Так если тебе не надо это массив, то нахер ты его таскаешь с собой

и я имею ввиду, что ты формируешь файл походу неправильно. Или возможно этот массив его и портит

 


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

voz:array[1..99] of byte

 

 


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

ааа. voz это по задумке возраст пациента. изменил на voz:byte и больше не ругается.

вот теперь мне надо из того, что намутил сделать что бы я вводил "x" и "y" и мне выводился список пациентов старше Х лет с диагнозом Y :fie:

как это хоть примерно сделать?

проверка для возраста, как я понимаю что то вроде

 

program prov;

var

er,voz:integer;

x:byte

t:boolean;

begin

write ('vvodim vozrast');

t:=false;

val (voz,er);

if (er>=x) and (voz<=99) then t:=true;

if t=false then witeln ('huy') else writeln ('vozrast: ', voz);

end.

 

 

 

Поделиться сообщением


Ссылка на сообщение

ну вон у тебя там есть процедура сортировки

прочитай всех пациентов из файла в массив, отсортируй, и потом в массиве находишь пациента с возрастом Х и начиная с него выводишь всех пациентов, у которых диагнозом является У


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

еще вопрос. в куске

while not eof(f) do begin
      inc(i);
      with a[i] do begin

ругает типо error 75: record or obgect variable expected

сам текст

 

program 123;
uses crt;
type
   clinic = record
      sur, add, diag,st: string;
      sex: char;
      age: byte;
      end;
var
   a: array[1..100] of byte;
   i,n,kol,x: byte;
   filename, y: string;
   f: text;
begin
   clrscr;
   write('введите имя файла: ');
   readln(filename);
   assign(f,filename);
   reset(f);
   while not eof(f) do begin
      inc(i);
      with a[i] do begin
readln(f,st);
delete(st,1,pos(':',st)+1);
sur:=st;
     readln(f,st);
     delete(st,1,pos(':',st)+1);
     sex:=st;
          readln(f,st);
          delete(st,1,pos(':',st)+1);
          val(st,age,o);  //o: integer;
               readln(f,st);
               delete(st,1,pos(':',st)+1);
               add:=st;
                    readln(f,st);
                    delete(st,1,pos(':',st)+1);
                    diag:=st;
      end;
   end;
   close(f);
   n:=i;
   writeln('введите X: ');
   readln(x);
   writeln('введите Y: ');
   readln(y);
   for i:=1 to n do
   with a[i] do
      if (age>x) and (diag=y) then
         writeln('фамилия: ',sur);
   readkey
end.

 

Поделиться сообщением


Ссылка на сообщение

"а" у тебя - массив байтов. А конструкция with используется с классами и структурами, чтобы соркатить запись.

Типа писать не

clinic.sur

clinic.sex

а просто

sur

sex

 

 

для массива байтов with смысла не имеет. Вот если бы это был массив структур, тогда да


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

судя по всему сделать

a: array[1..100] of clinic;

потому что байты тебе там нахер не нужны же


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

прошу прощения за полуофф

я не программист но немного знаю англиский

но разве тебе твой этот посколь не говорит в сообщении об ошибке что у тебя жосткий диск сломан?

Поделиться сообщением


Ссылка на сообщение

судя по всему сделать

a: array[1..100] of clinic;

потому что байты тебе там нахер не нужны же

вот сначала так и сделал. но он пишет structure too large  :fffuuu:

Поделиться сообщением


Ссылка на сообщение

прошу прощения за полуофф

я не программист но немного знаю англиский

но разве тебе твой этот посколь не говорит в сообщении об ошибке что у тебя жосткий диск сломан?

:}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}


Philip Glass – Glassworks: Closing

Roberto Cacciapaglia – Home

Danny Elfman – The Truth

Поделиться сообщением


Ссылка на сообщение

судя по всему сделать

a: array[1..100] of clinic;

потому что байты тебе там нахер не нужны же

вот сначала так и сделал. но он пишет structure too large  :fffuuu:

а, ты же юзаешь файлы.

а туда нельзя записывать структуры неопределенной длинны. А строки как раз имеют неопределенную длинну.

Так что string надо ограничить. Я уже точно не помню, но вроде что-то типа string[50] должно сделать строку константной длинны в 50 элементов.

Или массив чаров юзать тогда


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

а нельзя просто текстовый файл захуярить? обязательно надо такую ебалу городить?

и за использование goto надо четвертовать


javascript:void(0);

Поделиться сообщением


Ссылка на сообщение

про метки это кстати да. Там можно было спокойно обычный while сделать без проблем.

Но походу код не автора.


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

запустилось! только вывод не работает. пишу имя файла, Х и У и не выводит фамилии.

begin
   clrscr;
   write('введите имя файла: ');
   readln(filename);
   assign(f,filename);

тут так и должно быть или надо название своего файла вписывать?

Поделиться сообщением


Ссылка на сообщение

ну в этих строках вроде всё правильно. А сам вывод в файл где?


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

×
×
  • Создать...