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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2013, 14:39   #1
t6fore
Новичок
Джуниор
 
Регистрация: 10.01.2013
Сообщений: 7
По умолчанию Работа с файлами. Не знаю как правильно реализовать чтение массивов

Даны 2 последовательности действительных чисел х1...х10, у1...у10. Выяснить верно ли что все точки (xi,yi) принадлежат кругу радиуса 2 с центром в точке (1;1).

Код:
Program N26;
Label 1, 2;
Var
   x:Array[1..10] of real;
   y:Array[1..10] of real;
   i,j:Integer;
      f1,f2:text;
Begin
     {Работаем с первым файлом}
     Assign(f1,'input.txt');
     Rewrite(f1);
     writeln('vvedite riad x');
     for i:=1 to 10 do begin
     read(x[i]);
     write(f1,x[i]);
     end;
     writeln('vvedite riad y');
     for j:=1 to 10 do begin
     read(y[j]);
     write(f1,y[j]);
     end;
     Close(f1);
     Reset(f1);
     for i:=1 to 10 do
     Read(f1,x[i]);
     for j:=1 to 10 do
     Read(f1,y[i]);
     If ((X[i]*X[i]+1)+(Y[j]*Y[j]+1)) <= 4 then
     WriteLn ('Все точки попали в окружность радиуса R = 4')
     else writeLn ('Некоторые точки не попали в окружность радиуса R = 4');
     Close(f1);
     readln
End.


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

Последний раз редактировалось Serge_Bliznykov; 10.01.2013 в 15:36.
t6fore вне форума Ответить с цитированием
Старый 10.01.2013, 15:40   #2
дiлетант
 
Регистрация: 02.01.2013
Сообщений: 5
По умолчанию

а почему +1 в формуле (X[i]*X[i]+1)?
дiлетант вне форума Ответить с цитированием
Старый 10.01.2013, 15:46   #3
t6fore
Новичок
Джуниор
 
Регистрация: 10.01.2013
Сообщений: 7
По умолчанию

Модератор, спасибо, буду так оформлять.
t6fore вне форума Ответить с цитированием
Старый 10.01.2013, 15:48   #4
t6fore
Новичок
Джуниор
 
Регистрация: 10.01.2013
Сообщений: 7
По умолчанию

дiлетант, в условии задано, что центр нашего радиуса лежит в точке (1;1), соответственно я и перенес его сдвигом абсциссы и ординаты на одну единицу
t6fore вне форума Ответить с цитированием
Старый 10.01.2013, 16:09   #5
дiлетант
 
Регистрация: 02.01.2013
Сообщений: 5
По умолчанию

почему-то мне кажется что в формуле -1. нет?
дiлетант вне форума Ответить с цитированием
Старый 10.01.2013, 16:19   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
дiлетант, в условии задано, что центр нашего радиуса лежит в точке (1;1), соответственно я и перенес его сдвигом абсциссы и ординаты на одну единицу
это неверно. Возьмите, например, точку с координатами (2,2) она точно попадает в заданный Вами круг. У Вас же - нет!
Да сдвигать нужно ДО возведения в степень..

да и проще, я бы искал расстояние между точкой и центром окружности
это легко записать так:
Код:
if ( sqr(x[i]-1) + sqr(y[i]-1) ) <= 4 then  { точка лежит принадлежит кругу }
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.01.2013, 16:23   #7
t6fore
Новичок
Джуниор
 
Регистрация: 10.01.2013
Сообщений: 7
По умолчанию

да, -1. Ну сути дела это не меняет и вообще не касается того что я спросил.
Как написать так, чтобы программа читала два ряда, записывала их в файл, потом читала з того же файла, реализовала проверку на попадание в радиус всех точек, а записывала результат в файл, вот это мне нужно
t6fore вне форума Ответить с цитированием
Старый 10.01.2013, 16:29   #8
t6fore
Новичок
Джуниор
 
Регистрация: 10.01.2013
Сообщений: 7
По умолчанию

Модер, спасибо, исправил. Но у меня все точки принадлежат кругу, а это неверно, где я ошибся?
t6fore вне форума Ответить с цитированием
Старый 10.01.2013, 16:43   #9
дiлетант
 
Регистрация: 02.01.2013
Сообщений: 5
По умолчанию

конечно глупое предположение, но все таки возможно читаются не все координаты из-за write. может каждую координату из массива записывать в новую строку ну и читать соответственно. может writeln
дiлетант вне форума Ответить с цитированием
Старый 10.01.2013, 16:55   #10
t6fore
Новичок
Джуниор
 
Регистрация: 10.01.2013
Сообщений: 7
По умолчанию

То что я имею на данный момент. Теперь всегда единица

Код:
Program N26;
Label 1, 2;
Var
   x:Array[1..10] of real;
   y:Array[1..10] of real;
   i,j,s:Integer;
      f1,f2:text;
Begin
     //Работаем с первым файлом
     Assign(f1,'input.txt');        //присвоили переменной имя файла
     Rewrite(f1);                   //открыли для записи
     writeln('vvedite riad x');
     for i:=1 to 10 do begin        //вводим значения ряда абсцис
     read(x[i]);
     write(f1,x[i]);
     end;
     writeln('vvedite riad y');
     for j:=1 to 10 do begin         //вводим значения ряда ординат
     read(y[j]);
     write(f1,y[j]);
     end;
     Close(f1);                      //закончили работу с файлом
     //Работаем со вторым файлом
     
     Assign(f2,'output.txt');         //присвоили имя
     Rewrite(f2);                     //открыли для записи
     Reset(f1);                       //открыли для чтения первый файл
     for i:=1 to 10 do                //читаем значения рядов,не уверен правильно сделал или нет
     Read(f1,x[i]);
     for j:=1 to 10 do
     Read(f1,y[i]);
     if ( sqr(x[i]-1) + sqr(y[i]-1) ) <= 4 then      //задаем условие проверки
     s:=1 else s:=0; {0 - не попадает, 1 - попадает}
     write(f2,s);                     //записываем значение переменной во второй файл
     Close(f1,f2);
     Reset(f2);                        //открываем второй файл для чтения
     Readln(f2,s);                     //считываем
     Writeln(s);                       //выводим значение переменной
     readln
End.

Последний раз редактировалось t6fore; 10.01.2013 в 17:03.
t6fore вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать ограничение на перемещение? Или я не знаю как называется это правильно. (См. внутри) Делфи KotyaraYa Помощь студентам 5 17.12.2012 07:42
Не знаю как реализовать шифр GrafMonte Помощь студентам 0 11.12.2011 19:35
Не знаю как правильно сделать вызов функции Homutova_Julia Помощь студентам 14 07.06.2011 23:45
Canvas - не знаю как реализовать NitroSki Помощь студентам 1 19.05.2011 15:03
Не знаю как реализовать вычисления Дмитрий D БД в Delphi 3 06.06.2008 08:58