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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2018, 04:32   #1
EvilArtorias
Пользователь
 
Регистрация: 18.01.2018
Сообщений: 11
По умолчанию Процедура сравнения последовательного файла (имя) и целочисленного массива [Pascal]

Процедура сравнения последовательного файла (имя) и целочисленного массива
структура файла: х-целое, у-вещественное
сравнение осуществляется по-элементно
если все значения совпали, то процедура выводит true,иначе false.
я написал часть и уже запутался...
Код:
program failinif;
const n=4;
type
t=record
procedure sravnenie(c: boolean);
var mass : array[1..n] of real;
f1:file of T;
i:integer;
x:integer;
y:integer;
begin
writeln('ведите х и у');
readln(x,y);
assignFile(f1,'f1.dat');
rewrite(f1);
write(f1,x,y);
closeFile(f1);
writeln('введите массив из','   ' ,n , '   ',  'чисел');
readln(mass[i]);
for i:=1 to n-1 do
if (mass[i]=x)and(mass[i+1]=y) then c:=true
else c:=false;
end;end;
 var a:integer;
 begin
sravnenie(a);
 end.
постоянно говорит о том что типизированный файл не может содержать эллементы такого типа.Как исправить?и можно ли сделать и целое и вещественное в одной процедуре,а то он тоже на это ругался.

Последний раз редактировалось Serge_Bliznykov; 18.01.2018 в 09:44.
EvilArtorias вне форума Ответить с цитированием
Старый 18.01.2018, 08:25   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Процедура сравнения последовательного файла
А чо такое "последовательный файл"?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 18.01.2018, 10:04   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от EvilArtorias Посмотреть сообщение
t=record
procedure sravnenie(c: boolean);
реально? Вы в тип запись хотите вставить процедуру? И это компилируется?
абалдеть!!!


Цитата:
Сообщение от min@y™ Посмотреть сообщение
А чо такое "последовательный файл"?
присоединяюсь к вопросу.

потому как типизированный файл как раз легко позволяет обратиться к любому элементу файла в любом порядке. Поэтому, вряд ли здесь допустимо использование типизированного файла.

я бы предположил, что у Вас файл банально текстовый, который содержит числа.
но лучше это уточнить.

и ещё вопрос по заданию. Если нужно сравнить файл, который содержит целые и вещественные числа с целочисленным массивом, то как это сделать? что нужно делать с вещественными числами?
игнорировать?

попробуйте что-то вроде
Код:
const N=5;

type TMyArray = array[1..N] of integer;

procedure comapre_file_and_array(const fileName : string; A:TMyArray; var is_match : boolean);
var   f : TextFile;
   x, i : integer;
   y:real;
begin
  is_match := false;

  AssignFile(f, fileName);
  Reset(f);

  i:=0;
  while Not Eof(f) do begin
     ReadLn(f, x, y);
     if i>=N then begin CloseFile(f); Exit; end; {файл не кончился, а массив уже кончился - выходим FALSE}
     inc(i);
     if x<>A[i] then begin CloseFile(f); Exit; end;{очередные элементы не совпали  - выходим FALSE}
   end;
   CloseFile(f);
   is_match := true; {всё совпало. устанавливаем TRUE}
end;

var
  arr : TMyArray;
  is_match : boolean;
begin

  for i:=1 to N do arr[i]  := i; {заполнить массив}  

  comapre_file_and_array('input.text', arr, is_match);

  if is_match 
    then WriteLn('Содержимое целочисленных значений файла и массива совпали.')
    else riteLn('Содержимое целочисленных значений файла и массива не совпало.');

end.

Последний раз редактировалось Serge_Bliznykov; 18.01.2018 в 10:10.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.01.2018, 18:07   #4
EvilArtorias
Пользователь
 
Регистрация: 18.01.2018
Сообщений: 11
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
А чо такое "последовательный файл"?
ну последовательный файл это 1-ый элемент массива сравнивается со значением 1-ой записи файла,2-ой со вторым и тд.,но в файле всего 2 элемента.
EvilArtorias вне форума Ответить с цитированием
Старый 18.01.2018, 18:14   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Сообщение от EvilArtorias Посмотреть сообщение
ну последовательный файл это 1-ый элемент массива сравнивается со значением 1-ой записи файла,2-ой со вторым и тд.,но в файле всего 2 элемента.
Щито?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 18.01.2018, 18:20   #6
EvilArtorias
Пользователь
 
