Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
Sasuke-sama
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 33
#1

Массивы (Матрицы) - C++

29.05.2009, 10:05. Просмотров 1749. Ответов 13
Метки нет (Все метки)

Общая постановка. Составить программы - одномерные массивы: задания 1-25. Массивы создаются в динамической области памяти с использованием операций NEW и DELETE. Ввод исходных данных: реальный размер массивов и их значения. Обращение к элементам массива – через косвенную адресацию.
Заданы два массива А(5) и В(5). Подсчитать в них количество элементов, больших значения t и первым на печать вывести массив, имеющий наименьшее их количество.
Подскажите Пожалуйста как это сделать! а то я дуб и даже не знаю с чего начать
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2009, 10:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Массивы (Матрицы) (C++):

Ошибка при вводе разного кол-ва строк и столбцов в матрицы. Динамич. матрицы/массивы - C++
Дана матрица, размерность вводит пользователь, данные тоже. Осуществить сортировку вставками, массива, который будет получен из суммы...

Массивы и матрицы - C++
Добрый день,уважаемые программисты! Направьте на путь истинный! Перемножить матрицу Аij i=n, j=k на матрицу Вij (j=k , l=n ) Найти...

массивы и матрицы - C++
1)Дано вещественное число R и массив размера n. Найти два элемента массива, сумма которых наименее близка к данному числу R. 2) Дан...

Массивы и матрицы - C++
здраствуйте дорогие программисты !!!помогите решить одну из этих какую нибудь задачу: 1)Упорядочить элементы массива (Х1,Х2,...,Х50),...

массивы и матрицы - C++
просмотрел темы, ну все дела:"срочно, горю и т.п.")))) к зачету по информатике нужно вот эти вот задачки... Желательно на borland c++....

массивы и матрицы - C++
Помогите пожалуйста решить 2 задачи!Не очень дружу с программированием,поэтому приходится просить помощи у вас. 1)Дан одномерный...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Rififi
2359 / 1054 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
29.05.2009, 10:15 #2
даже не знаю с чего начать
Тогда наверное с этого...
http://www.helloworld.ru/texts/comp/lang/c/c6/index.htm
Sasuke-sama
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 33
29.05.2009, 10:23  [ТС] #3
Не как задать одномерный массивы, который создаётся в динамической области памяти с использованием операций NEW и DELETE??
MrAndrey_ka
77 / 77 / 2
Регистрация: 13.05.2009
Сообщений: 536
Записей в блоге: 1
29.05.2009, 10:28 #4
берешь любой самоучитель и читаешь, там все написано, либо спроси у гугла он тоже знает
Sasuke-sama
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 33
29.05.2009, 17:33  [ТС] #5
Код
#ifndef            MATRIX_CPP
#define            MATRIX_CPP

#include           <assert.h>
#include           <iostream.h>


