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

Лексикографическое порождение перестановок - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Записать каждую строку из файла в элементы двумерного массива http://www.cyberforum.ru/cpp-beginners/thread1083714.html
как записывать каждую строку из файла в элементы двумерного массива? есть файл zero.in в котором до 100000 строк длиной до 256 символов, эти символы все цифры необходимо первую строку записать в...
C++ Известно, что из четырех чисел a1, a2, a3, a4 одно отлично от трех других, равных между собой. Присвоить номер этого числа переменной n 12. Известно, что из четырех чисел a1, a2, a3, a4 одно отлично от трех других, равных между собой. Присвоить номер этого числа переменной n http://www.cyberforum.ru/cpp-beginners/thread1083701.html
Найти остаток от деления целой части выражения sin(a+b)0.5c на 4 и вывести на экран сообщение о величине остатка. C++
12. Найти остаток от деления целой части выражения sin(a+b)0.5c на 4 и вывести на экран сообщение о величине остатка. Если остаток равен 0, то значение выражения заменить на его целую часть. Если...
C++ Выход из двойного цикла
Как выйти при нажатии определенной кнопки из двойного цикла: #include<conio.h> #include<iostream> #include<cmath> #include<cstring> #include<cctype> using namespace std; int main(){...
C++ Найти номер максимального по модулю элемента массива http://www.cyberforum.ru/cpp-beginners/thread1083686.html
Найти номер максимального по модулю элемента массива;
C++ В массиве X(N) найти максимальный элемент массива и упорядочить по возрастанию все элементы В массиве X(N) найти максимальный элемент массива и упорядочить по возрастанию все элементы, расположенные после найденного максимального элемента. подробнее

Показать сообщение отдельно
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
28.01.2014, 17:46
Цитата Сообщение от romanticVL Посмотреть сообщение
Хмм, я в VS 2012 тоже делал, только ни ошибок, ни предупреждений никаких
Он и не выдаст, ошибка у Вас в алгоритме: массив ваш A[0], A[1], A[2] тогда разберем ваш код
C++
1
2
3
4
5
6
7
8
9
10
 i = n - 1; // ошибка в этом случае при n=3 то i=2 тогда A[i + 1]=A[3] - вылет за пределы массива меняем на  i = n - 2;
        
        while (A[i] > A[i + 1]) i--; //При i=0 у Вас A[0]>A[1] т.е. выполняется действие i-- и становится i=-1, допустим исправим так while ((A[i] > A[i + 1]) && i>0) то в этом случаи после цикла i=0, тогда см. ниже 
 
        // Найти A[j], наименьший элемент справа от A[i] и больший его
        int j = n;// ошибка j=3 то A[j]=A[3] - вылет за пределы массива исправим j=n-1; j=2;
        while (A[i] > A[j]) j--; //помним что i=0, тогда условие будет A[i] > A[j] соблюдаться до A[0] > A[1], т.е. до j=1 и выполнится действие j--; следовательно на выходе из этого цикла получите j=0
 
        // Поменять местами A[i] и A[j] и затем перевернуть A[i + 1], ... , A[n]
        swap (A[i], A[j]);; // помним что i=0 и j=0 и что получаем????
а этот цикл тоже закончен сразу while (i != 0) т.к. i=0
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru