Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2008, 12:08   #1
4ERRY
Пользователь
 
Регистрация: 06.12.2008
Сообщений: 10
По умолчанию программа продуктов модульной структуры

Здраствуйте. помогите пожалуста решить задачу для курсового. я все остальное сделала,
и теорию написала, и задачи решила. осталось 2. но одну я почти решила, а эту нет.
есть какие-то мысли, но не знаю верные они или нет.

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

var
grup: text;
a,b,c,d,e,f,h,i,j:string;
k: integer;

begin
assign (grup, 'c:\PASCAL\GRUPPA);
Reset (grup);

readln (grup, a);
readln (grup, b);
readln (grup, c);
readln (grup, d);
readln (grup, e);
readln (grup, f);
readln (grup, g);
readln (grup, h);
readln (grup, i);
readln (grup, j);

close(grup);

writeln(a);
writeln(b);
writeln(c);
writeln(d);
writeln(e);
writeln(f);
writeln(g);
writeln(h);
writeln(i);
writeln(j);

а дальше я не знаю как. я думала может как то сделать с помощью case... ну например

case k of

женский 5 5 5 5 5 5 5 5 5 5 : writeln ('');

но помоему это не верно... там же надо сравнивать тогда всю строку.... а там же и имена и фамилии..

или как-то ввести данные в 2мерный массив, а потом уже сравнивать ячейки с полом и оценками...

помогите пожалуста ее решить. я правда не знаю....
если нужно заплатить я заплачу... только скажите как и сколько.
4ERRY вне форума Ответить с цитированием
Старый 06.12.2008, 14:12   #2
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

Здравствуйте, там смотрите четко сказано с помощью записей, в смысле написано записи со следующей структурой - если вы знаете структурированный тип ЗАПИСЬ ( RECORD ), все элементы которого, называемые полями записи, логически связаны между собой, то все проще и лучше и наверно единственно адекватно сделать через записи, точнее через массив записей, так как каждая запись представляет собой группу студентов - просто столько переменных строк не нужно вводить. Ну или если хотите через строки, то это по логике почти то же самое - просто введите массив строк и читайте из файла. Потом проверяете на принадлежность пола и оценки - и все =) на самом деле это емкая задача, я Вас понимаю =)
capta1n вне форума Ответить с цитированием
Старый 06.12.2008, 14:22   #3
Викдон
Форумчанин
 
Аватар для Викдон
 
Регистрация: 11.11.2008
Сообщений: 161
По умолчанию

каждая запись представляет собой группу студентов ? может там имелось ввиду каждая запись состоит из одного студента, а в файл заносятсе все студенты?
Викдон вне форума Ответить с цитированием
Старый 06.12.2008, 14:34   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Начать так:
type Tstud=record
fio:string[20]; //фамилия, инициалы
god:word;
pol:string[3]; //муж, жен
ocn:array[1..10] of byte; //оценки, хотя 10 за сессию круто
end;
var gr:array[1..30] of Tstud; //массив записей о студентах
f:file of Tstud; //файл записей данных о студентах
Потом заполняете массив данными, записываете его в файл, открываете файл для чтения и выбираете из него все, что Вам нужно.
puporev вне форума Ответить с цитированием
Старый 06.12.2008, 14:45   #5
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

На самом деле там будет запись записей =) группа представляет собой запись, состоящую из студентов, которые тоже являются записями =)
capta1n вне форума Ответить с цитированием
Старый 06.12.2008, 14:51   #6
Викдон
Форумчанин
 
Аватар для Викдон
 
Регистрация: 11.11.2008
Сообщений: 161
По умолчанию

скорее всего там опечатка! " в файле gruppa.dat хранятся сведения о студентах, некоторые группы в виде записей " а " в файле gruppa.dat хранятся сведения о студентах, некоторой группы в виде записей "

Последний раз редактировалось Викдон; 06.12.2008 в 14:54.
Викдон вне форума Ответить с цитированием
Старый 06.12.2008, 14:51   #7
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Интересно какие поля, кроме поля записи данных о студентах, будет иметь первая запись? В условии ничего не сказано, просто девушка в терминологии запуталась.
puporev вне форума Ответить с цитированием
Старый 06.12.2008, 15:32   #8
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вот накидал программку, немного тестировал, работает.
Код:
uses crt;
type TStud=record  //тип запись
           fio:string[15]; //фамилия инициалы
           god:Word;   //год рождения
           pol:string[3];  //пол
           ocn:array[1..10]of byte; //масив оценок
           end;
var sp:array[1..50] of Tstud; //массив записей
    f:file of Tstud;  //типизированный файл для хранения данных, типа базы
    g:text;  //текстовый файл для вывода ланных об умных девочках
    n,i,j,p,k:integer;
begin
clrscr;
assign(f,'gruppa.dat'); //создаем типизированный файл
rewrite(f);
write('Kolichestvo studentov n=');//определяем количество студентов
readln(n);
for i:=1 to n do  //заносим данные в массив
  begin
    writeln('Студент ',i);
    write('Фамилия И.О.: ');readln(sp[i].fio);
    write('Год рождения: ');readln(sp[i].god);
    write('Пол: ');readln(sp[i].pol);
    writeln('Введите 10 оценок:');
    for j:=1 to 10 do
      repeat
        write('    оценка ',j,'=');
        readln(sp[i].ocn[j]);
      until sp[i].ocn[j] in [2..5];
    write(f,sp[i]); //записываем данные в типизированный файл
   end;
reset(f); //открываем его для чтения
clrscr; //очищаем экран
i:=0;
while not eof(f) do  //читаем файл
  begin
    i:=i+1;
    read(f,sp[i]); //считываем по одной записи в массив
    write(sp[i].fio,'  ',sp[i].god,' Оценки '); //выводим информацию на экран
    for j:=1 to 10 do write(sp[i].ocn[j],' ');
    writeln;
  end;
close(f); //закрываем файл
assign(g,'devushki.txt');  //создаем текстовый файл
rewrite(g); //для записи
reset(f); //открываем типизированный для чтения
n:=0;
while not eof(f) do
   begin
     n:=n+1;
     read(f,sp[n]); //считываем записи из файла
     if sp[n].pol='zen' then //если пол женский
        begin
          k:=0;
          for j:=1 to 10 do  //считаем пятерки
          if sp[n].ocn[j]=5 then k:=k+1;
          if k=10 then writeln(g,sp[n].fio); //если их 10, записываем в текстовый файл
          p:=1; //фиксируем, что есть такие умненькие
        end;
     end;
if p=0 then write(g,'Таких студенток нет!'); //а если нет, то с радостью сообщаем об этом!
writeln('Данные в файл Devushki zapisany!');
close(f);
close(g);
readln
end.
puporev вне форума Ответить с цитированием
Старый 06.12.2008, 15:55   #9
4ERRY
Пользователь
 
Регистрация: 06.12.2008
Сообщений: 10
По умолчанию

спасибо всем большое! puporev, а Вам особенное!
если честно то я не особо хорошо знаю Паскаль. у меня остальные задачи простые.. по сравнению с этой. в этой мне много что непонятно... но ничего посижу разберусь.
как мне с Вами расплатиться?
4ERRY вне форума Ответить с цитированием
Старый 06.12.2008, 15:58   #10
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Это раздел бесплатной помощи. Будут вопросы, задавайте, не стесняйтесь.
puporev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Структуры в С++ bloo[d] Помощь студентам 1 30.01.2008 22:27
[С++]Структуры...HELP!!! Настенька Помощь студентам 6 25.12.2007 21:11