template<class TYPE>
class TMatrix
{
   friend TMatrix  operator+    (TYPE, TMatrix &); //ñëîæåíèå ñî ñêàëÿðîì
   friend TMatrix  operator-    (TYPE, TMatrix &); //âû÷èòàíèå ñî ñêàëÿðîì
   friend TMatrix  operator*    (TYPE, TMatrix &); //óìíîæåíèå íà ñêàëÿð
   friend istream& operator>>   (istream &, TMatrix &); //ââîä ìàòðèöû
   friend ostream& operator<<   (ostream &, TMatrix &); //âûâîä ìàòðèöû
public:
   TMatrix                      ();                //êîíñòðóêòîð ïî óìîë÷àíèþ
   TMatrix                      (TMatrix &);       //êîíñòðóêòîð êîïèðîâàíèÿ
   TMatrix                      (int, int);        //êîíñòðóêòîð ñ çàäàíèåì
						   //ðàçìåðà
   ~TMatrix                     ();                //äåñòðóêòîð
   void            init         (TYPE c);          //èíèöèàëèçàöèÿ ÷èñëîì
   void            initStat     (TYPE *p, int, int);//èíèöèàëèç. ñòàòè÷.
						    //ìàññèâîì
   void            initDynam    (TYPE **p, int, int);//èíèöèàëèç. äèíàìè÷.
						   //ìàññèâîì
   void            setSize      (int, int);        //óñòàíîâêà ðàçìåðà
   int             getSizeRow   ();                //êîë-âî ñòðîê
   int             getSizeCol   ();                //êîë-âî ñòîëáöîâ
   TYPE &          operator()   (int, int);        //ýëåìåíò ìàòðèöû
   TYPE &          operator[]   (int);             //ýëåìåíò
						   //ìàòðèöû-âåêòîðà
   TMatrix &       operator=    (TMatrix &);       //ïðèñâàèâàíèå
   TMatrix         getRow       (int);             //ñòðîêà
   TMatrix         getCol       (int);             //ñòîëáåö
   void            setRow       (int, TMatrix &);  //çàäàòü ñòðîêó
   void            setCol       (int, TMatrix &);  //çàäàòü ñòîëáåö
   TMatrix         getPart      (int, int, int, int); //ïîëó÷èòü ÷àñòü
   void            setPart      (int, int, TMatrix &); //çàäàòü ÷àñòü
   void            swapRow      (int, int);        //îáìåí ñòðîê
   void            swapCol      (int, int);        //îáìåí ñòîëáöîâ
   TMatrix         operator+    (TMatrix &);       //ñëîæåíèå ìàòðèö
   TMatrix         operator-    (TMatrix &);       //âû÷èòàíèå ìàòðèö
   TMatrix         operator*    (TMatrix &);       //óìíîæåíèå ìàòðèö
   TMatrix         operator^    (TMatrix &);       //óìíîæåíèå ìàòðèö
						   //(ïåðåìíîæåíèå
						   //ñîîòâåòñòâóþùèõ
						   //ýëåìåíòîâ)
   TMatrix &       operator+=   (TMatrix &);       //ïðèñâàèâàíèÿ
   TMatrix &       operator-=   (TMatrix &);
   TMatrix &       operator*=   (TMatrix &);
   TMatrix &       operator^=   (TMatrix &);
   TMatrix         getTranspose ();                //òðàíñïîíèðîâàíèå
   TMatrix &       setSingle    (int n);           //ñäåëàòü åäèíè÷íîé
   TMatrix         operator+    (TYPE);            //îïåðàöèè ñî ñêàëÿðàìè
   TMatrix         operator-    (TYPE);
   TMatrix         operator*    (TYPE);
   TMatrix         operator/    (TYPE);
   TMatrix &       operator+=   (TYPE);
   TMatrix &       operator-=   (TYPE);
   TMatrix &       operator*=   (TYPE);
   TMatrix &       operator/=   (TYPE);
   TMatrix         operator-    ();
   TYPE            operator%    (TMatrix &);       //ñêàëÿðíîå óìíîæåíèå äëÿ
						   //ìàòðèö-âåêòîðîâ
   int             readSize     (istream &);       //÷òåíèå ðàçìåðîâ
   int             readArray    (istream &);       //÷òåíèå ìàññèâà
   int             writeSize    (ostream &);       //çàïèñü ðàçìåðîâ
   int             writeArray   (ostream &);       //çàïèñü ìàññèâà
private:
   TYPE **         array;                          //ýëåìåíòû ìàòðèöû
   int             sizeRow;                        //êîë-âî ñòðîê
   int             sizeCol;                        //êîë-âî ñòîëáöîâ
   void            error        (int);             //ñîîáùåíèå îá îøèáêå
};

template<class TYPE>
TMatrix<TYPE>::TMatrix()
{
   array=NULL;
   sizeRow=0;
   sizeCol=0;
}


template<class TYPE>
TMatrix<TYPE>::TMatrix(TMatrix<TYPE> &m)
{
   array=NULL;
   sizeRow=0;
   sizeCol=0;

   if(m.sizeRow>0 && m.sizeCol>0)
   {
      sizeRow=m.sizeRow;
      sizeCol=m.sizeCol;

      array=new TYPE*[sizeRow];
      assert(array!=NULL);

      for(int i=0; i<sizeRow; i++)
      {
	 array[i]=new TYPE[sizeCol];
	 assert(array[i]!=NULL);
      }

      for(i=0; i<sizeRow; i++)
      {
	 for(int j=0; j<sizeCol; j++)
	 {
	    array[i][j]=m.array[i][j];
	 }
      }
   }
   else
   {
      error(1);
   }
}


template<class TYPE>
TMatrix<TYPE>::TMatrix(int row, int col)
{
   array=NULL;
   sizeRow=0;
   sizeCol=0;

   if(row>0 && col>0)
   {
      sizeRow=row;
      sizeCol=col;

      array=new TYPE*[sizeRow];
      assert(array!=NULL);

      for(int i=0; i<sizeRow; i++)
      {
	 array[i]=new TYPE[sizeCol];
	 assert(array[i]!=NULL);
      }
   }
   else
   {
      error(2);
   }
}


template<class TYPE>
TMatrix<TYPE>::~TMatrix()
{
   if(array!=NULL)
   {
      for(int i=0; i<sizeRow; i++)
      {
	 if(array[i]!=NULL)
	 {
	    delete [] array[i];
	 }
      }

      delete [] array;
   }
}


