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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2008, 20:27   #1
bygoga
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 45
По умолчанию Ввод из текстового файла

Дан текстовый файл, в котором записана группа из 28 человек, у каждого выставлено по 7 оценок, от 2 до 5. Нужно сделать программу, которая будет выводить данные о людях, имеющих хотя бы одну пятерку. Как это сделать?
bygoga вне форума Ответить с цитированием
Старый 22.11.2008, 22:06   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Чтобы это сделать, надо знать структуру файла, как и что там записно, потому что нужно будет считывать строки из файла и обрабатывать их.
Самое простое если все в 28 строках вида
фамилия 3 4 5 4 5 5 4
Читаешь первое слово до пробела, запоминаешь, удаляешь вместе с пробелом. Читаешь остаток строки и ищещь символ '5'. Если находишь, выводишь запомненное слово, выходишь из цикла.
Следующая строка.
puporev вне форума Ответить с цитированием
Старый 23.11.2008, 10:29   #3
bygoga
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 45
По умолчанию

А можно как это будет в программе выглядить? А то я не очень понял.
Текстовый файл во вложении.
Вложения
Тип файла: txt spisok.txt (1.3 Кб, 152 просмотров)
bygoga вне форума Ответить с цитированием
Старый 23.11.2008, 10:37   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Эту задачу можно решить по разному. Можно просто читать строки, брать из них информацию и выводить на экран. Можно создать массив записей и занести всю информацию туда, потом можно делать с ней все что захочешь. На какую тему эта задача, т.е. из какого она раздела.
puporev вне форума Ответить с цитированием
Старый 23.11.2008, 10:53   #5
bygoga
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 45
По умолчанию

Информацию о каждом студенте оформить в программе в виде записи. Совокупность записей объединить в массив.
Там первая часть задания была просто выводить всю информацию из этого текстового файла на экран, это я сделал, если надо могу выложить.
bygoga вне форума Ответить с цитированием
Старый 23.11.2008, 10:57   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Почему нельзя сразу написать все задание, вечно приходится клещами вытаскивать, будто мне это надо. Просто выводить и я сделал, сравни на всякий случай. Сейчас с записями посмотрю.
Код:
uses crt;
var f:text;
    s,s1,s2:string;
    i,n,k:integer;
begin
clrscr;
assign(f,'spisok.txt');
reset(f);
writeln('Имеют хотя бы 1 пятерку:');
writeln;
n:=0;
while not eof(f)do
   begin
     readln(f,s);  //читаем ФИО
     readln(f,s1);  //читаем остальные данные
     readln(f,s2);  //читаем оценки
     k:=0;
     for i:=1 to length(s2) do
     if s2[i]='5' then  //если в строке есть 5, то
        begin
          k:=1; //фиксируем что есть 5
          n:=1;  //фиксируем что есть такой студент
          break;  //заканчиваем поиск в строке
        end;
     if k=1 then  //если есть 5, то
        begin
          writeln(s); //выводим фамилию
          writeln(s1);  //выводим другие данные
        end;
   end;
if n=0 then write('Таких студентов нет!'); //если нет 5 ни в одной строке, выводим сообщение
readln
end.
puporev вне форума Ответить с цитированием
Старый 23.11.2008, 11:20   #7
bygoga
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 45
По умолчанию

С записями я сделал вот так. Это просто выводит содержание текстового файла на экран.
Код:
program lab9;
uses crt;
const k=28;
type student = record
       fio: string[17];
       year: integer;
       gp: integer;
       kyrs: 1..5;
       gr: string[10];
       rinf: byte;
       rmat: byte;
       rphis: byte;
       rchem: byte;
       ruya: byte;
       rulit: byte;
       rbio: byte;
     end;
var ma: array [1..k] of student;
    tmp: student;
    i,j: byte;
    tf: text;
begin
   clrscr;
   assign (tf,'d:\spisok.txt');
   reset (tf);
   for i:=1 to k do
   begin
      readln (tf,tmp.fio);
      readln (tf,tmp.year,tmp.gp,tmp.kyrs,tmp.gr);
      readln (tf,tmp.rinf,tmp.rmat,tmp.rphis,tmp.rchem,tmp.ruya,tmp.rulit,tmp.rbio);
      ma[i]:=tmp;
      writeln (tmp.fio:17,' ',tmp.year:4,' ',tmp.gp:4,' ',tmp.kyrs:1,' ',tmp.gr:5,' ',tmp.rinf:1,' ',
               tmp.rmat:1,' ',tmp.rphis:1,' ',tmp.rchem:1,' ',tmp.ruya:1,' ',tmp.rulit:1,' ',tmp.rbio:1);

   end;
   close(tf);
   readkey
end.
bygoga вне форума Ответить с цитированием
Старый 23.11.2008, 11:22   #8
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

А что еще-то надо? Или это не работает. По-моему не должно работать, так читаешь строки, а пытаешься записать в числа. Или я неправ?
puporev вне форума Ответить с цитированием
Старый 23.11.2008, 11:28   #9
bygoga
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 45
По умолчанию

Я сделал, чтобы только содержание файла показывало, а мне надо еще чтобы выводило людей у которых есть хотя бы одна пятерка, я не могу так сделать.
bygoga вне форума Ответить с цитированием
Старый 23.11.2008, 11:29   #10
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Понял, сейчас поправим.
P.S. Да у тебя совсем неправильно. Ничего в массив не записано, только вывод на экран.

Последний раз редактировалось puporev; 23.11.2008 в 11:38.
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