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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2018, 17:58   #1
Kamelok
Пользователь
 
Регистрация: 19.11.2017
Сообщений: 36
По умолчанию Pascal. Работа с файлами.Символы не считает.

Подскажите почему программа просто зависает при подсчете кол-ва символов (можно ли сделать чтоб не определенное кол-во пробелов тоже считал) и из-за этого не записывает в 3 файл.
Код:
program Laba_11;

uses crt;

type
  FByte = file of byte;

procedure Copying(var Fl1: text; var Fl2: FByte);
var
  Code: byte;
  CH: char;
begin
  Assign(Fl1, 'file1.txt');
  Reset(Fl1);
  Assign(Fl2, 'file2.txt');
  Rewrite(Fl2);
  while (not eof(Fl1)) do 
  begin
    Read(Fl1, CH);
    Code := ord(CH);
    Write(Fl2, Code);
  end;
  close(Fl1);
end;

procedure Quantity(var Fl: Text; var n: integer);
var
  Buf: integer;
begin
  n := 0;
  Reset(Fl);
  while (not eof(Fl)) do 
  begin
    ReadLn(F1, Buf);
    n := n + Buf;
  end;
end;


procedure Entry(n: integer; var F: text);
begin
  Assign(F, 'file3.txt');
  Reset(F);
  Rewrite(F);
  Write(F, n);
  close(F);
end;

function Comparison(var F: text; var FF: text): boolean;
var
  cd1, cd2: string;
begin
  Comparison := true;
  reset(F);
  reset(FF);
  while (not eof(F)) or (not eof(FF)) do 
  begin
    readln(F, cd1);
    readln(FF, cd2);
    writeln;
    if (cd1 <> cd2) or (cd1 = cd2) then begin
      Comparison := false;
      writeln('Коды первого и третьего файлов не одинаковы!');
      break
    end
    else
      writeln('Коды первого и третьего файлов одинаковы!');
    break
  end;
  close(F);
  close(FF);
end;

var
  number: integer;
  F2: FByte;
  F1, F3: text;

begin
  clrscr;
  Writeln('Данная программа находит количество символов в тексте, записывает ');
  Writeln('результат в третий файл и сравнивает программный код ');
  Writeln('первого и третьего файлов.');
  Writeln;
  Copying(F1, F2);
  Quantity(F1, number);
  writeln;
  Entry(number, F3);
  writeln('Количество символов в тексте  = ', number);
  Comparison(F1, F3);
  Readln;
end.

Последний раз редактировалось Kamelok; 15.05.2018 в 18:05.
Kamelok вне форума Ответить с цитированием
Старый 15.05.2018, 18:18   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

какое задание? почему первый файл копируется во второй?

а это что за ужас, летящий на крыльях ночи?!!
Цитата:
Сообщение от Kamelok Посмотреть сообщение
Код:
n := n + Buf;
Для чего это делается?!


Сразу укажу на ошибку:
Цитата:
Сообщение от Kamelok Посмотреть сообщение
Код:
procedure Entry(n: integer; var F: text);
begin
  Assign(F, 'file3.txt');
  Reset(F);
  Rewrite(F);
  Write(F, n);
  close(F);
end;
Уберите Reset(f);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.05.2018, 18:44   #3
Kamelok
Пользователь
 
Регистрация: 19.11.2017
Сообщений: 36
По умолчанию

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

Последний раз редактировалось Kamelok; 15.05.2018 в 18:53.
Kamelok вне форума Ответить с цитированием
Старый 16.05.2018, 00:19   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

извините, ничем не могу помочь, я ничегошеньки не понял!
при чём здесь
Цитата:
Сообщение от Kamelok Посмотреть сообщение
(компоненты файла являются целого или вещественного типа
как это связано с
Цитата:
Сообщение от Kamelok Посмотреть сообщение
Задание: Подсчитать количество символов в заданном тексте.
открыли файл, посчитали количество символов (кстати, каких именно?)
закрыли файл. всё, задача решена?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.05.2018, 00:35   #5
Kamelok
Пользователь
 
Регистрация: 19.11.2017
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
извините, ничем не могу помочь, я ничегошеньки не понял!
Я сделал почти всё(программа считает), только я не знаю куда добавить чтобы после работы со вторым файлом его удалить.
И как то странно переводит слова в код вот этот кусок:
Код:
  while not eof(Fl1) do {Пока не достигнут конец файла} 
  begin
    read(Fl1, CH); {Читаем один символ из File1} 
    Code := ord(CH); {Получаем его код} 
    write(Fl2, Code); {Записываем код в File2} 
  end;

Последний раз редактировалось Kamelok; 16.05.2018 в 00:37.
Kamelok вне форума Ответить с цитированием
Старый 16.05.2018, 09:19   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
И как то странно переводит слова в код
а какая задача-то здесь должна быть ?
Код:
cod:=ord(ch);//код ЧИСЛО!!! 
s:=format('%3x', [cod] ); //СИМВОЛЬНАЯ(строковое/string !!!) запись числа 
write(f12, s); // или нечто аналогичное для записи НЕСКОЛЬКИХ символов
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 16.05.2018 в 09:22.
evg_m вне форума Ответить с цитированием
Старый 16.05.2018, 11:56   #7
Mishka_Soft
Новичок
Джуниор
 
Регистрация: 16.05.2018
Сообщений: 1
По умолчанию

Привет!
Посмотрел первую процедуру, даже странно что оно в обще работает (не обижайся):
Код:
procedure Copying(var Fl1: text; var Fl2: FByte);
var
  Code: byte;
  CH: char;
begin
  Assign(Fl1, 'file1.txt');
  Reset(Fl1);
  Assign(Fl2, 'file2.txt');   // Fl2 - у тебя байтовый массив, а должно быть text
  Rewrite(Fl2);
  while (not eof(Fl1)) do 
  begin
    Read(Fl1, CH);
    Code := ord(CH);
    Write(Fl2, Code);
  end;
  close(Fl1);  
// Где закрытие файла Fl2? (если не закрывать, можно все данные потерять.
end;
Mishka_Soft вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не считает программа new_u Помощь студентам 5 04.03.2018 23:19
не правильно считает byMary Помощь студентам 4 08.12.2011 22:00
Даны натуральное число n и символы s1,...,sn. Получите все символы, расположенные до первого двоеточия (Pascal) Татьана Помощь студентам 16 22.09.2011 15:05
СИМВОЛЫ - помогите решить задачу на символы kiko Паскаль, Turbo Pascal, PascalABC.NET 5 30.11.2008 16:09