1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code]. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
прога на работу с файлами, не могу найти ошибку во 2 проге
program sss; const n=10; type birthday=record name:string[10]; year:1900..2005; month:1..12; day:1..31; end; var man:birthday; filename:string[10]; i:byte; f:file of birthday; begin writeln('введите имя файла '); readln(filename); assign(f, filename); rewrite(f); writeln(' ',n,'введите дату рождения (день, мес, год'); with man do begin for i:=1 to n do begin write('имя:'); readln(name); write('день:'); readln(day); write('мес:'); readln(month); write('год:'); readln(year); write(f, man) end; end; writeln('сведения сохранились в birthday.dat'); close(f); end.
и вторая:
program super_2; const n=6; Type birthday=record name:string[10]; year:1900..2005; month:1..12; day:1..31; end; procedure sort( var a:friends; m:byte); var i, j:byte; temp:birthday; begin for i:=1 to m-1 do for j:=1 to m-i do if a[j].name>a[j+1].name then begin temp:=a[j]; a[j]:=a[j+1]; a[j+1]:=temp; end; end; function closest_birthday( var a:friends; m:byte; man:birthday):byte; var i, j:byte; min, nmin:byte; begin nmin:=1; min:=a[1].month; for i:=1 to m do with a[i] do begin if (month>=man.month) and (month<=min) then if (month<min) or (month=min) and (day<a[nmin].day) then begin min:=month; nmin:=i; end; end; closest_birthday:=nmin; end; var w:friends; fname1, fname2:string[15]; strNN:string[2]; i, count:byte; f1: file of birthday; f2:text; man1, man2:birthday; begin writeln('введите имя файла'); readln(fname1); assign(f1, fname1); reset(f1); writeln('введите дату'); write('день '); readln(man1.day); write('мес '); readln(man1.month); write('год: '); readln(man1.year); count:=0; while not eof(f1) do begin read(f1, man2); if man2.month=man1.month then begin count:=count+1; w[count]:=man2; end; end; close(f1); if count>1 then sort(w,count); str(man1.month,strNN); if man1.month<10 then strNN:='0'+strNN; fname2:='Birth_'+strNN+'txt'; assign(f2,fname2); rewrite(f2); for i:=1 to count do with w[i] do begin write(f2,name,' '); write(f2,day,'.'); write(f2,month,' '); writeln(f2,year); end; close(f2); reset(f1); count:=0; while not eof(f1) do begin count:=count+1; read(f1, w[count]); if (w[count].month<man1.month) then w[count].month:=w[count].month+12; if (w[count].month=man1.month) and (w[count].day<man1.day) then w[count].month:=w[count].month+12; end; count:=closest_birthday(w,count,man1); if (w[count].month>12) then w[count].month:=w[count].month-12; writeln(w[count].name,'ближайшее день рождение в', w[count].day, '/', w[count].month); close(f1); end.
(тут типа первая прога создает файл, а вторая его коректирует, но во второй он выдаёт ошибку! помогите мне её найти pleas)
Сообщение отредактировано: volvo - 6.11.2005 16:24