Матрица И Строки

  • Автор темы -
  • Дата начала
Статус
Закрыто для дальнейших ответов.

Гость
#1
Она меняет в порядке возрастания в строчке числа,а соответствующие столбцы никак не хочет,помогите...

вот условие задачи:\


Упорядочить элементы к-ой строки матрицы m*n по возрастанию.Если элементы одинаковы,то упорядочить элементы к+1-ой строки также по возрастанию.
 

Гость
#2
вот прога

#include "stdafx.h"
#include <stdio.h>
#include <tchar.h>
#include <conio.h>
#include <iostream>
#include <windows.h>
#include <iomanip>
using namespace std;



int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"RUS");
int st , str ,s=0 ,k=0 , n ,f=0,f1=0;
system("cls");
//Вводим число строк и столбцов матрицы
cout << "Введите число строк : " << endl;
cout << ">>>>>> ";
cin >> st;
cout << "Введите число столбцов : " << endl;
cout << ">>>>>> ";
cin >> str;
//Выделяем под них память
double **m;
m=new double*[st];
for(int i = 0; i < st; i++)
{
m = new double[str];
}
//Заполняем матрицу
for(int i=0;i<st;i++)
{
for(int j=0;j<str;j++)
{
cout << "Введите " << j+1 << " элемент " << i+1 << " сроки : "<<endl;
cin >> m[j];
}
}
//Выводим матрицу
cout << "Ваша матрица : \n\n";
for (int i = 0; i < st; i++)
{
for (int j=0; j < str; j++)
{
cout.width(7);
cout <<m[j];
}
cout << endl;
}
//Сортируем строку матрицы
cout<<"Какую строку нужно отсортировать : "<<endl;
cin>>n;
n=n-1;
//Проверяем равенство элементов , если они все равны , то уведичиваем показатель номера строки , и снова проверяем , и так до тех пор , пока элементы будут не равны
bool cntn = true;// Продолжить цикл
while(cntn)
{
for(int j=0;j<str - 1;j++)
if(m[n][j]!=m[n][j+1])
cntn = false; // В столбце есть не равные элементы. Дальнейшая проверка не нужна.

if(cntn)
{
n=n+1;
cout<<"Сортируется строка " << n + 1<<endl;
}

if (n == st)
cntn = false; //Проверена вся матрица.
}

//Алгоритм сортировки элементов строки матрицы
if (n != st)//
{
while(k!=str)
{
for(int j=0;j<str - 1;j++)
{
if(m[n][j]>m[n][j+1])
{
double temp = m[n][j];
m[n][j]=m[n][j+1];
m[n][j+1] = temp;
}
}
k++;
}
}

//Вывод отсортированной матрицы на экран
cout << "Отсортированная матрица : "<<endl;
for (int i = 0; i < st; i++)
{
for (int j=0; j < str; j++)
{
cout.width(7);
cout <<m[j];
}
cout << endl;
}
system("PAUSE");
return 0;
}
 
Статус
Закрыто для дальнейших ответов.