Форум программистов, компьютерный форум CyberForum.ru

Расположить строки матрицы по убыванию их последних элементов - C++

Восстановить пароль Регистрация
 
Тина_Ливингстон
0 / 0 / 0
Регистрация: 01.11.2011
Сообщений: 59
15.01.2012, 17:07     Расположить строки матрицы по убыванию их последних элементов #1
В текстовом файле в первой строке записаны два целых числа, разделенные пробелом, – количество строк и столбцов матрицы, в последующих – элементы строк матрицы, также разделенные пробелами, в одной строке файла – одна строка матрицы. Количество строк и столбцов - не более 50. Расположить строки матрицы по убыванию их последних элементов. Исходную и полученную матрицы записать в текстовый файл построчно, отделив одну от другой пустой строкой.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.01.2012, 17:07     Расположить строки матрицы по убыванию их последних элементов
Посмотрите здесь:

C++ Упорядочить строки матрицы по возрастанию последних элементов строк
C++ Упорядочить строки матрицы по убыванию количества отрицательных элементов для каждой строки
Расположить строки матрицы по убыванию их последних элементов C++
C++ Расположить столбцы динамической матрицы по убыванию их наибольших элементов
Расположить столбцы динамической матрицы по убыванию их наибольших элементов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
retmas
Жарю без масла
803 / 685 / 143
Регистрация: 13.01.2012
Сообщений: 1,580
15.01.2012, 20:12     Расположить строки матрицы по убыванию их последних элементов #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
 
using namespace std;
 
bool comp_fn(const vector<int>& x, const vector<int>& y)
{
    return *y.rbegin() < *x.rbegin();
}
 
int main()
{
    int n, m; // размерности
 
    ifstream ifs("input.txt");
    ofstream ofs("output.txt");
 
    ifs >> m >> n;
 
    //
    vector<vector<int> > mtx;
    for(int i = 0; i < m; ++i)
    {
        mtx.push_back(vector<int>());
        for(int j = 0; j < m; ++j)
        {
            int a;
            ifs >> a;
            mtx[i].push_back(a);
        }
    }
 
    for(int i = 0; i < m; ++i)
    {
        for(int j = 0; j < m; ++j)
        {
            ofs << mtx[i][j] << ' ';
        }
        ofs << endl;
    }
    ofs << endl;
 
    sort(mtx.begin(), mtx.end(), comp_fn);
 
    for(int i = 0; i < m; ++i)
    {
        for(int j = 0; j < m; ++j)
        {
            ofs << mtx[i][j] << ' ';
        }
        ofs << endl;
    }
    return 0;
}
Тина_Ливингстон
0 / 0 / 0
Регистрация: 01.11.2011
Сообщений: 59
16.01.2012, 00:34  [ТС]     Расположить строки матрицы по убыванию их последних элементов #3
Можно вопрос? Почемуне работает эта программа? Выводит тот же массив!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include<iostream>
#include<stdio.h>
#include<fstream>
using namespace std;
int main()
{
    setlocale (LC_ALL,".1251");
    ifstream fin ("file.txt");
    ofstream fout ("file1.txt");
    const int a=50,b=50;
    int matr [a] [b];
    int n,m;
    int i,j;
    fin>>n>>m;
    for( i=0;i<n;i++)
        for( j=0;j<m;j++)
            fin>>matr[i][j];
    for( i=0;i<n;i++)
    
        for( j=0;j<m;j++)
                fout<<matr[i][j]<<" ";
            fout<<endl;
        
    
    int temp;
    j=0;
    if(matr[n-1][m-1]>matr[n-2][m-2])
    {
        matr[n-1][j]=temp;
        matr[n-1][j]=matr[n-2][j];
        temp=matr[n-2][j];
        j++;
        n--;
        m--;
    }
    fout<<endl<<endl;
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            fout<<matr[i][j]<<" ";
    fin.close();
    fout.close();
    return 0;
}
retmas
Жарю без масла
803 / 685 / 143
Регистрация: 13.01.2012
Сообщений: 1,580
16.01.2012, 00:50     Расположить строки матрицы по убыванию их последних элементов #4
вероятно здесь вы хотели отсортировать матрицу:
Цитата Сообщение от Тина_Ливингстон Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
        if(matr[n-1][m-1]>matr[n-2][m-2])
        {
                matr[n-1][j]=temp;
                matr[n-1][j]=matr[n-2][j];
                temp=matr[n-2][j];
                j++;
                n--;
                m--;
        }
но получилось следущее:

* * * ... * * *
* * * ... * * *
* * * ... * * *
. . . . . . .
b * * ... * x *
a * * ... * * y

если x<y => поменять местами a и b
Тина_Ливингстон
0 / 0 / 0
Регистрация: 01.11.2011
Сообщений: 59
16.01.2012, 01:10  [ТС]     Расположить строки матрицы по убыванию их последних элементов #5
Нет, я хотела поменять строки местами... Наверно, неверно....(
retmas
Жарю без масла
803 / 685 / 143
Регистрация: 13.01.2012
Сообщений: 1,580
16.01.2012, 01:13     Расположить строки матрицы по убыванию их последних элементов #6
но для этого нужен как минимум цикл, а не просто 1 проверка(не очень удачная) условия
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2012, 01:16     Расположить строки матрицы по убыванию их последних элементов
Еще ссылки по теме:

Найти номера последних отрицательных элементов каждой строки матрицы C++
Упорядочить строки матрицы по возрастанию их последних элементов C++
Расположить строки матрицы по возрастанию сумм их элементов C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Тина_Ливингстон
0 / 0 / 0
Регистрация: 01.11.2011
Сообщений: 59
16.01.2012, 01:16  [ТС]     Расположить строки матрицы по убыванию их последних элементов #7
О, Спасибо большое, я поняла!
Yandex
Объявления
16.01.2012, 01:16     Расположить строки матрицы по убыванию их последних элементов
Ответ Создать тему
Опции темы

Текущее время: 03:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru