Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка с умножением 
:(
    Опции темы
rthsobakas
Дата 2.12.2008, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 562
Регистрация: 20.9.2007

Репутация: нет
Всего: -1



Есть код

Код

int mash(int *f0,int *f1,int *f2){
 int kx0=*f0; int ky0=*f1; int kz0=*f2;
 for (int i = 1; i <= kol_vershin; i++) {
    a1[i,1]=kx0*a[i,1];
    a1[i,2]=a[i,2]*ky0;
    a1[i,3]=a[i,3]*kz0;
 }
 return 0;
 }


Проблемы с 

Код

    a1[i,1]=kx0*a[i,1];
    a1[i,2]=a[i,2]*ky0;
    a1[i,3]=a[i,3]*kz0;


[C++ Error] Unit2.cpp(30): E2087 Illegal use of pointer
[C++ Error] Unit2.cpp(31): E2087 Illegal use of pointer
[C++ Error] Unit2.cpp(32): E2087 Illegal use of pointer


Если заменить    a1[i,1]=kx0*a[i,1];    на    a1[i,1]=kx0+a[i,1];  будет
[C++ Error] Unit2.cpp(30): E2277 Lvalue required

Помогите разобраться

PM   Вверх
Dmi3ev
Дата 2.12.2008, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



Код

int mash(int *f0,int *f1,int *f2){
 int kx0=f0; int ky0=f1; int kz0=f2;
 for (int i = 1; i <= kol_vershin; i++) {
    a1[i,1]=kx0*a[i,1];
    a1[i,2]=a[i,2]*ky0;
    a1[i,3]=a[i,3]*kz0;
 }
 return 0;
 }

так попробуй


--------------------

PM MAIL   Вверх
rthsobakas
Дата 2.12.2008, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 562
Регистрация: 20.9.2007

Репутация: нет
Всего: -1



Dmi3ev
Код

 int kx0=f0; int ky0=f1; int kz0=f2;

[C++ Error] Unit2.cpp(29): E2034 Cannot convert 'int *' to 'int'
PM   Вверх
Dmi3ev
Дата 2.12.2008, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



че-то я туплю утром  smile 
а что за а[i,1]?
где задаются int *f0,int *f1,int *f2?

Добавлено через 1 минуту и 2 секунды
над предыдущим сообщением можно улыбнуться))) тупанул)))


--------------------

PM MAIL   Вверх
rthsobakas
Дата 2.12.2008, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 562
Регистрация: 20.9.2007

Репутация: нет
Всего: -1



А чОрт...
Код

 a1[i,1]=kx0*a[i,1];


для сишника  же

Код

 a1[i][1]=kx0*a[i][1];


sorry smile 
PM   Вверх
Dmi3ev
Дата 2.12.2008, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



Цитата

a1[i][1]=kx0*a[i,1];

можно заменить на 
Код

a1[i][1]*=kx0;

да, замени)))

Это сообщение отредактировал(а) Dmi3ev - 2.12.2008, 13:21


--------------------

PM MAIL   Вверх
volvo877
Дата 2.12.2008, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 13
Всего: 116



rthsobakas, может, все-таки:
Код

    a1[i][1]=kx0*a[i][1]; // и так далее ?
?
PM MAIL   Вверх
Severyanin
Дата 3.12.2008, 04:49 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

Репутация: нет
Всего: 9



rthsobakas, насколько я понимаю, kx0,ky0 и kz0 хранят адреса ячеек памяти, а вы пытаетесь умножить адрес на какое-то число и потом записать его куда-то. Естественно, компилятор быдет ругаться на указатели. А если пропустит, то ваша программа упадет при запуске и может за собой всю ось уронить. Лучше будет записать это так:
Код

int mash(int *f0,int *f1,int *f2){    
 int kx0=*f0; int ky0=*f1; int kz0=*f2;    
 for (int i = 1; i <= kol_vershin; i++) {    
    a1[i][1]=(&kx0)*a[i][1];    
    a1[i][2]=a[i][2]*(&ky0);    
    a1[i][3]=a[i][3]*(&kz0);    
 }    
 return 0;    
 }

или при объявлении переменных взять не указатель на указатель, а значение по адресу
Код

int kx0=&f0; int ky0=&f1; int kz0=&f2;    

Только вот зачем тогда было передавать указатели в параметрах, можно было просто передать сами переменные, все равно исходные величины нигде дальше не используются


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0761 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.