template<class TYPE>
TMatrix<TYPE> &TMatrix<TYPE>::operator=(TMatrix<TYPE> &m)
{
   if(this!=&m)
   {
      if(sizeRow==0 && sizeCol==0)
      {
	 sizeRow=m.sizeRow;
	 sizeCol=m.sizeCol;

	 array=new TYPE*[sizeRow];
	 assert(array!=NULL);

	 for(int i=0; i<sizeRow; i++)
	 {
	    array[i]=new TYPE[sizeCol];
	    assert(array[i]!=NULL);
	 }
      }

      if(sizeRow==m.sizeRow && sizeCol==m.sizeCol)
      {
	 for(int i=0; i<sizeRow; i++)
	 {
	    for(int j=0; j<sizeCol; j++)
	    {
	       array[i][j]=m.array[i][j];
	    }
	 }
      }
      else
      {
	 error(3);
      }
   }

   return *this;
}


template<class TYPE>
TYPE & TMatrix<TYPE>::operator()(int row, int col)
{
   if(row>0 && row<=sizeRow && col>0 && col<=sizeCol)
   {
      return array[row-1][col-1];
   }
   else
   {
      error(4);
      return array[0][0];
   }
}


template<class TYPE>
TYPE & TMatrix<TYPE>::operator[](int k)
{
   if(sizeRow==1 && k>0 && k<=sizeCol)
   {
      return array[0][k-1];
   }
   else
   {
      if(sizeCol==1 && k>0 && k<=sizeRow)
      {
	  return array[k-1][0];
      }
      else
      {
	 error(5);
	 return array[0][0];
      }
   }
}


template<class TYPE>
int TMatrix<TYPE>::getSizeRow()
{
   return sizeRow;
}


template<class TYPE>
int TMatrix<TYPE>::getSizeCol()
{
   return sizeCol;
}


template<class TYPE>
void TMatrix<TYPE>::setSize(int row, int col)
{
   if(row==0 && col==0)
   {
      if(array!=NULL)
      {
	 for(int i=0; i<sizeRow; i++)
	 {
	    if(array[i]!=NULL)
	    {
	       delete [] array[i];
	    }
	 }

	 delete [] array;
	 array=NULL;
      }

      sizeRow=0;
      sizeCol=0;

      return;
   }

   if(row>0 && col>0)
   {
      if(array!=NULL)
      {
	 for(int i=0; i<sizeRow; i++)
	 {
	    if(array[i]!=NULL)
	    {
	       delete [] array[i];
	    }
	 }

	 delete [] array;
      }

      sizeRow=row;
      sizeCol=col;

      array=new TYPE*[sizeRow];
      assert(array!=NULL);

      for(int i=0; i<sizeRow; i++)
      {
	 array[i]=new TYPE[sizeCol];
	 assert(array[i]!=NULL);
      }
   }
   else
   {
      error(6);
   }
}


template<class TYPE>
TMatrix<TYPE> TMatrix<TYPE>::operator+(TMatrix<TYPE> &m)
{
   TMatrix t_m(sizeRow, sizeCol);

   if(sizeRow==m.sizeRow&&sizeCol==m.sizeCol)
   {
      for(int i=0; i<sizeRow; i++)
      {
	 for(int j=0; j<sizeCol; j++)
	 {
	    t_m.array[i][j]=array[i][j]+m.array[i][j];
	 }
      }
   }
   else
   {
      error(7);
   }

   return t_m;
}


template<class TYPE>
TMatrix<TYPE> TMatrix<TYPE>::operator-(TMatrix<TYPE> &m)
{
   TMatrix t_m(sizeRow, sizeCol);

   if(sizeRow==m.sizeRow&&sizeCol==m.sizeCol)
   {
      for(int i=0; i<sizeRow; i++)
      {
	 for(int j=0; j<sizeCol; j++)
	 {
	    t_m.array[i][j]=array[i][j]-m.array[i][j];
	 }
      }
   }
   else
   {
      error(8);
   }

   return t_m;
}


template<class TYPE>
TMatrix<TYPE> TMatrix<TYPE>::operator*(TMatrix<TYPE> &m)
{
   TMatrix t_m(sizeRow, m.sizeCol);

   if(sizeCol==m.sizeRow)
   {
      for(int i=0; i<t_m.sizeRow; i++)
      {
	 for(int j=0; j<t_m.sizeCol; j++)
	 {
	    TYPE sum=0;

	    for(int k=0; k<sizeCol; k++)
	    {
	       sum+=array[i][k]*m.array[k][j];
	    }

	    t_m.array[i][j]=sum;
	 }
      }
   }
   else
   {
      error(9);
   }

   return t_m;
}


