olo)LOLO #1 Опубликовано: 1 апреля 2012 кто может помочь с небольшой программкой на паскале? возникает ошибка "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. файл записей http://rghost.ru/37358861 помогите сделать. в понедельник сдавать. прошлый. скайп huir1141 Цитата Поделиться сообщением Ссылка на сообщение
Kant #2 1 апреля 2012 могу сказать лишь то, что твой файл захерен прога неправильно его читает И что за массив чисел ты там хранишь в каждой записи? Цитата Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
olo)LOLO #3 1 апреля 2012 перезаписал файл - все одно И что за массив чисел ты там хранишь в каждой записи? да пес его знает. в свое время как то на отъебись паскаль здал. ща на заочке учусь и совсем хз как делать Цитата Поделиться сообщением Ссылка на сообщение
Kant #4 1 апреля 2012 лол. Так если тебе не надо это массив, то нахер ты его таскаешь с собой и я имею ввиду, что ты формируешь файл походу неправильно. Или возможно этот массив его и портит Цитата Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
olo)LOLO #5 1 апреля 2012 а ты про какой массив? dog? Цитата Поделиться сообщением Ссылка на сообщение
Kant #6 1 апреля 2012 voz:array[1..99] of byte Цитата Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
olo)LOLO #7 1 апреля 2012 ааа. voz это по задумке возраст пациента. изменил на voz:byte и больше не ругается. вот теперь мне надо из того, что намутил сделать что бы я вводил "x" и "y" и мне выводился список пациентов старше Х лет с диагнозом Y как это хоть примерно сделать? проверка для возраста, как я понимаю что то вроде 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. Цитата Поделиться сообщением Ссылка на сообщение
Kant #8 1 апреля 2012 ну вон у тебя там есть процедура сортировки прочитай всех пациентов из файла в массив, отсортируй, и потом в массиве находишь пациента с возрастом Х и начиная с него выводишь всех пациентов, у которых диагнозом является У Цитата Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
olo)LOLO #9 2 апреля 2012 еще вопрос. в куске 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. Цитата Поделиться сообщением Ссылка на сообщение
Kant #10 2 апреля 2012 "а" у тебя - массив байтов. А конструкция with используется с классами и структурами, чтобы соркатить запись. Типа писать не clinic.sur clinic.sex а просто sur sex для массива байтов with смысла не имеет. Вот если бы это был массив структур, тогда да Цитата Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
Kant #12 2 апреля 2012 судя по всему сделать a: array[1..100] of clinic; потому что байты тебе там нахер не нужны же Цитата Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
skYmarine #13 2 апреля 2012 прошу прощения за полуофф я не программист но немного знаю англиский но разве тебе твой этот посколь не говорит в сообщении об ошибке что у тебя жосткий диск сломан? Цитата Поделиться сообщением Ссылка на сообщение
olo)LOLO #14 2 апреля 2012 судя по всему сделать a: array[1..100] of clinic; потому что байты тебе там нахер не нужны же вот сначала так и сделал. но он пишет structure too large Цитата Поделиться сообщением Ссылка на сообщение
LethalDoseInjecter #15 2 апреля 2012 прошу прощения за полуофф я не программист но немного знаю англиский но разве тебе твой этот посколь не говорит в сообщении об ошибке что у тебя жосткий диск сломан? :}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} Цитата Philip Glass – Glassworks: ClosingRoberto Cacciapaglia – HomeDanny Elfman – The Truth Поделиться сообщением Ссылка на сообщение
Kant #16 2 апреля 2012 судя по всему сделать a: array[1..100] of clinic; потому что байты тебе там нахер не нужны же вот сначала так и сделал. но он пишет structure too large а, ты же юзаешь файлы. а туда нельзя записывать структуры неопределенной длинны. А строки как раз имеют неопределенную длинну. Так что string надо ограничить. Я уже точно не помню, но вроде что-то типа string[50] должно сделать строку константной длинны в 50 элементов. Или массив чаров юзать тогда Цитата Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
Ramil #17 2 апреля 2012 а нельзя просто текстовый файл захуярить? обязательно надо такую ебалу городить? и за использование goto надо четвертовать Цитата javascript:void(0); Поделиться сообщением Ссылка на сообщение
Kant #18 2 апреля 2012 про метки это кстати да. Там можно было спокойно обычный while сделать без проблем. Но походу код не автора. Цитата Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
olo)LOLO #19 2 апреля 2012 запустилось! только вывод не работает. пишу имя файла, Х и У и не выводит фамилии. begin clrscr; write('введите имя файла: '); readln(filename); assign(f,filename); тут так и должно быть или надо название своего файла вписывать? Цитата Поделиться сообщением Ссылка на сообщение
Kant #20 2 апреля 2012 ну в этих строках вроде всё правильно. А сам вывод в файл где? Цитата Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение