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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2011, 16:49   #1
OFFSET
 
Регистрация: 19.11.2011
Сообщений: 8
По умолчанию Паскаль. Расстояние от точки до начала координат с использованием массивов.

Всем привет, помогите с программой, у меня тут где-то ошибка, я не пойму где. Мне надо чтобы программа вычисляла расстояние от заданной точки до начала координат и определяла квадрант в котором она расположена. Исходные данные вводятся в одномерный массив, сообветственно Х и У. А результат S- расстояние, должен быть в виде двумерного массива.
Выдавать он должен результаты вот так:
x[1]=.... y[1]=.... S[1,1]=.... <комментарий>
x[1]=.... y[2]=.... S[1,2]=.... <комментарий>
n - количество столбцов (кол-во У)
m -количество строк (кол-во Х)
одному значения Х подставляются все знаения У. Например:
исх. данные: n=3
m=2
Элементы массива(Y):1
0
2
Элементы массива(X):2
3
Мне выдает результат, все бы хорошо, но каждую строчку он мне выдает по 6 раз... а если в исх. данных задать соответственно n=5 a m=6 то он мне выдаст по 30 строк каждого решения. Подскажите как избавиться от этого.
Код:
program Kuzmin;
   Var y:array[1..100] of real;
       x:array[1..100] of real;
       a:array[1..100,1..100] of real;
       s:real;
       n,i,j,l,k,m:integer;
begin
write('Лабораторная работа №6');
write('Студента группы 11-ВТ');
writeln('Кузьмина Юрия Валерьевича');
   Write('n= '); readln(n);
   Write('m= '); readln(m);
   Write('Элементы массива(Y): '); for i:=1 to n do readln(y[i]);
   Write('Элементы массива(X): '); for j:=1 to m do readln(x[j]);
   For j:=1 to m do
   for i:=1 to n do begin
           s:=sqrt(x[j]*x[j]+y[i]*y[i]);
           For l:=1 to m do
               for k:=1 to n do begin
               a[l,k]:=s;
           write(' x[',j:2,']= ',x[j]:3:2);
           write(' y[',i:2,']= ',y[i]:3:2);
           write(' S[',l:2,k:2,']=',a[l,k]:2:2);
        If (x[j]=0) and (y[i]=0) then writeln(' точка лежит в начале координат ')
        else If (x[j]>0) and (y[i]>0) then writeln('  1-квадрант ')
        else If (x[j]<0) and (y[i]>0) then writeln('  2-квадрант ')
        else If (x[j]<0) and (y[i]<0) then writeln('  3-квадрант ')
        else If (x[j]>0) and (y[i]<0) then writeln('  4-квадрант ')
        else If (x[j]=0) and (y[i]>0) or (y[i]<0) then writeln('  точка лежит на оси y ')
        else writeln('  точка лежит на оси x ');
        end;
        end; end.

Последний раз редактировалось OFFSET; 20.11.2011 в 16:45.
OFFSET вне форума Ответить с цитированием
Старый 24.11.2011, 07:01   #2
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Цитата:
Сообщение от OFFSET Посмотреть сообщение
Код:
program Kuzmin;
   Var y:array[1..100] of real;
       x:array[1..100] of real;
       a:array[1..100,1..100] of real;
       s:real;
       n,i,j,l,k,m:integer;
begin
write('Лабораторная работа №6');
write('Студента группы 11-ВТ');
writeln('Кузьмина Юрия Валерьевича');
   Write('n= '); readln(n);
   Write('m= '); readln(m);
   Write('Элементы массива(Y): '); for i:=1 to n do readln(y[i]);
   Write('Элементы массива(X): '); for j:=1 to m do readln(x[j]);
   For j:=1 to m do
   for i:=1 to n do begin
           s:=sqrt(x[j]*x[j]+y[i]*y[i]);
           For l:=1 to m do
               for k:=1 to n do begin
               a[l,k]:=s;
           write(' x[',j:2,']= ',x[j]:3:2);
           write(' y[',i:2,']= ',y[i]:3:2);
           write(' S[',l:2,k:2,']=',a[l,k]:2:2);
        If (x[j]=0) and (y[i]=0) then writeln(' точка лежит в начале координат ')
        else If (x[j]>0) and (y[i]>0) then writeln('  1-квадрант ')
        else If (x[j]<0) and (y[i]>0) then writeln('  2-квадрант ')
        else If (x[j]<0) and (y[i]<0) then writeln('  3-квадрант ')
        else If (x[j]>0) and (y[i]<0) then writeln('  4-квадрант ')
        else If (x[j]=0) and (y[i]>0) or (y[i]<0) then writeln('  точка лежит на оси y ')
        else writeln('  точка лежит на оси x ');
        end;
        end; end.