template<class TYPE>
TMatrix<TYPE> TMatrix<TYPE>::operator^(TMatrix<TYPE> &m)
{
   TMatrix t_m(sizeRow, sizeCol);

   if(sizeRow==m.sizeRow&&sizeCol==m.sizeCol)
   {
      for(int i=0; i<sizeRow; i++)
      {
	 for(int j=0; j<sizeCol; j++)
	 {
	    t_m.array[i][j]=array[i][j]*m.array[i][j];
	 }
      }
   }
   else
   {
      error(10);
   }

   return t_m;
}


template<class TYPE>
TMatrix<TYPE> &TMatrix<TYPE>::operator+=(TMatrix<TYPE> &m)
{
   if(sizeRow==m.sizeRow&&sizeCol==m.sizeCol)
   {
      for(int i=0; i<sizeRow; i++)
      {
	 for(int j=0; j<sizeCol; j++)
	 {
	    array[i][j]+=m.array[i][j];
	 }
      }
   }
   else
   {
      error(11);
   }

   return *this;
}


template<class TYPE>
TMatrix<TYPE> &TMatrix<TYPE>::operator-=(TMatrix<TYPE> &m)
{
   if(sizeRow==m.sizeRow&&sizeCol==m.sizeCol)
   {
      for(int i=0; i<sizeRow; i++)
      {
	 for(int j=0; j<sizeCol; j++)
	 {
	    array[i][j]-=m.array[i][j];
	 }
      }
   }
   else
   {
      error(12);
   }

   return *this;
}


template<class TYPE>
TMatrix<TYPE> & TMatrix<TYPE>::operator*=(TMatrix<TYPE> &m)
{
   TMatrix t_m(sizeRow, m.sizeCol);

   if(sizeCol==m.sizeRow)
   {
      for(int i=0; i<t_m.sizeRow; i++)
      {
	 for(int j=0; j<t_m.sizeCol; j++)
	 {
	    TYPE sum=0;

	    for(int k=0; k<sizeCol; k++)
	    {
	       sum+=array[i][k]*m.array[k][j];
	    }

	    t_m.array[i][j]=sum;
	 }
      }

      *this=t_m;
   }
   else
   {
      error(29);
   }

   return *this;
}


template<class TYPE>
TMatrix<TYPE> &TMatrix<TYPE>::operator^=(TMatrix<TYPE> &m)
{
   if(sizeRow==m.sizeRow&&sizeCol==m.sizeCol)
   {
      for(int i=0; i<sizeRow; i++)
      {
	 for(int j=0; j<sizeCol; j++)
	 {
	    array[i][j]*=m.array[i][j];
	 }
      }
   }
   else
   {
      error(13);
   }

   return *this;
}


template<class TYPE>
TMatrix<TYPE> TMatrix<TYPE>::getTranspose()
{
   TMatrix<TYPE> new_m(sizeCol, sizeRow);

   for(int i=0; i<sizeRow; i++)
   {
      for(int j=0; j<sizeCol; j++)
      {
	 new_m.array[j][i]=array[i][j];
      }
   }

   return new_m;
}


template<class TYPE>
TMatrix<TYPE> TMatrix<TYPE>::operator+(TYPE c)
{
   TMatrix<TYPE> t_m(*this);

   if(sizeRow==sizeCol)
   {
      for(int i=0; i<sizeRow; i++)
      {
	 t_m.array[i][i]+=c;
      }
   }
   else
   {
      error(14);
   }

   return t_m;
}


template<class TYPE>
TMatrix<TYPE> TMatrix<TYPE>::operator-(TYPE c)
{
   TMatrix<TYPE> t_m(*this);

   if(sizeRow==sizeCol)
   {
      for(int i=0; i<sizeRow; i++)
      {
	 t_m.array[i][i]-=c;
      }
   }
   else
   {
      error(15);
   }

   return t_m;
}


template<class TYPE>
TMatrix<TYPE> TMatrix<TYPE>::operator*(TYPE c)
{
   TMatrix<TYPE> t_m(sizeRow, sizeCol);

   for(int i=0; i<sizeRow; i++)
   {
      for(int j=0; j<sizeCol; j++)
      {
	 t_m.array[i][j]=array[i][j]*c;
      }
   }

   return t_m;
}


template<class TYPE>
TMatrix<TYPE> TMatrix<TYPE>::operator/(TYPE c)
{
   TMatrix<TYPE> t_m(sizeRow, sizeCol);

   for(int i=0; i<sizeRow; i++)
   {
      for(int j=0; j<sizeCol; j++)
      {
	 t_m.array[i][j]=array[i][j]/c;
      }
   }

   return t_m;
}


