преобразование матрицы

Ответить
yunona_sorry
Сообщения: 3
Зарегистрирован: 02 ноя 2010, 21:02

помогите, пожалуйста написать программу:
НАЗОВЕМ ДОПУСТИМЫМ ПРЕОБРАЗОВАНИЕМ МАТРИЦЫ ПЕРЕСТАНОВКУ ДВУХ СОСЕДНИХ СТРОК ИЛИ ДВУХ СОСЕДНИХ СТОЛБЦОВ. ДАНА ДЕЙСТВИТЕЛЬНАЯ КВАДРАТНАЯ МАТРИЦА ПОРЯДКА N. С ПОМОЩЬЮ ДОПУСТИМЫХ ПРЕОБРАЗОВАНИЙ ДОБИТЬСЯ ТОГО, ЧТОБЫ ЭЛЕМЕНТ МАТРИЦЫ, ОБЛАДАЮЩИЙ НАИМЕНЬШИМ ЗНАЧЕНИЕМ, РАСПОЛАГАЛСЯ В ПРАВОМ НИЖНЕМ УГЛУ МАТРИЦЫ
BulldozerBSG
Сообщения: 270
Зарегистрирован: 09 янв 2010, 04:14
Контактная информация:

Можешь начать с этого:

Код: Выделить всё

int main (int argc, char *argv[])
{
  return 0;
}
chesser
Сообщения: 5
Зарегистрирован: 03 авг 2010, 11:07

Тебе надо написать две функции: функция 1 меняет местами две соседние строки, функция 2 меняет местами два соседних столбца.
Затем ты находишь номера строки и столбца минимального элемента. Применяя функцию 2, добиваешься того, чтобы столбец, содержащий минимальный элемент, стал крайним правым столбцом. Затем, применяя функцию 1, добиваешься того, чтобы строка, содержащая минимальный элемент, стала крайней нижней. И все, минимальный элемент находится в положенном ему месте.
flash1989
Сообщения: 135
Зарегистрирован: 01 сен 2010, 17:17

Если че , пиши, сделаю все в лучшем виде в краткий срок
icq: 588002847
email: flash_1989@ukr.net
Аватара пользователя
Sheka
Сообщения: 246
Зарегистрирован: 17 май 2009, 15:48
Контактная информация:

Не вопрос! 255507394
Мои мысли настолько гениальны, что санитары уже приехали!
Ася 255507394.
yunona_sorry
Сообщения: 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");
};
};
}
Ответить