убрать помеченное красным
vovk вне форума Ответить с цитированием
Старый 24.11.2011, 11:32   #3
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Ничего не понимаю.. А где же мой пост?? Вроде, я его отсылал..
Придется повторить...
Цитата:
Сообщение от OFFSET Посмотреть сообщение
Мне выдает результат, все бы хорошо, но каждую строчку он мне выдает по 6 раз... а если в исх. данных задать соответственно n=5 a m=6 то он мне выдаст по 30 строк каждого решения. Подскажите как избавиться от этого.
Ты внутри двойного цикла сделал ЕЩЕ ОДИН двойной цикл. Зачем? Может, штук десять насажать - чего остановился?

Короче, вот исправленный код. Я только не совсем понял, зачем ты переставил нормальный порядок иксов и игреков, но это дело твое..
Код:
program Kuzmin_and_TinMan;
Var
  y:array[1..100] of real;
  x:array[1..100] of real;
  a:array[1..100,1..100] of real;
  s:real;
  i,j,m,n: integer;

begin
  write('Лабораторная работа №6');
  write('Студента группы 11-ВТ');
  writeln('Кузьмина Юрия Валерьевича');
  Write('n= '); readln(n);
  Write('m= '); readln(m);
  Write('Элементы массива(Y): '); for i:=1 to n do readln(y[i]);
  Write('Элементы массива(X): '); for j:=1 to m do readln(x[j]);
  For j:=1 to m do
    for i:=1 to n do begin
      s:=sqrt(x[j]*x[j]+y[i]*y[i]);
      a[j,i]:=s;
      write(' x[',j:2,']=',x[j]:5:2);
      write(' y[',i:2,']=',y[i]:5:2);
      write(' S[',j:2,i:2,']=',a[j,i]:5:2);
      If (x[j]=0) and (y[i]=0) then writeln(' точка лежит в начале координат ')
      else If (x[j]>0) and (y[i]>0) then writeln('  1-квадрант ')
      else If (x[j]<0) and (y[i]>0) then writeln('  2-квадрант ')
      else If (x[j]<0) and (y[i]<0) then writeln('  3-квадрант ')
      else If (x[j]>0) and (y[i]<0) then writeln('  4-квадрант ')
      else If (x[j]=0) and (y[i]>0) or (y[i]<0) then writeln('  точка лежит на оси y ')
      else writeln('  точка лежит на оси x ');
    end;
end.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 24.11.2011, 19:55   #4
OFFSET
 
Регистрация: 19.11.2011
Сообщений: 8
По умолчанию

TinMan, спасибо большое.
Реально что-то тупанул там конкретно.
OFFSET вне форума Ответить с цитированием
Старый 25.11.2011, 05:57   #5
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Цитата:
Сообщение от TinMan Посмотреть сообщение
Ничего не понимаю.. А где же мой пост?? Вроде, я его отсылал..
Придется повторить...

Ты внутри двойного цикла сделал ЕЩЕ ОДИН двойной цикл. Зачем? Может, штук десять насажать - чего остановился?

Короче, вот исправленный код. Я только не совсем понял, зачем ты переставил нормальный порядок иксов и игреков, но это дело твое..
Код:
program Kuzmin_and_TinMan;
......
ну и зря разжевали. ТС вместо того чтобы самому разбиратся в коде, за 4 дня только 2 темы наплодил с жалобами на то что ему не помогают.
Это значит что код не его, либо ему неинтерестно. Поэтому я только вывел из лишних циклов вывод результатов, что вобщем то он и хотел.

Цитата:
Мне выдает результат, все бы хорошо, но каждую строчку он мне выдает по 6 раз... а если в исх. данных задать соответственно n=5 a m=6 то он мне выдаст по 30 строк каждого решения. Подскажите как избавиться от этого.
vovk вне форума Ответить с цитированием
Старый 25.11.2011, 23:12   #6
OFFSET
 
Регистрация: 19.11.2011
Сообщений: 8
По умолчанию

Цитата:
Сообщение от vovk Посмотреть сообщение
ну и зря разжевали. ТС вместо того чтобы самому разбиратся в коде, за 4 дня только 2 темы наплодил с жалобами на то что ему не помогают.
ага, а еще Земля плоская, и вода сухая.
OFFSET вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение координат точки. ТриСемёрки C++ Builder 3 15.12.2011 15:08
Определить расстояние от точки до центра координат sektor2011 Помощь студентам 3 23.01.2011 19:50
кратчайшее расстояние от заданной точки до ближайщей стороны треугольника ddeman666 Помощь студентам 1 03.05.2010 14:47
Отображение координат точки Nadina Помощь студентам 3 18.04.2009 10:59
Расстояние точки до поверхности Mikhail Bakurov Общие вопросы Delphi 9 20.01.2009 23:05