template<class TYPE>
TMatrix<TYPE> &TMatrix<TYPE>::operator+=(TYPE c)
{
   if(sizeRow==sizeCol)
   {
      for(int i=0; i<sizeRow; i++)
      {
	 array[i][i]+=c;
      }
   }
   else
   {
      error(16);
   }

   return *this;
}


template<class TYPE>
TMatrix<TYPE> &TMatrix<TYPE>::operator-=(TYPE c)
{
   if(sizeRow==sizeCol)
   {
      for(int i=0; i<sizeRow; i++)
      {
	 array[i][i]-=c;
      }
   }
   else
   {
      error(17);
   }

   return *this;
}


template<class TYPE>
TMatrix<TYPE> &TMatrix<TYPE>::operator*=(TYPE c)
{
   for(int i=0; i<sizeRow; i++)
   {
      for(int j=0; j<sizeCol; j++)
      {
	 array[i][j]*=c;
      }
   }

   return *this;
}


template<class TYPE>
TMatrix<TYPE> &TMatrix<TYPE>::operator/=(TYPE c)
{
   for(int i=0; i<sizeRow; i++)
   {
      for(int j=0; j<sizeCol; j++)
      {
	 array[i][j]/=c;
      }
   }

   return *this;
}


template<class TYPE>
TMatrix<TYPE> TMatrix<TYPE>::getRow(int row)
{
   TMatrix<TYPE> t_m(1, sizeCol);

   if(row>0 && row<=sizeRow)
   {
      for(int i=0; i<sizeCol; i++)
      {
	 t_m.array[0][i]=array[row-1][i];
      }
   }
   else
   {
      error(18);
   }

   return t_m;
}


template<class TYPE>
TMatrix<TYPE> TMatrix<TYPE>::getCol(int col)
{
   TMatrix<TYPE> t_m(sizeRow, 1);

   if(col>0 && col<=sizeCol)
   {
      for(int i=0; i<sizeRow; i++)
      {
	 t_m.array[i][0]=array[i][col-1];
      }
   }
   else
   {
      error(19);
   }

   return t_m;
}


template<class TYPE>
TMatrix<TYPE> TMatrix<TYPE>::getPart(int i1, int j1, int m, int n)
{
   TMatrix<TYPE> res(m,n);

   if(i1>0 && i1<=sizeRow && j1>0 && j1<=sizeCol &&
      m>0 && i1+m<=sizeRow+1 && n>0 && j1+n<=sizeCol+1)
   {
      for(int i=0, i2=i1-1; i<m; i++, i2++)
      {
	 for(int j=0, j2=j1-1; j<n; j++, j2++)
	 {
	    res.array[i][j]=array[i2][j2];
	 }
      }
   }
   else
   {
      error(20);
   }

   return res;
}


template<class TYPE>
void TMatrix<TYPE>::setPart(int i1, int j1, TMatrix<TYPE> &t)
{
   int m=t.getSizeRow(), n=t.getSizeCol();

   if(i1>0 && i1<=sizeRow && j1>0 && j1<=sizeCol &&
      m>0 && i1+m<=sizeRow+1 && n>0 && j1+n<=sizeCol+1)
   {
      for(int i=0, i2=i1-1; i<m; i++, i2++)
      {
	 for(int j=0, j2=j1-1; j<n; j++, j2++)
	 {
	    array[i2][j2]=t.array[i][j];
	 }
      }
   }
   else
   {
      error(21);
   }
}


template<class TYPE>
void TMatrix<TYPE>::swapRow(int i1, int i2)
{
   if(i1>0 && i1<=sizeRow && i2>0 && i2<=sizeRow)
   {
      for(int j=0; j<sizeCol; j++)
      {
	 TYPE t=array[i1-1][j];
	 array[i1-1][j]=array[i2-1][j];
	 array[i2-1][j]=t;
      }
   }
   else
   {
      error(22);
   }
}


template<class TYPE>
void TMatrix<TYPE>::swapCol(int j1, int j2)
{
   if(j1>0 && j1<=sizeCol && j2>0 && j2<=sizeCol)
   {
      for(int i=0; i<sizeRow; i++)
      {
	 TYPE t=array[i][j1-1];
	 array[i][j1-1]=array[i][j2-1];
	 array[i][j2-1]=t;
      }
   }
   else
   {
      error(23);
   }
}


template<class TYPE>
TMatrix<TYPE> operator+(TYPE c, TMatrix<TYPE> &m)
{
   return m+c;
}


