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

Необходимо отсортировать определённые столбцы матрицы по возрастанию - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Получить массив B http://www.cyberforum.ru/cpp-beginners/thread398679.html
.Задана матрица размером NxM. Получить массив B, присвоив его k-му элементу значение 1, если k-я строка матрицы симметрична, и значение 0  в противном случае.
C++ Шаблоны функций? Помогите найти ответы. Не нашел ответы и времени нет, завтра сдавать! 2. В каком случае следует использовать перегруженные функции, а в каком – шаблоны функций? 3. Допускают ли шаблоны вложенность описания? 4. Могут ли использоваться нетиповые параметры в заголовке шаблона? 5. Как связаны шаблоны с наследованием? 6. Назначение дружественных функций и классов. Как устанавливаются отношения... http://www.cyberforum.ru/cpp-beginners/thread398677.html
C++ Ввод с клавиатуры
Помогите пожалуйста переделать программу, чтобы значения n - вводилось с клавиатуры, и определяет сколько будет х0,х1, и тд, тоесть, если х =3 , то вводить с клавиатуры х0,х1,х2,х3. и число х - вводить с клавитуры. Вот код: #include "stdafx.h" #include <math.h> #include <stdio.h>
Сортировка односвязного списка C++
Добрый день форумчанам! Есть задача но не знаю как написать ее так как не знаю динамического программирования ) Будьте любезны ,помогите ) Построить класс для работы с односвязна списком. Элементы списка - целые числа. сформировать список, упорядочить элементы списка по возрастанию, используя сортировку: a) методом выбора, б) методом пузырька, в) методом вставки.
C++ Класс Triangle http://www.cyberforum.ru/cpp-beginners/thread398640.html
#include <iostream> #include <math.h> using namespace std; class Triangle { public:
C++ Конструктор копирования и оператор присваивания Не понимаю, когда используется один, а когда другой. Написал простой пример с комплексными числами - при компиляции в VS2010 и CodeBlock 10 выдаёт разный результат. Вот сам пример. #include <iostream> #include <stdlib.h> using namespace std; class Complex{ private: double re; double im; public: Complex(){ подробнее

Показать сообщение отдельно
Glam_Man
6 / 6 / 0
Регистрация: 15.10.2011
Сообщений: 73
04.12.2011, 20:15  [ТС]     Необходимо отсортировать определённые столбцы матрицы по возрастанию
Подправил немного код. Но всё равно не правильно работает: сравнивает только по 2 первых элемента каждого второго столбца...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int temp=0;
     for (int i=1; i<m; i+=2)
     {
         //каждый второй столбец
         for (int j=0; j<n; j++)
         {
             //проходим n раз
             for (int l=0; l<(n-1); l++)
             {
                 //сравнивая каждый элемент со следующим в столбце
                 if (b[i][l]<b[i+1][l])
                 {
                     //и если следующий элемент меньше предыдущего, меняем их местами
                     temp=b[i][l];
                     b[i][l]=b[i+1][l];
                     b[i+1][l]=temp;
                 }
             }
         }
     }
Цикл сортировки по столбцам проходит только 1 раз...... мало....
Он проходит по чётным номерам столбцов, первый раз проходит для второго стоблца, после каждой итерации счётчик увеличивается на 2, потому следующая итерация будет уже не для второго, а для четвёртого стоблца (если таковой существует, если же нет, то перед второй итерацией цикла при сравнении i=3 с количеством столбцов, равным к примеру 3 сравнение будет не истино (3<3 неверно))

Добавлено через 59 минут
Всё, разобрался. Прочитал на википедии про метод пузырька, осмыслил. Код должен был выглядеть так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int temp=0;
     for (int i=1; i<m; i+=2)
     {
         bool NeedToSort=1;
         while (NeedToSort)
         {
            NeedToSort=0;
            //каждый второй столбец проходим n раз
            for (int l=0; l<(n-1); l++)
            {
                //сравнивая каждый элемент со следующим в столбце
                if (b[l][i]>b[l+1][i])
                {
                    //и если следующий элемент столбца меньше предыдущего, меняем их местами
                    temp=b[l][i];
                    b[l][i]=b[l+1][i];
                    b[l+1][i]=temp;
                    NeedToSort=1;
                }
            }
         }
     }
 
Текущее время: 00:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru