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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2009, 02:05   #1
Denni$
Новичок
Джуниор
 
Регистрация: 09.06.2009
Сообщений: 2
По умолчанию не работает ф-я pow

Делаю программу в классах, (нахождение в заданной посл-ти макс по мощности подмножества, сумма элементов которого явл числом Мерсена(2^p-1)). У меня возникла проблема с работой ф-ии pow,
не работает код:

Код:
cout<<"4isla, sootvetstvuuchie formule: " ;  //Vivod formuli
double to=2;
for(j=1;j<12;j++)
   {
    A[j]=pow(to,j)-1;
    cout<< A[j]<<" ";
    }
   cout<<"\n";
   cout<<"\n"; 
//vivod formuli 
-пишет [warning]assignment, компилятор DEV-C., сначала сделал эту прогу не на классах и все работало, в чем может быть косяк?


ВЕСЬ Код программы:

Код:
#include <iostream>
#include <stdlib.h>
#include <ctime>
#include <cmath>
using namespace std;
class MyClass//открытые ф-ии
{
public://описание класса
 int a;
	int b;
	int j;
	int c;
	int k;
	int f;
	int fl;
	int sum;
	int SumPred;
	int sum0;
	int l;
	int niz;
	int verh;
	int i;
	int n;
	int x;
    void kursovaya();
    private://закрытые переменные и ц-ии
	int Error (int n1);
	 
};
//---------------------------------Error----------------------------------------
int MyClass::Error(int n1)
{
char yn;  
  if (n1>=30)
  {
cout<<"n ohen' bol'shoe chislo. Programma moget rabotat' dolgo!!!"<<endl;
cout<<"Vse ravno prodolgit'? (da<y>,net<n>): ";
cin>>yn;
    if (yn!='y')
    {
cout<<"Vvedite n eche raz: ";    
cin>>n1;
    }
  }  
while  ((n1==0))
{
    cout<<"n ne dolgno bit' ravniat'ca 0. Vvedite eche raz n: ";
   cin>>n1; 
   if (n1>=30)
  {
cout<<"n ohen' bol'shoe chislo. Programma moget rabotat' dolgo!!!"<<endl;
cout<<"Vse ravno prodolgit'? (da<y>,net<n>): ";
cin>>yn;
    if (yn!='y')
    {
cout<<"Vvedite n eche raz: ";    
cin>>n1;
    }
  }             
}     
    
 return n1;
} 
//------------------------------------------------------------------------------
void MyClass::kursovaya()
  {
    srand(time(0)); 
    cout<<"Vvedite razmer posledovatel'nosti - n: ";
    cin>>n;
    n=Error(n);
    cout << "Vvedite niznuu granicu massiva:  ";
    cin >> niz;
    cout << "Vvedite verxnuu granicu massiva:  ";
    cin >> verh;
    cout<<"\n";
    
    int Array[n];
    int A[20];
    int X[n];
    int Buf[n];
    int Buf0[n];
    int Buf1[n];
    
    cout<<"Zadannay posledovatel'nost': " ;  
    for (i=0; i<n; i++)           //генерируем посл-ть
      {
        Array[i]=verh-rand()%(verh-niz+1);
        cout<<Array[i]<<" ";
      }
          cout<<"\n";
          cout<<"\n";
  // генерируем 0 и 1 размерности n       
    for (j=0; j<=n-1; j++)
      {
        X[j]=0;
      }

cout<<"4isla, sootvetstvuuchie formule: " ;  //Vivod formuli
double to=2;
for(j=1;j<12;j++)
   {
    A[j]=pow(to,j)-1;
    cout<< A[j]<<" ";
    }
   cout<<"\n";
   cout<<"\n"; 
//vivod formuli   
 
 f=0;
 SumPred=0;
 while (f==0)
   {    
      
 //КОД ГРЕЯ   
c=0;
f=0;         
                  
   for (i=0; i<=n-1; i++)
   {
   c=c+X[i];
   }   
       if (c%2==0)
         { 
             if (X[n-1]==0)
             {
             X[n-1]=1;
             }
             else
             {
             X[n-1]=0;
             }
         }
         else
         {
         i=n-1;
             while ((i>0) && (X[i]==0))
             {
             i=i-1;
             }
               if (i>0)
               {
                  if (X[i-1]==0)
                  {
                  X[i-1]=1;
                  }
                  else
                  {
                  X[i-1]=0;
                  }
               }
               else
               {
               f=1;
               }
         }//конец кода грея


   //решение задачи
 sum=0;
 sum0=0;
 fl=0;
 for (int k=0; k<=n-1; k++)           // расчет суммы подмножеств
  {
   if (X[k]==1)
    {
     sum=sum+Array[k];
     sum0=sum0+1;
    }
   }   

   for(int v=0; v<12; v++)
   {
       if ((sum==A[v]) && (sum!=0))
       {
       fl=1;
       }
   } 

       if ((fl==1) && (sum0>SumPred))
       {
       SumPred=sum0;
         l=0;
           for (int p=0; p<=n-1; p++)
           {
              if (X[p]==1)
              {
              Buf[l]=Array[p];
              l=l+1;
              x=sum;
              }
           }
       } 
      }
//ВЫвод итога
   cout<<"\n"; 
   cout<<"Iskomay posledovatel'nost': " ;
   if (SumPred!=0)
   {
          for (i=0; i<=l-1; i++)  
          {
          cout<<Buf[i]<<" ";
          }
          cout<<"\n"; 
          cout<<"I ee summa = "<<x;
          cout<<"\n"; 
          cout<<"A ee dlina = "<<SumPred;
   }
   else
   {
   cout<<"Net ni odnoi posledov ydovletviriauchei ysloviu";
   }
  cout<<"\n";     
    cout<<"\n";          
}
 int main()
{ 
  MyClass Kursovaya;//создаем переменную Kursovaya типа MyClass
  Kursovaya.kursovaya();//выполняем kursovaya
  system("PAUSE");	
  return 0;
}

Последний раз редактировалось Sazary; 09.06.2009 в 02:16.
Denni$ вне форума Ответить с цитированием
Старый 09.06.2009, 02:19   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вот так напишите:
Код:
A[j]=(int)pow(to,j)-1;
pow возвращает float, а вы присваиваете значение целочисленной переменной.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 09.06.2009, 02:44   #3
Denni$
Новичок
Джуниор
 
Регистрация: 09.06.2009
Сообщений: 2
Радость

Спасибо за разъяснения, я понял свою ошибку, прога заработала
Denni$ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TP7 чтение из файла, работает но не работает!? Qousio Помощь студентам 7 02.06.2009 09:37
Библиотека НЕ работает с 2008, но работает с 2000 SQL namenike Общие вопросы C/C++ 0 26.05.2009 11:04
Выдаёт ошибку: acos DOMAIN error,полсе нажатия окей,ещё одну ошибку pow OWERFLAW ERROR prikolist Общие вопросы C/C++ 4 10.04.2009 20:27
Проблема с UserForm. То работает, то НЕ работает Maxx Microsoft Office Excel 6 19.11.2008 14:51
delphi pow? Happyman Помощь студентам 2 13.05.2008 19:40