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

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

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

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


Новичок
*

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

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


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


Бывалый
***

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

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


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

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

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

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

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


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

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

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


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


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


Новичок
*

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

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


Всё таки не очень понятно как производить чтение из второго и третьего файла, пожалуйста опишите этот момент!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
AlexSt
сообщение 20.05.2007 18:28
Сообщение #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 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 20.05.2007 18:36
Сообщение #6


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

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

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


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


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


Новичок
*

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

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


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

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


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

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

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


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


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


Новичок
*

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

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


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


Гость






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


Гуру
*****

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

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


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

А надо?
While not eof(твой_файл) do
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 22.05.2007 11:38
Сообщение #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 
 К началу страницы 
+ Ответить 
Lapp
сообщение 22.05.2007 12:27
Сообщение #13


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

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

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


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



--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
AlexSt
сообщение 24.05.2007 17:34
Сообщение #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 
 К началу страницы 
+ Ответить 
AlexSt
сообщение 24.05.2007 20:57
Сообщение #15


Новичок
*

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

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


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


Новичок
*

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

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


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


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

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

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


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


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


Новичок
*

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

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


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


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

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

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


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

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


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


Новичок
*

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

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


give_rose.gif вот они:

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


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

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

 

- Текстовая версия 29.07.2025 7:43
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"