Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка типов 
V
    Опции темы
Langaru
Дата 27.11.2009, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 2.9.2009

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



Наткнулся еще на 1 ошибку - invalid operands of types `int' and `double ()(double, double)' to binary `operator/' 
                                               - invalid operands of types `double' and `double ()(double, double)' to binary `operator/' 
Код следующий:
Код

double DinVyaz (double P, double T){
       int N=5;int K=4;
       double b[5][4];
             
b[0][0]= 0.501938;  b[0][1]= 0.235622;  b[0][2]= -0.274637; b[0][3]= 0.145831; b[0][4]= -0.0270448;
b[1][0]= 0.162888;  b[1][1]= 0.789393;  b[1][2]= -0.743539; b[1][3]= 0.263129; b[1][4]= -0.0253093;
b[2][0]= -0.130356; b[2][1]= 0.673665;  b[2][2]= -0.959456; b[2][3]= 0.347247; b[2][4]= -0.0267758;
b[3][0]= 0.907919;  b[3][1]= 1.207552;  b[3][2]= -0.687343; b[3][3]= 0.213486; b[3][4]= -0.0822904;
b[4][0]= -0.551119; b[4][1]= 0.0670665; b[4][2]= -0.497089; b[4][3]= 0.100754; b[4][4]= 0.0602253;
b[5][0]= 0.146543;  b[5][1]= -0.0843370;b[5][2]= 0.195286;  b[5][3]= -0.032932;b[5][4]= -0.0202595;

double ro1=317.763; 
double T1=647.27; 
double a0=0.0181583; 
double a1=0.0177624;
double a2=0.0105287;
double a3=-0.0036744;

  double myu0= pow(T/T1,0.5)*1/(a0+a1*T1/T+a2*T1*T1/T/T+a3*pow(T1/T,3));

double s1=0;
double s2=0;

          for (int i=0;N;i++){
              s1+= s2;
              
                   for (int j=0;K;j++){
                       s2 += pow(T1/T-1,i)*pow(1/V1PT/ro1-1,j)*b[i][j];
                                               }
                      
                                      }
   double Myu= myu0*pow(2.718, s1/V1PT/ro1);

return Myu;}

Не пойму толком что ему не нравится. Толи он не хочет переменные с разными типами перемножать (int*double), толи... на этом сломалась голова... smile 
PM MAIL   Вверх
azesmcar
Дата 27.11.2009, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(Langaru @  27.11.2009,  13:22 Найти цитируемый пост)
на этом сломалась голова

В таком коде сам черт ногу сломит, неудивительно что голова сломалась smile 


Цитата(Langaru @  27.11.2009,  13:22 Найти цитируемый пост)
Наткнулся еще на 1 ошибку - invalid operands of types `int' and `double ()(double, double)' to binary `operator/' 
                                               - invalid operands of types `double' and `double ()(double, double)' to binary `operator/' 

Какой компилятор, на какой строке ошибка? Кто такой V1PT?


Это сообщение отредактировал(а) azesmcar - 27.11.2009, 13:27
PM   Вверх
Langaru
Дата 27.11.2009, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 2.9.2009

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



Цитата

В таком коде сам черт ногу сломит, неудивительно что голова сломалась 

Ну уж извините, пока только учусь smile 
Цитата

Какой компилятор, на какой строке ошибка? Кто такой V1PT?

Dev-C++ 4.9.9.2. Ошибки на строках:
Код

s2 += pow(T1/T-1,i)*pow(1/V1PT/ro1-1,j)*b[i][j];

и
Код

double Myu= myu0*pow(2.718, s1/V1PT/ro1);

V1PT - функция из этой же программы, не привожу ее, т.к. работает корректно и большая по объему.
PM MAIL   Вверх
bsa
Дата 27.11.2009, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Langaru, почитай Часто задаваемые вопросы. И начни с "Оформление кода".
PM   Вверх
azesmcar
Дата 27.11.2009, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(Langaru @  27.11.2009,  13:38 Найти цитируемый пост)
Dev-C++ 4.9.9.2. Ошибки на строках:

Это не компилятор, это среда разработки, но компилятор скорее всего gcc.

Цитата(Langaru @  27.11.2009,  13:38 Найти цитируемый пост)
V1PT - функция из этой же программы, не привожу ее, т.к. работает корректно и большая по объему. 

