Добавил:
masterdos
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Курсовая работа / Новая папка (2) / Курсовая / Matrix / matrix
.hclass 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;
}
};