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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2008, 12:25   #11
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вот так работает. Только переменные у меня свои, переделаешь. Потом, в файле нет названий предметов, поэтому в массив записей их и не надо заносить, только мешают, а если нужны, то они должны быть в файле и программу надо немного менять взависимости от того, как они записаны в файл.
Код:
uses crt;
const n=28;
      m=7;
type Tstud=record
           fio:string[20];
           roz:word;
           pos:word;
           krs:byte;
           grp:string[5];
           ocn:array[1..m] of byte;
           end;
var f:text;
    sp:array[1..n] of Tstud;
    s,s1,s2:string;
    i,p,k,t,c,j,l:integer;
begin
clrscr;
assign(f,'spisok.txt');
reset(f);
p:=1;
while not eof(f)do
   begin
     readln(f,sp[p].fio); {читаем ФИО}
     readln(f,s1);{читаем вторую строку}
     val(copy(s1,1,pos(' ',s1)-1),t,c); {преобразуем первое слово в число}
     sp[p].roz:=t;    {запоминаем год рождения}
     delete(s1,1,pos(' ',s1));   {удаляем это слово}
     val(copy(s1,1,pos(' ',s1)-1),t,c); {преобразуем второе слово в число}
     sp[p].pos:=t;    {запоминаем год поступления}
     delete(s1,1,pos(' ',s1));   {удаляем это слово}
     val(copy(s1,1,pos(' ',s1)-1),t,c);{преобразуем третье слово в число}
     sp[p].krs:=t;  {запоминаем курс}
     delete(s1,1,pos(' ',s1)); {удаляем это слово}
     sp[p].grp:=s1;      {последнее слово-группа}
     readln(f,s2);
     j:=0;
     for i:=1 to length(s2) do     {в третьей строке читаем оценки}
     if s2[i] in ['2'..'5'] then
        begin
         j:=j+1;
         val(s2[i],t,c);
         sp[p].ocn[j]:=t;
        end;
     p:=p+1; {следующий студент}
  end;
writeln('Имеют хотя бы 1 пятерку:');
k:=0;
for i:=1 to n do
for j:=1 to m do
if sp[i].ocn[j]=5 then
  begin
   write(sp[i].fio,' ',sp[i].roz,' ',sp[i].pos,' ',sp[i].grp,' ');
   for l:=1 to m do write(sp[i].ocn[l],' ');
   writeln;
   k:=1;
   break;
  end;
if k=0 then write('Таких студентов нет!');
readln
end.
puporev вне форума Ответить с цитированием
Старый 23.11.2008, 12:45   #12
bygoga
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 45
По умолчанию

Спасибо!
А можно чем то заменить вот это
Код:
 val(copy(s1,1,pos(' ',s1)-1),t,c); 
     sp[p].roz:=t;    
     delete(s1,1,pos(' ',s1));   
     val(copy(s1,1,pos(' ',s1)-1),t,c); 
     sp[p].pos:=t;    
     delete(s1,1,pos(' ',s1));   
     val(copy(s1,1,pos(' ',s1)-1),t,c);
     sp[p].krs:=t;  
     delete(s1,1,pos(' ',s1)); 
     sp[p].grp:=s1;
и вот это
Код:
length(s2)
мы просто ничего такого не учили...и я сомневаюсь, что препод поверит, что я сам додумался до этого.
bygoga вне форума Ответить с цитированием
Старый 23.11.2008, 13:04   #13
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вы не проходили строки? И сразу проходите записи с использаванием полей строкового типа? Этого не может быть. Если это так, то я пас.
puporev вне форума Ответить с цитированием
Старый 23.11.2008, 13:33   #14
bygoga
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 45
По умолчанию

Да как-то криво мы это дело учим...нам на прошлой паре дали записи..а отетих val не было.
Я ж поэтому и не смог сделать вторую часть задания (про пятерки), я что не сделаю оно нифига не работает, а вашим способом у меня врядли примут, сильно много там того, что мы не учили.
bygoga вне форума Ответить с цитированием
Старый 23.11.2008, 13:37   #15
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Может не надо из текстового файла перегонять в запись, а на основании этого файла создать запись, т.е. ввести все данные в массив записей вручную, тогда не надо будет парсить строки. И по-моему пора переходить либо в аську, либо в личные сообщения, а то наш диалог уже не укладывается в правила форума.
puporev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа печати текстового файла Maximauzer Паскаль, Turbo Pascal, PascalABC.NET 4 23.11.2008 02:00
Задача на анализ текстового файла Latedelivery Паскаль, Turbo Pascal, PascalABC.NET 4 31.10.2008 10:55
Delphi Редактирование текстового файла Starscream Общие вопросы Delphi 11 18.02.2008 17:15
Открытие текстового файла Victor Microsoft Office Excel 2 16.01.2008 03:42