Объединенный Открытый Проект - Сайт для Настоящих Компьютерщиков

Объединенный Открытый Проект

Сайт для Настоящих Компьютерщиков

; Логин:
  Пароль:
Обычный
Безопасный
Запомнить пользователя



Зарегистрироваться
Забыли пароль?
 
 
 
Объединенный Открытый Проект »   Прочее »   Форум поддержки прочих разработок »   Несоответствие типов при испоьзовании модуля симплекс
RSS

Несоответствие типов при испоьзовании модуля симплекс

Текущий рейтинг темы: Нет

<<Назад  Вперед>>Печать
 
koteika
Новичок


Всего сообщений: 1
Рейтинг пользователя: 0





Дата регистрации на форуме:
17 мая 2005
Господа, здравствуйте!

Хотел бы использовать Ваш модуль simplex в свой программе, но несколько не хватает знаний и опыта (я новичок в программировании).
У меня коэффициенты целевой функции и вектор B являются массивами типа array [1..100] of real; Матрица коэффициентов при переменным в уравнениях-ограничениях - матрица типа array [1..100,1..100] of real;
При запуске Simplex:=TSimplex.Create(L,false) выдается ошибка о несоответствии типов... Как мне исправить эту ошибку? Как "срастить" свою прогу и Ваш модуль?

Заранее спасибо за помощь!
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
Во-первых, у меня тип extended, а не Real, а во-вторых, у меня массив - динамический (т.е. без явно заданных границ). Если после изменения типа массива на extended по-прежнему будут оставаться сообщения о несовместимости типов, советую попробовать передавать не сам массив, а его адрес (т.е. поставить перед именем массива знак @).

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
jimmi
Новичок


Всего сообщений: 5
Рейтинг пользователя: 0





Дата регистрации на форуме:
11 нояб. 2006
пишу
SetLength(l,5);
@l[1]:=3;
@l[2]:=1;
@l[3]:=0;
@l[4]:=0;
@l[5]:=0;
Simplex:=TSimplex.Create(L,TRUE);
вылезает ошибка
[Error] Unit1.pas(28): Left side cannot be assigned to
[Error] Unit1.pas(29): Left side cannot be assigned to
[Error] Unit1.pas(30): Left side cannot be assigned to
[Error] Unit1.pas(31): Left side cannot be assigned to
[Error] Unit1.pas(32): Left side cannot be assigned to
может его не так задавать?
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
А зачем символ @? ДОстаточно просто l[1]:=....

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
jimmi
Новичок


Всего сообщений: 5
Рейтинг пользователя: 0





Дата регистрации на форуме:
11 нояб. 2006
если писать L[1]:=... то выдается ошибка о несоответствии типов.
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
А ты L каким типом объявил? Он должен быть именно TExtArray.

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
jimmi
Новичок


Всего сообщений: 5
Рейтинг пользователя: 0





Дата регистрации на форуме:
11 нояб. 2006
var
Form1: TForm1;
Simplex : TSimplex;
l,a1,res: array of extended;
b1: extended;
так правильно? не работает.
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
Должно быть так:
l, a1, res: TExtArray.

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
jimmi
Новичок


Всего сообщений: 5
Рейтинг пользователя: 0





Дата регистрации на форуме:
11 нояб. 2006
var
Form1: TForm1;
Simplex : TSimplex;
l,a1,res: TExtArray;
b1: extended;

implementation

{$R *.dfm}
begin
SetLength(l,5);
l[1]:=3;
l[1]:=1;
l[1]:=0;
l[1]:=0;
l[1]:=0;
Simplex:=TSimplex.Create(L,false);
SetLength(A1,5);
a1[1]:=2;
a1[2]:=6;
a1[3]:=1;
a1[4]:=0;
a1[5]:=0;
Simplex.AddCons(150,A1,equal);
a1[1]:=1;
a1[2]:=0;
a1[3]:=0;
a1[4]:=1;
a1[5]:=0;
Simplex.AddCons(30,A1,equal);
a1[1]:=0;
a1[2]:=1;
a1[3]:=0;
a1[4]:=0;
a1[5]:=1;
Simplex.AddCons(20,A1,equal);
if (Simplex.Solve=SIMPLEX_DONE) then begin form1.caption:='Результат:'+floattostr(Simplex.GetMin);
Res:=Simplex.GetSolution;
end
else form1.caption:='Решения не существует!';
Simplex.Free;
end.
выдает ошибку invalid pointer operator
<<Назад  Вперед>>Печать
Объединенный Открытый Проект »   Прочее »   Форум поддержки прочих разработок »   Несоответствие типов при испоьзовании модуля симплекс
RSS
Быстрый переход в раздел:


Время выполнения скрипта: 5.1975. Количество выполненных запросов: 18, время выполнения запросов 0.0297