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

Сортировка методом пузырька, не могу найти ошибку - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ список мин и макс элемент http://www.cyberforum.ru/cpp-beginners/thread919973.html
Дан список из целых чисел, найти первое из всех минимальных значений и последнее из всех максимальных, при этом удалить все значения между ними.
C++ Олимпиадная задача Вот наткнулся сегодня на такую задачу: Всем известно, что в позапрошлом веке ковбои занимались перегоном скота. Перегон скота всегда считался опасным делом. Ковбой Джон, готовясь к очередному перегону, изучал план местности. Так как местность гористая, то добраться из одного поселения в другое можно только по дорогам, возможно через другие поселения. Главной опасностью на пути были бандиты,... http://www.cyberforum.ru/cpp-beginners/thread919968.html
Подскажите как исправить функцию C++
bool addNode(TNode *first, int key) { TNode* tmp=first; if(tmp->Right) addNode(tmp->Right,key); else if(tmp->Data==-1||tmp->Data==-2||tmp->Data==-3) { tmp->Right=add(key); return true;
Ошибка в инициализации базовых классов C++
Привет. Пишу код из книги Лафоре. #include <iostream> using namespace std; #include <windows.h> enum posneg {pos, meg}; class Distance { protected: int feet;
C++ Как правильно описать функцию acos? http://www.cyberforum.ru/cpp-beginners/thread919942.html
И ребят помогите разобраться в чем ошибки здесь, делаю лабораторную по методу секущих И еще как можно графически выполнить метод секущих через Dos Box? Заранее благодарю за помощь #include <iostream> #include <math.h> #include <locale> #include <stdio.h> #include <conio.h>
C++ Сортировка массива по убыванию элементов Скажите пожалуйста, что не так, если не так, в этом коде) Задание: отсортировать массив по убыванию значений элементов в строках и столбцах методом пузырька #include <iostream> #include <conio.h> using namespace std; int main() { setlocale ( LC_ALL, "Russian_Russia.1251" ); int a; подробнее

Показать сообщение отдельно
Бедел
 Аватар для Бедел
232 / 28 / 4
Регистрация: 04.06.2010
Сообщений: 283
09.07.2013, 03:15     Сортировка методом пузырька, не могу найти ошибку
Здравствуйте, уважаемые форумчане !
Столкнулся с проблемой при выполнении 2-го условия.

Дана целочисленная прямоугольная матрица (задать самостоятельно).
1. Найдите наименьший элемент среди четных строк этой матрицы.
2. Переставьте местами строки матрицы в порядке убывания модулей первых элементов строк.

Ввожу двумерный массив 3х3, например: 4 5 6 7 8 9 1 1 3
Сортирует не совсем верно. На скрине приведены два теста.
Сортировка методом пузырька, не могу найти ошибку

Откуда он берет эту злосчастную тройку ? Никак не могу понять. Есть подозрения, что это каким-то образом связано с число столбцов и строк, так как их тоже ровно 3. Меняю число строк и столбцов на 4, появляются лишние 4-ки... Причем сортирует неверно, когда строка является ПОСЛЕДНЕЙ. Вот все закономерности, которые я заметил, но решить проблему никак не могу.

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
#include <iostream>
#include <iomanip.>
#include <stdlib.h>
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    const int a = 3, b = 3;
    int m[a][b], i, j;
    cout << "Ввод массива: ";
    for (i=0; i<a; i++)
        for (j=0; j<b; j++)
            cin >> m[i][j];
    for (i=0; i<a; i++)
    {
     for (j=0; j<b; j++)
        cout << setw(2) << m[i][j] << " ";
     cout << endl;
    }
    int mini=m[0][0];
    for (i=1; i<a; i+=2)
    {
      for (j=0; j<b; j++)
      {
        if (mini>=m[i][j+i]) mini=m[i][j+1];
      }
    }
        cout << "Минимальный элемент четных строк= " << mini << endl;
    int x,k;
    for (j=0; j<b-1; j++)
    {
        for (i=0; i<a-j; i++)
        {
          if (abs(m[i][0]) < abs(m[i+1][0]))
            {
                for (k=0; k<a; k++)
                {
                    x=m[i][k];
                    m[i][k]=m[i+1][k];
                    m[i+1][k]=x;
                }
            }
        }
    }
    cout << endl << "Преобразованный массив:" << endl;
    for (i=0; i<a; i++)
    {
        for (j=0; j<b; j++)
            cout << m[i][j] << "  ";
        cout << endl;
    }
    system("PAUSE");
    return 0;
}
Буду очень благодарен, кто поможет с решением этой проблемы.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru