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

В матрице размером 6х8 упорядочить элементы чётных строк по возрастанию методом обмена с флагом - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти два наибольших простых числа в матрице http://www.cyberforum.ru/cpp-beginners/thread418545.html
Помогите,пожалуйста Задана матрица целых чисел A(m,n). Найти два наибольших простых числа. Первое простое число заменить минимальным элементом матрицы, второе- максимальным элементом матрицы.
C++ Ввод знака пробела Привет всем! Как можно реализовать ввод строки с пробелами? Нужно для задания адреса файла где могут попадаться названия папок с пробелами (Programm Files например). http://www.cyberforum.ru/cpp-beginners/thread418533.html
C++ класс, моделирующий многочлены n – го порядка
Разработайте класс, моделирующий многочлены n – го порядка от одной переменной. В классе должен быть конструктор копирования и оператор присваивания. Перегрузите оператор ~ для вычисления первой...
C++ | Генератор ключей C++
Возможно ли сделать генератор ключей на основе самих ключей(ну чтобы использовать реальные ключи для создания подобных)?
C++ В четных строках матрицы заменить все отрицательные элементы на ноль http://www.cyberforum.ru/cpp-beginners/thread418520.html
в четных строках матрицы заменить все отрицательные элементы на ноль: исходный массив А 6 строк 4 столбцов преобразование массива А в массив В: b=(sqrt(i)-sqrt(j))/a
C++ Изменить программу так, чтобы исходные данные вводились не из файла, а с клавиатуры Нужно сделать чтоб исходные данные задавались не с файла, а пользователь вводил с клавиатуры!! Может кто может помочь!!!??? #include <iostream.h> #include <fstream.h> #include<conio.h> main(int... подробнее

Показать сообщение отдельно
valeriikozlov
Эксперт C++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
29.12.2011, 05:44
Цитата Сообщение от ego Посмотреть сообщение
а кто нибудь расскажет, как флаги работают?
флаги работают просто: принимают значение или 0 или 1.
Наверное Вы хотите знать о другом: как значения флагов влияет на сортировку в этом коде.
Тогда немного пояснений, а потом комментарии в коде.
При выполнении пузырьковой сортировки, если при очередном проходе по массиву, не было сделано ни одного обмена, то значит, массив уже упорядочен - дальнейшие проходы бессмыслены (В Вашем случае, под массивом здесь будет пониматься каждая строка двумерного массива, которую нужно отсортировать). Вот здесь и применяются флаги - по их значению можно узнать был ли хотя бы один обмен при очередном проходе или нет.
См. комментарии:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
     void sortmatrix (int*A, int n, int m)
     { int i,j,k=0,flag,buf, y;      
     for(i=1;i<n ;i+=2)// перебираем строки, которые нужно отсортировать (четные)
         {
                 flag=1;// перед началом сортировки очередной строки fl присваиваем значение 1
     for(j=0;j<m-1&& flag==1;j++)// для того что бы отсортировать m элементов необходимо сделать m-1 проход по строке (если при очередном проходе обмена не будет, fl будет равным 0, и тогда мы проходы прекратим)
         {
                 flag=0;// перед очередным проходом fl присваиваем значение 0
                 for(y=0; y<m-1-j; y++)// делаем очередной проход по строке
                         if (*(A+i*m+y)>*(A+i*m+(y+1))) {buf=*(A+i*m+y); *(A+i*m+y)=*(A+i*m+(y+1));*(A+i*m+(y+1))=buf;flag=1;}// если был обмен, то fl присваиваем значение 1
          }
     }
      }
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru