Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 01.10.2012, 03:14   #1
thelasthero2011
Новичок
Джуниор
 
Регистрация: 30.09.2012
Сообщений: 3
Вопрос Программа считывает заданый столбик в файле.

Всем привет!
Мне уже за 20, а из языков в школе был только Турбо Паскаль. Помогите допилить программу которая берет файл (розыгрыш лотереи), считывает скажем 5-й столбик и в другой файл записывает количество подряд идущих четных и нечетных чисел.

Файл с лотереей выглядит так:
Код:
 1 01.06.2004 А 1 6 5 5 4 28 0
 2 02.06.2004 Б 2 0 3 9 10 0 30
 3 03.06.2004 А 4 1 5 6 15 0 37
 4 04.06.2004 А 4 6 6 9 7 10 0
 5 05.06.2004 А 1 7 0 0 3 14 0
 6 06.06.2004 А 3 1 9 7 0 0 21
 7 07.06.2004 Б 2 8 8 7 2 10 0
 8 08.06.2004 А 3 8 8 3 5 7 0
 9 09.06.2004 А 1 5 6 3 11 0 72
 10 10.06.2004 Б 4 2 3 5 27 0 50
или вот так:
Код:
 Номер;Дата;Лототрон;Набор Шаров;Шар 1;Шар 2;Шар 3;Призеры (точный);Призеры (произвольный 3);Призеры (произвольный 6);
 1;01.06.2004;А;1;6;5;5;4;28;0
 2;02.06.2004;Б;2;0;3;9;10;0;30
 3;03.06.2004;А;4;1;5;6;15;0;37
 4;04.06.2004;А;4;6;6;9;7;10;0
 5;05.06.2004;А;1;7;0;0;3;14;0
 6;06.06.2004;А;3;1;9;7;0;0;21
 7;07.06.2004;Б;2;8;8;7;2;10;0
 8;08.06.2004;А;3;8;8;3;5;7;0
 9;09.06.2004;А;1;5;6;3;11;0;72
 10;10.06.2004;Б;4;2;3;5;27;0;50
Собственно программа здесь. Но компилятор выдает ошибку здесь read(rfile,a[riad,st]);- что-то не то с типом.

Код:
uses crt;
 
const n=3041;
      st=5;
type mas = array [1..n,1..10] of integer;

var riad,even,odd: integer;
    a:             mas;
    rfile:         file of integer;
    wrfile:        file of char;

begin 
even:=0;odd:=0;
assign (rfile, 'c:\loto.txt');
reset(rfile);
 
for riad:=1 to n do
 
  begin
 
  read(rfile,a[riad,st]);
 
  end;
 
close(rfile);
assign (wrfile, 'c:\res.txt');
 
for riad:=1 to n do
 
  begin
 
  if a[riad,st] mod 2 = 0 then inc(even) else
  if even <> 0 then 
	begin
	writeln (wrfile,'even ',even);
	even:=0;
	end;
 
  if a[riad,st] mod 2 <> 0 then inc(odd) else
  if odd  <> 0 then
	begin
	writeln (wrfile,'odd  ',odd)
	odd:=0;
	end;
 
  end;
 
if a[n,st] mod 2 = 0 then writeln (wrfile,'even ',even) else
writeln (wrfile,'odd  ',odd);
 
close(wrfile);
 
end.



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 01.10.2012 в 08:19.
thelasthero2011 вне форума Ответить с цитированием
Старый 01.10.2012, 06:47   #2
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от thelasthero2011 Посмотреть сообщение
компилятор выдает ошибку здесь read(rfile,a[riad,st]);- что-то не то с типом.
Ты что-то путаешь. Компилятор должен выдавать ошибку не здесь, а в другом месте:
Код:
writeln (wrfile,'even ',even);
Тебе нужно разобраться с тем, какие у тебя файлы - бинарные или текстовые? Из твоего описания следует, что они все же текстовые (оба). Но тогда ты должен их описать так:
Цитата:
rfile,wfile: text;
И учти, что "file of char" и "text" - это совсем не одно и то же!
После этого (и еще небольшого исправления) у тебя компиляция пройдет и начнется отладка. С чтением файла, полагаю, тебе придется повозиться.. Задавай вопросы по мере появления, успехов тебе.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 01.10.2012, 13:03   #3
thelasthero2011
Новичок
Джуниор
 
Регистрация: 30.09.2012
Сообщений: 3
Радость

Цитата:
Сообщение от TinMan Посмотреть сообщение
Тебе нужно разобраться с тем, какие у тебя файлы - бинарные или текстовые? Из твоего описания следует, что они все же текстовые (оба). Но тогда ты должен их описать так:

И учти, что "file of char" и "text" - это совсем не одно и то же!
После этого (и еще небольшого исправления) у тебя компиляция пройдет и начнется отладка. С чтением файла, полагаю, тебе придется повозиться.. Задавай вопросы по мере появления, успехов тебе.
Большое спасибо! Действительно файлы "integer" ни читаются, ни отображаются по-человечески. Поставил тип "text" и с помощью Microsoft Office Excel 2003 убрал все лишние столбики с файла. Файл прочитался. Алгоритм работает.

Большое спасибо!!!
thelasthero2011 вне форума Ответить с цитированием
Старый 01.10.2012, 13:04   #4
thelasthero2011
Новичок
Джуниор
 
Регистрация: 30.09.2012
Сообщений: 3
По умолчанию [B]Вот новый код, пользуйтесь на здоровье:[/B]

Код:
uses crt;

const n=4191;

type mas = array [1..n] of integer;

var riad,even,odd: integer;
    a:             mas;
    rfile:         text;
    wrfile:        text;

begin
even:=0;odd:=0;
assign (rfile, 'c:\loto.txt');
reset(rfile);

for riad:=1 to n do

  begin

  readln(rfile,a[riad]);

  end;

close(rfile);
assign (wrfile, 'c:\res.txt');
rewrite(wrfile);

for riad:=1 to n do

  begin

  if a[riad] mod 2 = 0 then inc(even) else
  if even <> 0 then
	begin
	writeln (wrfile,'even ',even);
  writeln ('even ',even);
	even:=0;
	end;

  if a[riad] mod 2 <> 0 then inc(odd) else
  if odd  <> 0 then
	begin
	writeln (wrfile,'odd  ',odd);
	writeln ('odd  ',odd);
	odd:=0;
	end;

  end;

if a[n] mod 2 = 0 then writeln (wrfile,'even ',even) else
writeln (wrfile,'odd  ',odd);

close(wrfile);
readln;

end.
Вот кусок файла лотереи:
50
67
19
38
42
79
6
44
35
71
52
50
30
80
64
59
56
29
28
37
78
62
46
74
47
47
52
31

Вот кусок файла результата:
even 1
odd 2
even 2
odd 1
even 2
odd 2
even 5
odd 1
even 1
odd 1
even 1
odd 1
even 4
odd 2
even 1
odd 1
thelasthero2011 вне форума Ответить с цитированием
Ответ
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тестирование и отладка программного продуктаРазработана программа, которая считывает из файла и выводит на экран элементы массива. Proskurina Паскаль, Turbo Pascal, PascalABC.NET 2 29.05.2012 22:52
Подвисает программа на Delphi, которая считывает данные с COM-порта(весы), строит график SonicBob Помощь студентам 19 07.09.2011 03:08
программа, которая считывает цепочку чисел и печатает наиболее длинную, монотонно возрастающую их подпосл alexb81 Помощь студентам 3 31.05.2011 14:03
программа, которая считывает текст из файла и выводит на экран только предложения, не содержащие запятых shadowfiend C++ Builder 2 09.05.2011 21:48
программа считывает символы не полностью, причём произвольное количество. Написано на Си Crasty Помощь студентам 2 25.02.2009 15:53