Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
30.05.2020
Размер:
3.22 Кб
Скачать
class Matrix{
	public:
		void SumCountPrime(TStringGrid *SG, int count)
		{
		  int k=0,S=0,temp,i,j;
		  for(i=0;i<count;i++)
			for(j=0;j<count;j++)
			  if((i!=j)&&(i+j!=count-1))
				if(this->isPrime(StrToInt(SG->Cells[i][j]))==1)
				{
				  k++;
				  S+=StrToInt(SG->Cells[i][j]);
				}
		  if(k!=0)
			ShowMessage("Количество простих чисел расположенных вне диагоналей матрицы:: "+IntToStr(k)+", сума: "+IntToStr(S));
		  else
		  {
		  for(i=0;i<count;i++)
			for(j=0;j<count;j++)
			  if(i==j)
			  {
				temp=StrToInt(SG->Cells[i][j]);
				SG->Cells[i][j]=SG->Cells[count-i-1][i];
				SG->Cells[count-i-1][i]=IntToStr(temp);
			  }
			ShowMessage("В масиве нет простых чисел. Елементы главной и побочной диагоналей поменялись местами.");
		  }		
		}

		void ChangeOrder(TStringGrid *SG, int count)
		{
			  int temp,c,k=0,i,j;
			  for(i=0;i<count;i++)
				for(j=i+1;j<count;j++)
				  {
					temp=StrToInt(SG->Cells[i][j]);
					SG->Cells[i][j]=SG->Cells[j][i];
					SG->Cells[j][i]=IntToStr(temp);
				  }
			  for(j=0;j<count;j++)
			  {
				c=0;
				for(i=0;i<count-1;i++)
				{
				  if(StrToInt(SG->Cells[i][j])>StrToInt(SG->Cells[i+1][j]))
				  {
					c=1;
					break;
				  }
				}
				if(c==0)
				{
				  ShowMessage(IntToStr(j+1)+"-ая строка образует возрастающую последовательность.");
				  k++;
				}
			  }
			  if(k==0)
				ShowMessage("В полученой матрице нет строк, которые образуют возрастающую последовательность.");
		}
		
		void ColWithPrime(TStringGrid *SG, int count)
		{
		  int temp,c,k=0,S=0,i,j;
		  for(i=0;i<count;i++)
		  {
			c=0;
			for(j=0;j<count-1;j++)
			{
			  if(this->isPrime(StrToInt(SG->Cells[i][j])))
				c++;
			}
			if(c>2)
			{
			  ShowMessage("В "+IntToStr(i+1)+"-м столбце находится более двух простых чисел.");
			  k++;
			}
		  }
		  if(k==0)
			ShowMessage("В полученой матрице нет столбца, в котором находится более двух простых чисел.");
		  for(i=0;i<count;i++)
			for(j=0;j<count;j++)
			{
			  if((i==0)||(j==0)||(i==count-1)||(j==count-1))
				if(StrToInt(SG->Cells[i][j])>0)
				  S+=StrToInt(SG->Cells[i][j]);
			}
			ShowMessage("Сумма положительных элементов на периметре матрицы: "+IntToStr(S)+".");
		}
		
		void ColWithDescOrder(TStringGrid *SG, int count)
		{
		  int k=0,k1=0,c,temp,i,j;
		  for(i=0;i<count;i++)
		  {
			c=0;
			for(j=0;j<count-1;j++)
			{
			  if(StrToInt(SG->Cells[i][j])>StrToInt(SG->Cells[i][j+1]))
			  {
				c=1;
				break;
			  }
			}
			if(c==0)
			  k++;
			if((i%2!=0)&&(c!=0))
			{
			  for(int l=0;l<count;l++)
			  for(j=0;j<count-1;j++)
				if(StrToInt(SG->Cells[i][j])>StrToInt(SG->Cells[i][j+1]))
				{
				  temp=StrToInt(SG->Cells[i][j]);
				  SG->Cells[i][j]=SG->Cells[i][j+1];
				  SG->Cells[i][j+1]=IntToStr(temp);
				}
			  k1++;
			}
		  }
		  ShowMessage("Количество столбцов, упорядоченных по возрастанию: "+IntToStr(k)+".");
		  ShowMessage("Было упорядочено "+IntToStr(k1)+" столбцов.");
		}
		
	private:
		int isPrime (int value)
		{
		  if (value<=1)
			return 0;
		  for (int i=2;i<value/2+1;i++)
			if ((value%i)==0)
			  return 0;
		  return 1;
		}

};
Соседние файлы в папке Matrix
  • #
    30.05.20203.22 Кб0matrix.h
  • #
    30.05.20203.29 Кб0matrix.~h
  • #
    30.05.20203.74 Кб0MatrixProject.bpr
  • #
    30.05.20201.07 Кб0MatrixProject.cpp
  • #
    30.05.202018.44 Кб0MatrixProject.obj
  • #
    30.05.2020876 б0MatrixProject.res