IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> файлы записей (Объединено), начал решать
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


Пусть в файле фамилий ffam находятся фамилии студентов(одна запись - одна фамилия), в файле оценок fnote - в том же порядке оценки студентов( одна запись - массив оценок одного студента), в файле fchg - изменения к файлу оценок(структура записи:номер студента, совпадающий с номером фамилии в файле ffam, номер изменённой оценки, новая оценка). Записи упорядочены по номеру студента. Распечатайте список фамилий студентов, сдавших сессию на 4 и 5. Файлы ffam, fnote, fchg читаются один раз.
P. S. если Вам лень решать опишите хотя бы согласованное чтение файлов.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 180
Пол: Мужской
Реальное имя: Юра

Репутация: -  1  +


Цитата(AlexSt @ 17.05.2007 9:44) *

P. S. если Вам лень решать опишите хотя бы согласованное чтение файлов.

Открываешь файл со студентами, читаешь из него всё в массив записей, закрываешь файл.
Открываешь файл с оценками, читаешь из него всё в массив оценок, закрываешь файл.
Открываешь файл с изменениями, читаешь из него в массив изменившихся оценок (например, таким образом: arr[1,i]:=номер студента, arr[2,i]=новая оценка) все что в нём есть.

А потом работаешь с полученными массивами.

Сообщение отредактировано: samec -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Уточнение к ответу samec'а: третий файл читать в массив не надо, исправления в массиве оценок можно делать в процессе чтения файла.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


Всё таки не очень понятно как производить чтение из второго и третьего файла, пожалуйста опишите этот момент!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


Пусть в файле фамилий ffam находятся фамилии студентов(одна запись - одна фамилия), в файле оценок fnote - в том же порядке оценки студентов( одна запись - массив оценок одного студента), в файле fchg - изменения к файлу оценок(структура записи:номер студента, совпадающий с номером фамилии в файле ffam, номер изменённой оценки, новая оценка). Записи упорядочены по номеру студента. Распечатайте список фамилий студентов, сдавших сессию на 4 и 5. Файлы ffam, fnote, fchg читаются один раз.

program file_stipendiya_n23;
type fam=record
f:string[20]
end;
note=record
a:array[1..10] of byte
end;
chg=record
ns,no,new:byte
end;
var ffam:file of fam;
fnote:file of note;
fchg:file of chg;
p,f:string[20];
i,j:integer;
k,ns,no,new:byte;
fam1:fam;
note1:note;
chg1:chg;
a:array[1..10] of byte;
begin writeln('введтите путь к файлу, содержащему фамилии студентов');
readln(p);
assign(ffam,p);
writeln('введтите путь к файлу, содержащему оценки студентов');
readln(p);
assign(fnote,p);
writeln('введтите путь к файлу, содержащему изменения к файлу оценок');
readln(p);
assign(fchg,p);
reset(ffam); reset(fnote); reset(fchg);
i:=0;
while not eof(ffam) do
begin i:=i+1;
readln(f[i]);
while not eof(fnote) do
begin read(fnote,note1);
for i:=1 to 10 do{тут надо организовать цикл, но я не знаю сколько оценок, 10 – число с потолка}
readln(k)
if a[i]<4 then
begin b:=false
while not eof(fchg) do



begin readln(k);
end;
wacko.gif wacko.gif

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


файл fchg отсортирован по номерам студентов?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


Цитата
структура записи:номер студента, совпадающий с номером фамилии в файле ffam, номер изменённой оценки, новая оценка

вообщем там номера фамилий студентов которые что-то пересдавали. я думаю в том же порядке, только не все
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Тогда так: считали запись из файла изменений.
Посмотрели на номер студента.
Пока не дойдем до него, спокойно анализируем содержимое двух файлов: читаем фамилию и оценки.
Дошли до него - проанализировали с учетом изменений. Считали из файла изменений следующего...


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


а как прочесть что-то из файла записей номер студента, номер оценки из fchg и оценки из массива в fnote? в fnote я не знаю сколько оценок mega_chok.gif mega_chok.gif mega_chok.gif mega_chok.gif mega_chok.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






а как прочесть что-то из файла записей номер студента, номер оценки из fchg и оценки из массива в fnote? в fnote я не знаю сколько оценок
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Цитата
в fnote я не знаю сколько оценок