Регистрация: 18.01.2018
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
реально? Вы в тип запись хотите вставить процедуру? И это компилируется?
абалдеть!!!




присоединяюсь к вопросу.

потому как типизированный файл как раз легко позволяет обратиться к любому элементу файла в любом порядке. Поэтому, вряд ли здесь допустимо использование типизированного файла.

я бы предположил, что у Вас файл банально текстовый, который содержит числа.
но лучше это уточнить.

и ещё вопрос по заданию. Если нужно сравнить файл, который содержит целые и вещественные числа с целочисленным массивом, то как это сделать? что нужно делать с вещественными числами?
игнорировать?

попробуйте что-то вроде
Код:
const N=5;

type TMyArray = array[1..N] of integer;

procedure comapre_file_and_array(const fileName : string; A:TMyArray; var is_match : boolean);
var   f : TextFile;
   x, i : integer;
   y:real;
begin
  is_match := false;

  AssignFile(f, fileName);
  Reset(f);

  i:=0;
  while Not Eof(f) do begin
     ReadLn(f, x, y);
     if i>=N then begin CloseFile(f); Exit; end; {файл не кончился, а массив уже кончился - выходим FALSE}
     inc(i);
     if x<>A[i] then begin CloseFile(f); Exit; end;{очередные элементы не совпали  - выходим FALSE}
   end;
   CloseFile(f);
   is_match := true; {всё совпало. устанавливаем TRUE}
end;

var
  arr : TMyArray;
  is_match : boolean;
begin

  for i:=1 to N do arr[i]  := i; {заполнить массив}  

  comapre_file_and_array('input.text', arr, is_match);

  if is_match 
    then WriteLn('Содержимое целочисленных значений файла и массива совпали.')
    else riteLn('Содержимое целочисленных значений файла и массива не совпало.');

end.
все понял,а я никак понять не мог почему он от меня енд требует,ну я его в конце процедуры еще один и тыкнул,а там в оказывается в записях енд необходим.
последовательный файл это вроде имеется ввиду как раз тип записи рекорд.А насчет типа файла,я по началу пытался текстовым сделать,но преподаватель сказал что обязательно типизированный фал должен быть "file of..."

Последний раз редактировалось EvilArtorias; 18.01.2018 в 18:27.
EvilArtorias вне форума Ответить с цитированием
Старый 18.01.2018, 18:28   #7
EvilArtorias
Пользователь
 
Регистрация: 18.01.2018
Сообщений: 11
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
посмотрел на "сравнение по-элементно",а последовательный файл я так понимаю это запись
EvilArtorias вне форума Ответить с цитированием
Старый 18.01.2018, 18:32   #8
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Сообщение от EvilArtorias Посмотреть сообщение
посмотрел на "сравнение по-элементно",а последовательный файл я так понимаю это запись
Мож, всё-таки, типизированный, а?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 18.01.2018, 18:44   #9
EvilArtorias
Пользователь
 
Регистрация: 18.01.2018
Сообщений: 11
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
Мож, всё-таки, типизированный, а?
у меня очень неразборчевый подчерк,возможно типизированный:D
EvilArtorias вне форума Ответить с цитированием
Старый 18.01.2018, 18:50   #10
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Сообщение от EvilArtorias Посмотреть сообщение
у меня очень неразборчевый подчерк,возможно типизированный:D
В след. раз пиши вопрос на видео.
С субтитрами, канещна!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При однократном просмотре целочисленного массива X найти два максимальных числа Xmax1 и Xmax2 соответственно среди четных и нечетных по значению элементов массива Anonim123321 Общие вопросы C/C++ 11 11.12.2017 11:08
процедура поиска максимального элемента массива Pascal ABC программирование Помощь студентам 1 03.06.2013 22:20
Процедура последовательного увеличения размера шрифта Olya1985 Общие вопросы Delphi 5 24.08.2011 11:28
По массивам, SOS! из целочисленного массива удалить из массива элементы, встречающиеся менее 3-х раз prelest' Паскаль, Turbo Pascal, PascalABC.NET 1 23.05.2011 22:37
Pascal.Процедура создания текстового файла nulyjarden Помощь студентам 3 03.04.2010 15:24