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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2013, 19:50   #1
vavrenyuka
Новичок
Джуниор
 
Регистрация: 03.04.2013
Сообщений: 8
Вопрос ошибка operator is not overloaded

Код:
var a: array [1..100, 1..100] of longint;
    b: array [1..100, 1..100] of longint;
    xk, yk, xs, ys, n, d, i, j: longint;
    s: real;
begin
  read(n);
  read(xk, yk);
  for xs := 1 to n do
  for ys := 1 to 2 do
  read(a[xs, ys]);
  for i := 1 to n do
   d := sqrt(sqr(a[xk]-a[xs]) + (a[yk]-a[ys]));
  for i := 1 to n do
  s := s+d;
  write(s:0:2);
end.
Ошибка: operator is not overloaded

Помогите исправить пожалуйста, буду очень благодарен
Я новичёк, не понимаю в чём дело...

Вот задача: Безымянный.jpg

Последний раз редактировалось Stilet; 03.04.2013 в 22:00.
vavrenyuka вне форума Ответить с цитированием
Старый 03.04.2013, 19:57   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Где ошибка? В какой строке?
Переменная d целочислена, а ей вещественные значения присваиваются (в результате извлечения корня)
Паскаль не старый надеюсь? Иначе столько памяти ему не потянуть
eoln вне форума Ответить с цитированием
Старый 03.04.2013, 20:08   #3
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Вот у меня и ругался на то, что памяти слишком много скушано.
Советую все сотни заменить на 10, а тип longint заменить на byte

в коде не разбирался, а по алгоритму могу посоветовать вот что.
1. Ищем расстояние от дома до каждого спонсора.
2. Суммируем эти расстояния.
3. Удваиваем сумму, это и будет результатом.

Последний раз редактировалось Вадим Мошев; 03.04.2013 в 20:17.
Вадим Мошев вне форума Ответить с цитированием
Старый 03.04.2013, 20:08   #4
alexander13
Форумчанин
 
Аватар для alexander13
 
Регистрация: 07.02.2013
Сообщений: 267
По умолчанию

Код:
 a: array [1..100, 1..100] of longint;
...
d := sqrt(sqr(a[xk]-a[xs]) + (a[yk]-a[ys]));
upd.
Что-то подсветка кода все испортила.. Смысл моего сообщения в том, что Вы производите очень странную операцию с двумерным массивом.
Μολὼν λαβέ

Последний раз редактировалось alexander13; 03.04.2013 в 20:11.
alexander13 вне форума Ответить с цитированием
Старый 03.04.2013, 20:12   #5
vavrenyuka
Новичок
Джуниор
 
Регистрация: 03.04.2013
Сообщений: 8
По умолчанию

Спасибо за ответы, ошибка осталась, кто-нибудь помогите, пожалуйста, решить эту задачу...
Я хоть правильно делать начал? А то в Паскале дуб дубом
vavrenyuka вне форума Ответить с цитированием
Старый 03.04.2013, 20:12   #6
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Что-то я тупеть начал. Довольно долго до меня допирало, что индекс массива a должен быть ДВОЙНОЙ, поскольку массив - двумерный!

Может оттого, что мозги мои заняты другим?
Вадим Мошев вне форума Ответить с цитированием
Старый 03.04.2013, 20:15   #7
vavrenyuka
Новичок
Джуниор
 
Регистрация: 03.04.2013
Сообщений: 8
По умолчанию

А код не подскажите ?
vavrenyuka вне форума Ответить с цитированием
Старый 03.04.2013, 20:17   #8
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Я не знаю, я не копался в коде. Советую заново решить задачу по предложенному мной алгоритму:
Цитата:
1. Ищем расстояние от дома до каждого спонсора.
2. Суммируем эти расстояния.
3. Удваиваем сумму, это и будет результатом.
Вадим Мошев вне форума Ответить с цитированием
Старый 03.04.2013, 20:19   #9
vavrenyuka
Новичок
Джуниор
 
Регистрация: 03.04.2013
Сообщений: 8
По умолчанию

Вадим, не подскажите как искать расстояние ?
d := sqrt(sqr(a[xk]-a[xs]) + (a[yk]-a[ys])); ?
vavrenyuka вне форума Ответить с цитированием
Старый 03.04.2013, 20:25   #10
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Математическими формулами.

Пусть (hx, hy) - координаты точки, где живёт карлсон.
(xi, yi) - это координаты i-го спонсора.

Расстояние от дома до спонсора находится так
sqrt(sqr(xi-hx) + sqr(yi-hy))
Вадим Мошев вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Missing operator or semicolon ошибка в алгоритме Начинающий_Дэльфер Помощь студентам 7 07.12.2012 18:01
возникает ошибка Missing operator or semicolon (классы) fate Общие вопросы Delphi 16 22.02.2011 19:12
ошибка: no match for ‘operator<<’ in ‘std::operator<< [with _Traits = std::char_traits<char> Critter Общие вопросы C/C++ 5 08.08.2010 23:38
Ошибка. Operator not applicable to this oparand type _-Re@l-_ Общие вопросы Delphi 6 29.06.2010 13:30
Почему ошибка? [DCC Error] main.pas(99): E2250 There is no overloaded version of 'StringReplace' ... TwiX Общие вопросы Delphi 5 19.11.2009 03:25