А надо?
While not eof(твой_файл) do
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Я так понял, что ты работаешь с типизированными файлами. А для них нужно точно знать формат записи. Ты описал общую структуру записи, но не сказал, какой тип имеют поля в ней. Смею предположить, что все числа описаны как целые.
Для работы со вторым файлом тебе нужен массив оценок - точнее, его тип. Делаешь в проге тип и файл этого типа, а потом читаешь. Допустим, всего оценок 10. Тогда можно делать примерно так:
const
NMarks=10;
type
tMarks=array[1..NMarks]of integer;
var
Marks:tMarks;
Fm:file of tMarks;
.....
Assign(Fm,'marksfilename');
ReSet(Fm);
while not EoF(Fm) do begin
Read(Fm,Marks);
......
end;

Разберем работу с третьим файлом.. В своей программе делаешь тип для такой записи (номер студента, номер оценки, сама оценка) и описываешь файл таких записей. Потом читаешь из этого файла..
type
tCorrection=record
Student,Mark,Value:integer
end;
var
Coorrection:tCorrection;
Fc:file of tCorrection;
.....
Assign(Fc,'filename');
ReSet(Fc);
while not EoF(Fc) do begin
Read(F,Correction);
with Correction do begin
......
end
end

Эти два фрагмента демонстрируют общие приципы работы с такими файлами по отдельности. Тебе нужно будет вести чтение из всех трех файлов параллельно: читаешь фамилию, потом читаешь оценки, потом возможно читаешь исправления (возможно, несколько раз) и результат после обработки выводишь на печать - а потом читаешь следующую фамилию..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


 ! 
AlexSt, предупреждаю тебя устно пока: не дублируй темы!!
Я объединил



--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


yes2.gif yes2.gif Лэп, извини так получилось. Вообщем я написал задачу, но она в конце не работает: good.gif good.gif good.gif
program file_stipendiya_n23;
uses crt;
type fam=record
f:string[20]
end;
note=record
a:array[1..10] of byte
end;
chg=record
ns,no,new:byte
end;
var ffam:file of fam;
fnote:file of note;
fchg:file of chg;
p,f:string[20];
i,j,exam,kolstud:integer;
mark:byte;
b:boolean;
fam1:fam;
note1:note;
chg1:chg;
a:array[1..10] of byte;
begin clrscr;
writeln('введтите путь к файлу, содержащему фамилии студентов');
readln(p);
assign(ffam,p);
rewrite(ffam);
writeln('введите фамилии студентов, окончание ввода - "0"');
kolstud:=0;
repeat readln(f);
if f<>'0' then begin write(ffam,fam(f));
kolstud:=kolstud+1
end;
until f='0'; close(ffam);
reset(ffam);
writeln('введтите путь к файлу, содержащему оценки студентов');
readln(p);
assign(fnote,p);
writeln('введите количество экзаменов');
readln(exam);
writeln('введите оценки каждого студента');
rewrite(fnote);
for i:=1 to kolstud do
begin writeln('оценки студента № ',i,':');
for j:=1 to exam do
readln(a[j]);
write(fnote,note(a));
end; close(fnote);
reset(fnote);
writeln('введтите путь к файлу, содержащему изменения к файлу оценок');
readln(p);
assign(fchg,p);
rewrite(fchg);
with chg1 do
repeat writeln('введите номер студента, номер изменённой оценки и новую оценку, окончание ввода - "0"');
readln(ns);
readln(no);
readln(new);
if (ns<>0)and(no<>0)and(new<>0) then write(fchg,chg1);
until (ns=0)and(no=0)and(new=0); close(fchg);
reset(fchg);
b:=true; j:=0;
writeln('студенты, получающие стипендию:');
while not eof(ffam) do {считывание данных}
begin j:=j+1;
read(ffam,fam(f));
read(fnote,note(a));
for i:=1 to exam do
if a[i]<4 then with chg1 do
begin b:=false;
while eof(fchg) do
begin read(fchg,chg1);
if (ns=j)and(no=i)and(new>3) then b:=true
end;
close(fchg);
reset(fchg);
end;
if b=true then writeln(f);
end;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


Ну задачка в прынцыпе решена осталось найти ошибочку! nea.gif
(см. выше!) [u]
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


Ну гляньте решение! В чём ошибка? give_rose.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


прикрепи файлы, на которых ты тестируешь.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


как это понимать? куда их прикрепить? каким способом?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


В сообщение.
У тебя же есть файлы
 var     ffam:file of fam;
fnote:file of note;
fchg:file of chg;

ты их уже создал. ввел какую-то информацию, правильно?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


give_rose.gif вот они:

Сообщение отредактировано: AlexSt -


Прикрепленные файлы
Прикрепленный файл  _____.zip ( 284 байт ) Кол-во скачиваний: 201
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 22:46
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name