template<class TYPE>
TMatrix<TYPE> operator-(TYPE c, TMatrix<TYPE> &m)
{
   return m*(-1)+c;
}


template<class TYPE>
TMatrix<TYPE> operator*(TYPE c, TMatrix<TYPE> &m)
{
   return m*c;
}


template<class TYPE>
void TMatrix<TYPE>::setRow(int row_index, TMatrix<TYPE> &m)
{

   if(m.sizeRow==1 && sizeCol==m.sizeCol &&
      row_index>0 && row_index<=sizeRow)
   {
      for(int i=0; i<sizeCol; i++)
      {
	 array[row_index-1][i]=m.array[0][i];
      }
   }
   else
   {
      error(24);
   }
}


template<class TYPE>
void TMatrix<TYPE>::setCol(int col_index, TMatrix<TYPE> &m)
{
   if(sizeRow==m.sizeRow && m.sizeCol==1 &&
      col_index>0 && col_index<=sizeCol)
   {
      for(int i=0; i<sizeRow; i++)
      {
	 array[i][col_index-1]=m.array[i][0];
      }
   }
   else
   {
      error(25);
   }
}


template<class TYPE>
TYPE TMatrix<TYPE>::operator%(TMatrix<TYPE> &m)
{
   TYPE sum=0;

   if(sizeRow==m.sizeRow && sizeCol==m.sizeCol)
   {
      if(sizeRow==1)
      {
	 for(int i=0; i<sizeCol; i++)
	 {
	    sum+=array[0][i]*m.array[0][i];
	 }
      }
      else
      {
	 if(sizeCol==1)
	 {
	    for(int i=0; i<sizeRow; i++)
	    {
	       sum+=array[i][0]*m.array[i][0];
	    }
	 }
	 else
	 {
	    error(26);
	 }
      }
   }
   else
   {
      if(sizeRow==m.sizeCol && sizeCol==m.sizeRow)
      {
	 if(sizeRow==1)
	 {
	    for(int i=0; i<sizeCol; i++)
	    {
	       sum+=array[0][i]*m.array[i][0];
	    }
	 }
	 else
	 {
	    if(sizeCol==1)
	    {
	       for(int i=0; i<sizeRow; i++)
	       {
		  sum+=array[i][0]*m.array[0][i];
	       }
	    }
	    else
	    {
	       error(27);
	    }
	 }
      }
   }

   return sum;
}


template<class TYPE>
TMatrix<TYPE> TMatrix<TYPE>::operator-()
{
   return (*this)*(-1);
}


template<class TYPE>
TMatrix<TYPE> & TMatrix<TYPE>::setSingle(int n)
{
   if(n>0)
   {
      setSize(n,n);
      init(0);
      for(int i=0; i<n; i++)
      {
	 array[i][i]=1;
      }
   }
   else
   {
      error(28);
   }

   return *this;
}


template<class TYPE>
istream & operator>>(istream &in, TMatrix<TYPE> &m)
{
   m.readSize(in);
   m.readArray(in);

   return in;
}


template<class TYPE>
ostream & operator<<(ostream &out, TMatrix<TYPE> &m)
{
   m.writeSize(out);
   m.writeArray(out);

   return out;
}


template<class TYPE>
void TMatrix<TYPE>::init(TYPE c)
{
   for(int i=0; i<sizeRow; i++)
   {
      for(int j=0; j<sizeCol; j++)
      {
	 array[i][j]=c;
      }
   }
}


template<class TYPE>
void TMatrix<TYPE>::initStat(TYPE *p, int size_r, int size_c)
{
   this->setSize(size_r,size_c);

   for(int i=0; i<sizeRow; i++)
   {
      for(int j=0; j<sizeCol; j++)
      {
	 array[i][j]=p[i*size_c+j];
      }
   }
}


template<class TYPE>
void TMatrix<TYPE>::initDynam(TYPE **p, int size_r, int size_c)
{
   this->setSize(size_r,size_c);

   for(int i=0; i<sizeRow; i++)
   {
      for(int j=0; j<sizeCol; j++)
      {
	 array[i][j]=p[i][j];
      }
   }
}


template<class TYPE>
int TMatrix<TYPE>::readSize(istream &in)
{
   if(!in)
   {
      return 0;
   }

   int size1, size2;

   in>>size1>>size2;
   setSize(size1, size2);

   return 1;
}


template<class TYPE>
int TMatrix<TYPE>::readArray(istream &in)
{
   if(!in)
   {
      return 0;
   }

   for(int i=0; i<sizeRow; i++)
   {
      for(int j=0; j<sizeCol; j++)
      {
	 in>>array[i][j];
      }
   }

   return 1;
}


