помогите, пожалуйста написать программу:
НАЗОВЕМ ДОПУСТИМЫМ ПРЕОБРАЗОВАНИЕМ МАТРИЦЫ ПЕРЕСТАНОВКУ ДВУХ СОСЕДНИХ СТРОК ИЛИ ДВУХ СОСЕДНИХ СТОЛБЦОВ. ДАНА ДЕЙСТВИТЕЛЬНАЯ КВАДРАТНАЯ МАТРИЦА ПОРЯДКА N. С ПОМОЩЬЮ ДОПУСТИМЫХ ПРЕОБРАЗОВАНИЙ ДОБИТЬСЯ ТОГО, ЧТОБЫ ЭЛЕМЕНТ МАТРИЦЫ, ОБЛАДАЮЩИЙ НАИМЕНЬШИМ ЗНАЧЕНИЕМ, РАСПОЛАГАЛСЯ В ПРАВОМ НИЖНЕМ УГЛУ МАТРИЦЫ
преобразование матрицы
-
- Сообщения: 270
- Зарегистрирован: 09 янв 2010, 04:14
- Контактная информация:
Можешь начать с этого:
Код: Выделить всё
int main (int argc, char *argv[])
{
return 0;
}
Тебе надо написать две функции: функция 1 меняет местами две соседние строки, функция 2 меняет местами два соседних столбца.
Затем ты находишь номера строки и столбца минимального элемента. Применяя функцию 2, добиваешься того, чтобы столбец, содержащий минимальный элемент, стал крайним правым столбцом. Затем, применяя функцию 1, добиваешься того, чтобы строка, содержащая минимальный элемент, стала крайней нижней. И все, минимальный элемент находится в положенном ему месте.
Затем ты находишь номера строки и столбца минимального элемента. Применяя функцию 2, добиваешься того, чтобы столбец, содержащий минимальный элемент, стал крайним правым столбцом. Затем, применяя функцию 1, добиваешься того, чтобы строка, содержащая минимальный элемент, стала крайней нижней. И все, минимальный элемент находится в положенном ему месте.
Не вопрос! 255507394
Мои мысли настолько гениальны, что санитары уже приехали!
Ася 255507394.
Ася 255507394.
-
- Сообщения: 3
- Зарегистрирован: 02 ноя 2010, 21:02
вот что у меня получилось! посмотрите, пожалуйста)
#include <stdio.h>
#include <math.h>
#include <conio.h>
void main()
{
float M[10][10];
int i, j, m, n, y;
printf ("\n введите матрицу");
scanf ("%d % d", &m,&n);
printf ("\nвведите элементы матрицы\n");
for (i=0; i<m; i ++)
for (j=0; j<n; j++);
scanf ("%f",&M[j]);
int flag;
float min;
flag=0;
min=M[1][1];
for (i=0;i<m; i++)
for (j=0; j<n;j++)
if (M[j]<min)
{
min=M[j];
x=i;
y=j;
};
for (i=0;i<m;i++)
for (j=0; j<n; j++)
if ((M[j]==min)&&((i!=x)||(j!=y)))
{
printf("\nсуществуют 2 минимальных элемента");
flag=1;
};
if (flag==0)
{
int k;
float buff;
for (k=0; k>=y; k++)
{
for (i=0;i<m-1;i++)
for (j=0; j<n-1;j++)
{
buff=M[j+1];
M[j+1]=M[j];
M[j]=buff;
};
}
for (k=0;k>=x;k++)
{
for (i=0;i<m-1;i++)
for (j=0;j<n-1;j++)
{
buff=M[i+1][j];
M[i+1][j]=M[j];
M[j]=buff;
}
};
for(i=0;i<n;i++)
{
for(j=0;j<n; j++)
printf ("%5.2f ", M[i][j]," ");
printf("\n");
};
};
}
#include <stdio.h>
#include <math.h>
#include <conio.h>
void main()
{
float M[10][10];
int i, j, m, n, y;
printf ("\n введите матрицу");
scanf ("%d % d", &m,&n);
printf ("\nвведите элементы матрицы\n");
for (i=0; i<m; i ++)
for (j=0; j<n; j++);
scanf ("%f",&M[j]);
int flag;
float min;
flag=0;
min=M[1][1];
for (i=0;i<m; i++)
for (j=0; j<n;j++)
if (M[j]<min)
{
min=M[j];
x=i;
y=j;
};
for (i=0;i<m;i++)
for (j=0; j<n; j++)
if ((M[j]==min)&&((i!=x)||(j!=y)))
{
printf("\nсуществуют 2 минимальных элемента");
flag=1;
};
if (flag==0)
{
int k;
float buff;
for (k=0; k>=y; k++)
{
for (i=0;i<m-1;i++)
for (j=0; j<n-1;j++)
{
buff=M[j+1];
M[j+1]=M[j];
M[j]=buff;
};
}
for (k=0;k>=x;k++)
{
for (i=0;i<m-1;i++)
for (j=0;j<n-1;j++)
{
buff=M[i+1][j];
M[i+1][j]=M[j];
M[j]=buff;
}
};
for(i=0;i<n;i++)
{
for(j=0;j<n; j++)
printf ("%5.2f ", M[i][j]," ");
printf("\n");
};
};
}