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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.01.2013, 19:27   #1
Макс Башкинов
Пользователь
 
Регистрация: 01.02.2012
Сообщений: 20
По умолчанию Работа с типизированными файлами

Привет форумчане, помогите решить задачу по программированию на Delphi.
Текст задачи:
Цитата:
Прямая на плоскости задается уравнением ax+by+c=0, где a и b одновременно не равны нулю. Будем рассматривать только прямые, для которых коэффициенты a,b,c - целые числа. Пусть f - файл, содержащий коэффициенты нескольких прямых (не менее трех).
Переписать из файла f в файл g коэффициенты тех прямых, которые:
a) параллельны первой из прямых, заданной в файле f;
b) указаны в пункте а, но дополнительно требуется, чтобы все прямые были различны;
Не могу понять, каким образом записать в файл коэффициенты нескольких прямых, чтобы нормально считать их, а потом еще и сравнивать. Надеюсь хоть немного поможете, или дадите советы как организовать, а то мыслей уже нету.

Последний раз редактировалось Макс Башкинов; 15.01.2013 в 20:19.
Макс Башкинов вне форума Ответить с цитированием
Старый 15.01.2013, 19:33   #2
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

хоть язык бы указал для начала...

на делфи:

Код:
Vat StrList: TstringList;
begin
StrList:= TStringList.Create(self);
StrList:= 'x = ' + x + '; y = ' + y;
StrList.SaveToFile('C:\');
StrList.Free;
end;
NewLamer&Programer вне форума Ответить с цитированием
Старый 15.01.2013, 19:51   #3
Макс Башкинов
Пользователь
 
Регистрация: 01.02.2012
Сообщений: 20
По умолчанию

Цитата:
хоть язык бы указал для начала...
угадал, делфи
но если а1*в2 = а2*в1 - прямые 1 и 2 параллельны.
имелось ввиду коэффициенты a,b,c.
а как их потом считать надо же и проверить.

п.с а что значит self
Макс Башкинов вне форума Ответить с цитированием
Старый 15.01.2013, 20:32   #4
Макс Башкинов
Пользователь
 
Регистрация: 01.02.2012
Сообщений: 20
По умолчанию

а если у меня тип record, то это сработает?
Код:
StrList:= 'x = ' + x + '; y = ' + y;
Макс Башкинов вне форума Ответить с цитированием
Старый 15.01.2013, 21:01   #5
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

Цитата:
Сообщение от Макс Башкинов Посмотреть сообщение
а если у меня тип record, то это сработает?
Код:
StrList:= 'x = ' + x + '; y = ' + y;
record это не тип , а структура...
NewLamer&Programer вне форума Ответить с цитированием
Старый 15.01.2013, 21:31   #6
Макс Башкинов
Пользователь
 
Регистрация: 01.02.2012
Сообщений: 20
По умолчанию

Цитата:
Сообщение от NewLamer&Programer Посмотреть сообщение
record это не тип , а структура...
ну это уже я так назвал.
суть не в том

List:= 'a = ' + inttostr(a) + '; b = ' + inttostr(b);
переменные целого типа же, то Incompatible types: 'TStringList' and 'String'
Макс Башкинов вне форума Ответить с цитированием
Старый 15.01.2013, 21:45   #7
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

List[i]:= ...;

TStringList это массив, соответственно присваивать нужно конкретному элементу
NewLamer&Programer вне форума Ответить с цитированием
Старый 15.01.2013, 21:47   #8
Макс Башкинов
Пользователь
 
Регистрация: 01.02.2012
Сообщений: 20
По умолчанию

TStringList это массив значит..

Цитата:
Сообщение от NewLamer&Programer Посмотреть сообщение
List[i]:= ...;

TStringList это массив, соответственно присваивать нужно конкретному элементу
так все равно типы не совпадают

Последний раз редактировалось Stilet; 16.01.2013 в 13:38.
Макс Башкинов вне форума Ответить с цитированием
Старый 15.01.2013, 22:36   #9
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

давай код тогда, а то телепатия сбоит по ночам
NewLamer&Programer вне форума Ответить с цитированием
Старый 15.01.2013, 23:56   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Макс Башкинов
примерно так:

Код:
type MyLineKoef = record 
  a,b,c : longint
end;

function isLinesParallel( L1, L2 : MyLineKoef) : boolean;
begin
  if ЛинииПаралелльны 
    then isLinesParallel := true
    else isLinesParallel := False;
end;

var
   f, g : file of MyLineKoef;
   FirstLine, OneLine : MyLineKoef;
begin
   AssingFile(f, 'MyLines.dat');
   Reset(f);
   if eof(f) then begin
       {  Ошибка! Нет данных в файле! }
        Halt(100); {стоп-машина!}
   end;

   Read(f, FirstLine ); {прочитали коэффициенты 1-й линии}

   AssingFile(g, 'NewLines.dat');
   Rewrite(g);

   while Not Eof(f) do begin
       Read(f, OneLine);
       if isLinesParallel(FirstLine, OneLine) then Write(f, OneLine);
   end;

   Close(f);
   Close(g); 
end.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с типизированными файлами Zalmancheg Помощь студентам 2 11.03.2011 23:15
Работа с типизированными файлами! Anton5 Помощь студентам 6 01.07.2010 12:55
Работа с типизированными файлами bo-al Помощь студентам 2 27.02.2010 19:18
Работа с типизированными файлами. Darangel Помощь студентам 1 17.05.2009 19:19