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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2007, 20:45   #1
molodzo
Пользователь
 
Регистрация: 19.11.2007
Сообщений: 10
По умолчанию Помогите доделать задачу на класс

Помогите, пожалуйста, сделать хотя бы один из нижеперечисленных вопросов.

Нужно создать класс для работы с длинными числами(сложение, деление и т.д.). Класс-то я создал, а вот как сделать эти вопросы, не знаю.
Нужно:
1) определить операции ввода/вывода
2) для класса определить оператор присваивания и конструктор копирования
3) класс должен быть инициализирован целым числом - int(конструктор)
molodzo вне форума Ответить с цитированием
Старый 19.11.2007, 21:35   #2
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

Ну и где тот самый класс???? Или Вы с самого начала нам предлагаете сделать ВАШИ задачи????
merax вне форума Ответить с цитированием
Старый 20.11.2007, 09:31   #3
molodzo
Пользователь
 
Регистрация: 19.11.2007
Сообщений: 10
По умолчанию Carbon: А теги code Дед Мороз будет ставить?

Вот:
Код:
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <fstream.h>


class GlavClass
{
   public:

      int n, p;
      int *a,*b,*c;

      GlavClass() // constructor
      {
      // dinamicheski videlennay pamyat' pod massivi
	 a = new int[700];
         b = new int[700];      
	 c = new int[700];
      } 

      ~GlavClass() // destructor
      {
	 cout << "\n Delete...";
	 delete[] a;
	 delete[] b;
	 delete[] c;
         cout << "Ok";
      } 

      // function
      void input();
      void max(int,int);
      void done_1(int,int,int);
      void done_2(int,int);
      void done_3(int,int);
      void output(int,int);
};


fstream f("C:/borlandc/f.txt", ios::app | ios::out);  // icpolzovat' file dlya chteniya i zapici



// vvod chisel

void GlavClass::input()
{
   char *Temp, s[700];
   int i, j, len_1, len_2, pos;


   cout<<"1 - vichitane; 2 - slogenie; 3 - ymnogenie: \n";
   cin>>n;
   cout<<endl;

   // zapolnyaem nachalnoe znachenie massiva nylem
   memset( a, 0, 700*sizeof(int) );       
   memset( b, 0, 700*sizeof(int) ); 
   memset( c, 0, 700*sizeof(int) );

   cout<<"Vvedite 1-e chislo ";
   cin>>s;
   f<<"Pervoe chislo = ";
   f<<s<<endl;
   len_1=strlen(s);
   i=len_1-1;
   Temp="";
   pos=0;
   while (i>=0)
   {
      *Temp=s[i];
      a[pos]=atoi(Temp);
      pos++;
      i--;
   }

   cout<<"Vvedite 2-e chislo ";
   cin>>s;
   f<<"Vtoroe chislo = ";
   f<<s<<endl;
   len_2=strlen(s);
   i=len_2-1;
   Temp="";
   pos=0;
   while (i>=0)
   {
      *Temp=s[i];
      b[pos]=atoi(Temp);
      pos++;
      i--;
   }
   max(len_1, len_2);
}


// poisk naibolchego chisla

void GlavClass::max(int len_1, int len_2)
{
   int i;

   if (len_1>len_2)
   {
      p=1;
      if (n==1) done_1(len_1, len_2, p);
      if (n==2) done_2(len_1, len_2);
      if (n==3) done_3(len_1, len_2);
      return;
   }
   if (len_1<len_2)
   {
      p=2;
      if (n==1) done_1(len_1, len_2, p);
      if (n==2) done_2(len_1, len_2);
      if (n==3) done_3(len_1, len_2);
      return;
   }
   p=1;
   for (i=len_1-1; i>=0; i--)
   {
      if (a[i]<b[i])
      {
	 if (n==1) { p=1; done_1(len_1, len_2, p); }
	 if (n==2)
	 {
	    if (a[i]<0)
	       { p=2; done_2(len_1, len_2); }
	    else { p=1; done_2(len_1, len_2); }

	 }
	 if (n==3)
	 {
	    if (a[i]<0)
	       { p=2; done_3(len_1, len_2); }
	    else { p=1; done_3(len_1, len_2); }
         }
	 return;
      }
      if (a[i]>b[i])
      {
         if (n==1) done_1(len_1, len_2, p);
	 if (n==2) done_2(len_1, len_2);
	 if (n==3) done_3(len_1, len_2);
	 return;
      }
   }
      if (n==1) done_1(len_1, len_2, p);
      if (n==2) done_2(len_1, len_2);
      if (n==3) done_3(len_1, len_2);
   return;
}


// vichitanie chisel

void GlavClass::done_1(int len_1, int len_2, int p)
{
   int i, w, k;
   if (len_1>len_2) k=len_1; else k=len_2;
   if (p==2)
   for (i=0; i<k; i++)
   {
      w=a[i];
      a[i]=b[i];
      b[i]=w;
   }
   for (i=0; i<k; i++)
   {
      c[i]=a[i]-b[i]+c[i];
      if (c[i]<0)
      {
	 c[i+1]-=1;
         c[i]+=10;
      }
   }
   output(k,p);
}




// slogenie chisel

void GlavClass::done_2(int len_1, int len_2)
{
   int i,k;
   if (len_1>len_2) k=len_1; else k=len_2;
   for (i=0; i<k; i++)
   {
      c[i]=a[i]+b[i]+c[i];
      if (c[i]>9)
      {
	 c[i+1]+=(c[i]/10);
         c[i]%=10;
      }
   }
   output(k,p);
}


// ymnogenie chisel

void GlavClass::done_3(int len_1, int len_2)
{
   int i,k,j;
   if (len_1>len_2) k=len_1; else k=len_2;
   for(i=0; i<len_1; i++)
      for(j=0; j<len_2; j++)
      {
	 c[i+j]=c[i+j]+a[i]*b[j];
	 if (c[i+j]>9)
	 {
	    c[i+j+1]+=(c[i+j]/10);
            c[i+j]%=10;
         }
      }
   output(k,p);
}


// vivod resultata

void GlavClass::output(int k, int p)
{
   int i,h;
   while (c[k]==0 && k>0) k--;
   if (p==2) cout<<"-";
   f<<"Resultat = ";
   for (i=k; i>=0; i--)
   {
      cout<<c[i];
      f<<c[i];
   }
   for (h=0; h<=3; h++) f<<endl;
   getch();
   return;
}



int main()
{
   GlavClass NewOb;
   NewOb.input();
}

Последний раз редактировалось Carbon; 20.11.2007 в 18:30.
molodzo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите, пожалуйста доделать одну задачу! Максон Помощь студентам 2 25.06.2008 09:00
помогите доделать задачу motaro Фриланс 3 09.06.2008 19:59
Помогите доделать задачу!!!! Vincenzo Паскаль, Turbo Pascal, PascalABC.NET 4 11.05.2008 09:35
помогите доделать задачу по массиву braza Паскаль, Turbo Pascal, PascalABC.NET 7 06.05.2008 09:37
помогите доделать(исправить) задачу по массиву braza Паскаль, Turbo Pascal, PascalABC.NET 2 29.04.2008 19:54