функция? smile 
а где ВЫЗОВ функции? smile

Цитата(Langaru @  27.11.2009,  13:38 Найти цитируемый пост)
Ну уж извините, пока только учусь smile 

не имеет значения, красиво оформлять код надо всегда, а то потом в привычку войдет. Строго следи за чистотой и аккуратностью кода ВСЕГДА.

Это сообщение отредактировал(а) azesmcar - 27.11.2009, 13:50
PM   Вверх
Langaru
Дата 27.11.2009, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 2.9.2009

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



Цитата

функция?  
а где ВЫЗОВ функции?  

Спасибо! Именно вызова и не было, видимо это и не нравилось компилятору - теперь все работает smile 

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 589
Регистрация: 28.2.2009

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



В инициализации массива ошибка: индексы выходят за пределы. И что такое V1PT, в функции объявления не нашёл. Математические формулы можно было бы и упростить, если есть a*1/b, то не проще ли записать a/b
PM MAIL ICQ   Вверх
Langaru
Дата 27.11.2009, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 2.9.2009

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



Цитата

В инициализации массива ошибка: индексы выходят за пределы.

Что именно не правильно и как должно быть?
Рано обрадовался - теперь при выполнении вылезает ошибка: память не может быть "read".

Это сообщение отредактировал(а) Langaru - 27.11.2009, 14:03
PM MAIL   Вверх
Albor
Дата 27.11.2009, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 589
Регистрация: 28.2.2009

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



массив объявлен 5х4, то есть 20 элементов, а инициализируется 30 элемента

Это сообщение отредактировал(а) Albor - 27.11.2009, 14:02
PM MAIL ICQ   Вверх
bsa
Дата 27.11.2009, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Код
          for (int i=0;N;i++){
              s1+= s2;
              
                   for (int j=0;K;j++){
                       s2 += pow(T1/T-1,i)*pow(1/V1PT/ro1-1,j)*b[i][j];
                                               }
                      
                                      }
Это бесконечный цикл... Почему? Почитай описание оператора for().
PM   Вверх
Albor
Дата 27.11.2009, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 589
Регистрация: 28.2.2009

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



Цитата(Langaru @  27.11.2009,  14:00 Найти цитируемый пост)
Что именно не правильно и как должно быть?
Рано обрадовался - теперь при выполнении вылезает ошибка: память не может быть "read".

Из-за этого и вылезает ошибка. Объявляй массив 6х5 и не забывай, что 0 в индексе тоже считается.
PM MAIL ICQ   Вверх
Langaru
Дата 27.11.2009, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 2.9.2009

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



Цитата

Из-за этого и вылезает ошибка. Объявляй массив 6х5 и не забывай, что 0 в индексе тоже считается

Изменил на double b[6][5].
Цитата

Это бесконечный цикл... Почему? Почитай описание оператора for(). 

Прочитал, исправил на while
Код

double s1=0;
int i=0;
double s2=0;
int j=0;

          while (i<N){
              s1+= s2;
              
                   while (j<K){
                       s2 += pow(T1/T-1,i)*pow(1/V1PT(P,T)/ro1-1,j)*b[i][j];
                       j++;
                                      }
              i++;
                      
                              }
   double Myu= myu0*pow(2.718, s1/V1PT(P,T)/ro1);

ошибка изменилась- теперь: память не может быть"write" - чего он записать не могет?
PM MAIL   Вверх
Albor
Дата 27.11.2009, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 589
Регистрация: 28.2.2009

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



Цитата(Langaru @  27.11.2009,  14:18 Найти цитируемый пост)
Изменил на double b[6][5].

N и K тоже поменял?
Вообще то, лучше было сделать так:
Код

const int N(6);
const int K(5);
b[N][K];

PM MAIL ICQ   Вверх
bsa
Дата 27.11.2009, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(Albor @  27.11.2009,  14:25 Найти цитируемый пост)
Вообще то, лучше было сделать так
Не лучше, так как не очень очевидно и в си работать, думаю, не будет. Лучше так:
Код
const int N = 6;
const int K = 5;


PM   Вверх
Langaru
Дата 27.11.2009, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 2.9.2009

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



Цитата

Вообще то, лучше было сделать так:

Согласен, только:
Код

const int N(6);
const int K(5);
double b[N][K];

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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