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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2009, 01:26   #1
Danil21
 
Регистрация: 18.05.2009
Сообщений: 5
По умолчанию Ошибка incompatible type conversion

Доброго времени суток всем кто посетил эту тему.
Помогите разобраться
У меня вот какая проблема
При вызове функции sred(x) таким образом if(sred(x)>0)
компилятор выдает ошибку incompatible type conversion
В main() она описана так
float sred(float[I][J]);

Сама функция представляет из себя
float sred(float x[I][J])
{
float s;
int kol=0,sum=0,i,j;
for(i=0;i<I;i++)
for(j=0;j<J;j++)
sum+=x[i][j];
kol++;
s=(float)sum/kol;
return(s);
}

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

Заранее спасибо.
Danil21 вне форума Ответить с цитированием
Старый 18.05.2009, 01:33   #2
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

Наверно нужно так :
Код:
if(sred(x)>0.0)
Это ошибка приведения типов.
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Старый 18.05.2009, 01:44   #3
Danil21
 
Регистрация: 18.05.2009
Сообщений: 5
По умолчанию

Не-а чт0-то все-равно не работает. Та же самая ошибка.
Я думаю может укзатель там нужен, только не силен в указателях
Danil21 вне форума Ответить с цитированием
Старый 18.05.2009, 02:20   #4
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

Код:
float sred(float x[i][J])
{
float s;
int kol=0,sum=0,i,j;
for(i=0;i<I;i++)
for(j=0;j<J;j++)
sum+=x[i][j];
kol++;//этот оператор в цикл не входит
s=(float)sum/kol;//это вычисление всегда будет возвращать 0
return(s);
}
нужно наверно так

Код:
float sred(float x[i][J])
{
int kol=0,sum=0;
for(int i=0;i<I;i++)
for(int j=0;j<J;j++)
{
sum+=x[i][j];
kol++;
}
return (float)sum/kol;
}
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Старый 18.05.2009, 03:16   #5
Danil21
 
Регистрация: 18.05.2009
Сообщений: 5
По умолчанию

SunKnight огромное спасибо за участие.
Ошибку incompatible type conversion исправил (добавил все-таки указатели)
А тот вариант который ты написал все-равно дает 0
Danil21 вне форума Ответить с цитированием
Старый 18.05.2009, 04:23   #6
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

я не понимаю, зачем темы создавать одинаковые.. http://programmersforum.ru/showthread.php?t=50091
Uguu~
__STDC__ вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка [Error] UPER.pas(57): Incompatible types: 'Integer' and 'Pointer' Pirotexnik Общие вопросы Delphi 4 27.03.2009 11:04
ошибка - [Error] Unit1.pas(325): Operator not applicable to this operand type blackstersl Общие вопросы Delphi 6 27.08.2008 13:17
Incompatible type conversion Fox99 Общие вопросы C/C++ 4 14.08.2008 11:45