• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Файлы в паскаль

  • Автор темы Автор темы shrek=)
  • Дата начала Дата начала

shrek=)

Студент БГПУ
Почётный участник
Регистрация
6 Фев 2010
Сообщения
420
Реакции
6
Баллы
0
Файлы в паскаль

Доброго времени суток!
Помогите решить задачу в Паскаль.

Дан файл с неизвестным количеством строк, сравнить каждую строку с массивом в программе увеличить счетчик совпадений.

З.Ы Каждый элемент массива меньше 10. В каждой строке 9 символов.

Заранее огромное спасибо.
 
Миша, а, собственно, в чем конкретно проблемы?
 
Проблема собственно в том, что я не могу понять алгоритм. Если можно опишите алгоритм, а я попробую написать.
 
Проблема собственно в том, что я не могу понять алгоритм. Если можно опишите алгоритм, а я попробую написать.
Тогда нужно уточнить - что за файл? Тип файла (хорошо бы, если текстовый)? В нем только строки из цифр или еще что-то может быть? А массив тоже состоит из 9 цифр?
 
Обыкновенный текстовый файл. В файле только строки записанные при помощи того массива с которым их (строки) нужно сравнить, только в при предыдущих запусках программы.
Файл является некой текстовой базой данных.
 
Нет, Миша - так я ничего не понимаю.
Ну вот есть файл. В нем каждая строка - это набор 9 цифр? Или нет? Есть массив из 9 цифр. Так? Запускаем программу. Она нашла N совпадений строк с массивом. Дальше что? Записывает массив в файл последней строкой? Выводит число N? Куда - на экран? В общем, подробнее, пожалуйста.
 
Вообще это большая программа в большим количеством процедур. В программе, при каждом запуске, происходят расчеты и их результаты записываются в файл, таким образом формируется база, после чего нужно сравнить результаты текущих расчетов (массив) с результатами предыдущих расчетов (строка в файле).
Вот так-то так.
 
М-да... К сожалению, ни на один из своих конкретных вопросов я ответа не получил. Ну что же, тогда - как понял. Если понял условие не так - я не виноват.
Два варианта.

1. С преобразованием массива в число:
Код:
CONST
 M:Array[1..9] of Byte=(2, 8, 7, 7, 0, 5, 6, 7, 7);
VAR
 f:TEXT;
 C,D,J:LongInt;
 i,N:Integer;
BEGIN
 J:=1000000000;
 D:=0;
 For i:=1 to 9 do
  begin
   J:=J div 10;
   D:=D+M[i]*J;
  end;
 Assign(f,'D:\Base.txt');
 Reset(f);
 N:=0;
 Repeat
  Readln(f,C);
  If C=D then Inc(N);
 Until EoF(f);
 Writeln(N,' coincidences');
 Close(f);
 Append(f);
 Writeln(f,D);
 Close(f);
 Readln
END.

2. С преобразованием массива в строку:
Код:
CONST
 M:Array[1..9] of Byte=(2, 8, 7, 7, 0, 5, 6, 7, 7);
VAR
 f:TEXT;
 S,S1,Sch:String;
 i,N:Integer;
BEGIN
 S1:='';
 For i:=1 to 9 do
  begin
   Str(M[i],Sch);
   S1:=S1+Sch;
  end;
 Assign(f,'D:\Base.txt');
 Reset(f);
 N:=0;
 Repeat
  Readln(f,S);
  If S=S1 then Inc(N);
 Until EoF(f);
 Writeln(N,' coincidences');
 Close(f);
 Append(f);
 Writeln(f,S1);
 Close(f);
 Readln
END.

Вид файла данных:
Код:
960157736
287705677
678345668
287705677
378905543
067789897
287705677
 
Огромное спасибо!!! :)
 
Назад
Сверху