template<class TYPE>
int TMatrix<TYPE>::writeSize(ostream &out)
{
   if(!out)
   {
      return 0;
   }

   out<<sizeRow<<' '<<sizeCol<<endl;

   return 1;
}


template<class TYPE>
int TMatrix<TYPE>::writeArray(ostream &out)
{
   if(!out)
   {
      return 0;
   }

   for(int i=0; i<sizeRow; i++)
   {
      for(int j=0; j<sizeCol; j++)
      {
	 out.width(14);
	 out<<array[i][j];
      }
      out<<endl;
   }

   return 1;
}


template<class TYPE>
void TMatrix<TYPE>::error(int error_id)
{
   cout<<"TMatrix ERROR: #"<<error_id<<endl;
}


#endif
Что из этого выбрать шобы решить мою задачу!!!

Добавлено через 6 часов 56 минут 1 секунду
Вот как из этого:
Код
#include<iostream.h>
#include<conio.h>
#include<math.h>
class myclass  //opredeleniye klassa
{
	public:
	void set(float xx,float yy,float zz);//prototip functsii ustanovki znacheniy
	void run();  //prototip functsii vichisleniya virazheniya
	void print();//prototip f-ii vivoda na ekran
	private:
	float x,y,z,u;//znacheniya
};
//opredeleniya functsiy classa
void myclass::set(float xx,float yy,float zz)
{
	x=xx;
	y=yy;
	z=zz;
}
void myclass::run()
{
	u=pow(8+pow(fabs(x-y),2)+1,1./3.)/(x*x+y*y+2)-
	exp(fabs(x-y))*pow(pow(tan(z),2)+1,x);
}
void myclass::print()
{
	cout<<"X="<<x<<"\nY="<<y<<"\nZ="<<z<<"\nU="<<u;
}
//glavnaya programma
void main()
{
	myclass m;    //staticheskiy sposob
	clrscr();
	m.set(-4.5,0.75E-4,0.845E2); //ustanovka znacheniy
	m.run();    //vichisleniye rezultata
	m.print();  //vivod na ekran
	cout<<"\n\n";

	myclass *m1=&m; //dinamicheskiy sposob
	m1->set(-4.5,0.75E-4,0.845E2);
	m1->run();
	m1->print();
	getch();
}
Переделать в моё задание??????
insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
29.05.2009, 18:49 #6
Sasuke-sama,
Примерно такой
код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include "stdafx.h"
#include <iostream>
#include <ctime>
using namespace std;
#define n 5
 
void out(int *a);
void vin(int *a);
int poisk(int *a,int t);
void oper(int *a,int *b,int t);
 
int main(int argc, char* argv[])
{
    setlocale(0,"");
    int *A, *B,
        t;
    A = new int[n];
    B = new int[n];
    cout << "Введите число для сравнения: ";
    cin >> t;
    _flushall();
    oper(A,B,t);
    delete[]A;
    delete[]B;
    getchar();
    return 0;
}
 
void out(int *a){
    for(int i = 0;i < n;i++)
        cout << a[i] << "  ";
    cout << "\n\n";
}
void vin(int *a){
    for(int i = 0; i < n;i++)
        a[i] = rand()%101-50;
}
int poisk(int *a,int t){
    int x = 0;
    for(int i = 0;i < n;i++)
 
        if(a[i] == t)
            x++;
    return x;
}
void oper(int *a,int *b,int t){
    int x,y;
    vin(a);
    out(a);
    vin(b);
    out(b);
    x = poisk(a,t);
    y = poisk(b,t);
    if(x > y)
        out(b);else if(y > y)
        out(a);else
        cout << "В массивах такого числа нету.;)" << endl;
}

Не по теме:

Я только не пойму: зачем использовать динамическую память, если зарание известно количество элементов.

Sasuke-sama
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 33
29.05.2009, 19:29  [ТС] #7
Код
#include "stdafx.h"
Огромное Спсибо, но вот эту строчку С++ не хочет читать, что делать???

Добавлено через 53 секунды
пробовал stdafx.h заключить в <>, но всёравно не читает

Добавлено через 1 минуту 45 секунд
[/QUOTE]

Не по теме:

Я только не пойму: зачем использовать динамическую память, если зарание известно количество элементов.

[/QUOTE]
У меня такое задание и это обезательно))
ISergey
Maniac
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,653
Записей в блоге: 1
29.05.2009, 19:30 #8
Закоментируй ту строчку нафик!
Sasuke-sama
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 33
29.05.2009, 19:31  [ТС] #9
Цитата Сообщение от ISergey Посмотреть сообщение
Закоментируй ту строчку нафик!
Всмфсле????
ISergey
Maniac
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,653
Записей в блоге: 1
29.05.2009, 19:33 #10
В прямом. или удали.
C++
1
//#include "stdafx.h"
Sasuke-sama
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 33
29.05.2009, 19:51  [ТС] #11
И можно подписать где что делается, и где введены эти элементы массива???

Добавлено через 1 минуту 27 секунд
подписать в коде программы всмысле))

Добавлено через 8 минут 44 секунды
И вроде программа не считает количество элементов больше значения t
insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
29.05.2009, 19:54 #12
Sasuke-sama,
Немного ошибся.
Вот
код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "stdafx.h"
#include <iostream>
#include <ctime>//time()
using namespace std;
#define n 5//константа
//-------функции-------------------------
void out(int *a);//вывод массива
void vin(int *a);//ввод псевдослучайных чисел в массив
int poisk(int *a,int t);//поиск значений большее t
void oper(int *a,int *b,int t);//обьеденение действий
 
int main(int argc, char* argv[])
{
    setlocale(0,"");//консоль понимает русский
    int *A, *B,//массивы
        t;
    //-----динамические массивы-------------------
    A = new int[n];
    B = new int[n];
    cout << "Введите число для сравнения: ";
    cin >> t;//ввод значения t
    _flushall();
    //---вызов ф-ций----
    oper(A,B,t);
    //освобождение памяти
    delete[]A;
    delete[]B;
    getchar();
    return 0;
}
//---------------------------------------------------
void out(int *a){
    for(int i = 0;i < n;i++)
        cout << a[i] << "  ";//вывод
    cout << "\n\n";
}
//-----------------------------------------------
void vin(int *a){
    for(int i = 0; i < n;i++)
        a[i] = rand()%101-50;//ввод,диапозон от -50 до 50 
}
//-----------------------------------------------------
int poisk(int *a,int t){
    int x = 0;
    for(int i = 0;i < n;i++)
        if(a[i] > t)//находим количество элементов больше t
            x++;
    return x;
}
//-------------------------------------------------------
void oper(int *a,int *b,int t){
    int x,y;
    vin(a);
    //для наглядности я додавил вівод самих массивов - если не надо - удали строчки out(a);out(b)
    out(a);
    vin(b);
    out(b);
    //находим количество элементов больше t 
    x = poisk(a,t);
    y = poisk(b,t);
    // и сравниваем
    if(x > y)
        out(b);else if(y > y)
        out(a);else
        cout << "В массивах такого числа нету.;)" << endl;
}
с исправлением и коментами
Sasuke-sama
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 33
29.05.2009, 20:00  [ТС] #13
А как сделать штобы выводил количество элеентов больше t???(по каждому массиву)
И выводил на экран массив не с большим количеством таких переменных а с меньшим
insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
30.05.2009, 14:45 #14
Sasuke-sama,
Цитата Сообщение от Sasuke-sama Посмотреть сообщение
по каждому массиву
Выводишь значения x i y(x - количество элементов больше t в массиве А,y - количество элементов больше t в массиве В).
Цитата Сообщение от Sasuke-sama Посмотреть сообщение
а с меньшим
Оно и так выводит массив с меньшим количеством:
Цитата Сообщение от insolent Посмотреть сообщение
C++
1
2
3
4
if(x > y)            
out(b);else if(y > y)                
out(a);else                 
cout << "В массивах такого числа нету.;)" << endl;
Добавлено через 15 часов 57 минут 37 секунд
опять сорри
вместо
Цитата Сообщение от insolent Посмотреть сообщение
C++
1
2
3
4
if(x > y)
out(b);else if(y > y)                 
out(a);else                 
cout << "В массивах такого числа нету.;)" << endl;
нужно
C++
1
2
3
4
if(x > y)
out(b);else if(y > x)                 
out(a);else                 
cout << "В массивах такого числа нету.;)" << endl;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2009, 14:45
Привет! Вот еще темы с ответами:

массивы, матрицы - C++
ЛЮДИ отчисляют с палитеха помогите решить ети лабы пожалуйста!!!! задача 1 задан целочистный массив размера N. Напечатать все...

Массивы и матрицы - C++
помогите сделать эти задачки, напишите коды на языке си 1) 2) 3)

массивы и матрицы - C++
1. В одномерном целочисленном массиве из 10 элементов вычислить отдельно сумму четных и нечетных элементов, сравнить их и вывести сообщение...

массивы(матрицы) - C++
Здравствуйте.Помогите пожалуста написать код программы: текст проги:&quot;поменять местами минимальный элемент матрицы размером n x n с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.05.2009, 14:45
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru