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

Мистическая потеря итераций цикла - C++

Восстановить пароль Регистрация
 
Дмитрий3241
 Аватар для Дмитрий3241
634 / 505 / 52
Регистрация: 07.07.2011
Сообщений: 1,226
08.06.2013, 00:11     Мистическая потеря итераций цикла #1
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
#include <iostream>
 
using namespace std;
 
void shift( int * array, int direct, int n );
void print( int * array, int n );
 
int main()
{
        int a[] = { 1, 2, 3 };
 
        for ( int i = 0; i < 3; i++ )
        {
                print( a, 3 );
                shift( a, 1, 3 );
        }
 
        return 0;
}
 
void print( int * array, int n )
{
        for ( int i = 0; i < n; i++ )
                cout << array[i] << " ";
        cout << endl;
}
 
void shift( int * array, int direct, int n )
{
        if ( direct == 0 )
        {
                int tmp = array[0];
                for ( int i = 0; i < n; i++ )
                        array[i] = array[i+1];
                array[n-1] = tmp;
        }
        else
        {
                int tmp = array[n-1];
                for ( int i = n; i > 0; i-- )
                        array[i] = array[i-1];
                array[0] = tmp;
        }
}
А вот вывод данной программы:
1 2 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
44
45
46
#include <iostream>
 
using namespace std;
 
void shift( int * array, int direct, int n );
void print( int * array, int n );
 
int main()
{
        int a[] = { 1, 2, 3 };
 
        int b = 0;
        for ( int i = 0; i < 3; i++ )
        {
                print( a, 3 );
                shift( a, 1, 3 );
                b++;
        }
 
        return 0;
}
 
void print( int * array, int n )
{
        for ( int i = 0; i < n; i++ )
                cout << array[i] << " ";
        cout << endl;
}
 
void shift( int * array, int direct, int n )
{
        if ( direct == 0 )
        {
                int tmp = array[0];
                for ( int i = 0; i < n; i++ )
                        array[i] = array[i+1];
                array[n-1] = tmp;
        }
        else
        {
                int tmp = array[n-1];
                for ( int i = n; i > 0; i-- )
                        array[i] = array[i-1];
                array[0] = tmp;
        }
}

То вывод нормальный, мб тут память заменяется где-нибудь, я просто всегда писал на c# и там таких чудо-штук не происходило.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newyork7776
 Аватар для newyork7776
346 / 339 / 79
Регистрация: 21.05.2013
Сообщений: 1,305
Завершенные тесты: 1
08.06.2013, 00:16     Мистическая потеря итераций цикла #2
1 2 3
3 2 1
2 3 1
вот такое у меня пишет
програма пашеш на ура!!!
Дмитрий3241
 Аватар для Дмитрий3241
634 / 505 / 52
Регистрация: 07.07.2011
Сообщений: 1,226
08.06.2013, 00:22  [ТС]     Мистическая потеря итераций цикла #3
newyork7776, Я тогда вообще в ступоре.
Прикрепил скрины, дабы меня не оклеветали.
Миниатюры
Мистическая потеря итераций цикла   Мистическая потеря итераций цикла   Мистическая потеря итераций цикла  

Мистическая потеря итераций цикла  
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
08.06.2013, 00:26     Мистическая потеря итераций цикла #4
Цитата Сообщение от newyork7776 Посмотреть сообщение
1 2 3
3 2 1
2 3 1
не а вывод такой -
1 2 3
3 1 2
2 3 1
Дмитрий3241
 Аватар для Дмитрий3241
634 / 505 / 52
Регистрация: 07.07.2011
Сообщений: 1,226
08.06.2013, 00:27  [ТС]     Мистическая потеря итераций цикла #5
Игорь с++, не суть важна, суть в том, что у меня вообще его нету ( есть но 1 итерация ) если я переменную пустышку в цикл не засуну.
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
08.06.2013, 00:28     Мистическая потеря итераций цикла #6
попробуй перестроить проект полностью
Дмитрий3241
 Аватар для Дмитрий3241
634 / 505 / 52
Регистрация: 07.07.2011
Сообщений: 1,226
08.06.2013, 00:29  [ТС]     Мистическая потеря итераций цикла #7
Цитата Сообщение от Игорь с++ Посмотреть сообщение
попробуй перестроить проект полностью
Я его по сути каждый раз перестраиваю командой
Bash
1
g++ perm.cpp -o perm
l2ded
 Аватар для l2ded
80 / 68 / 11
Регистрация: 10.05.2011
Сообщений: 284
08.06.2013, 00:40     Мистическая потеря итераций цикла #8
Цитата Сообщение от Дмитрий3241 Посмотреть сообщение
C++
1
2
int tmp = array[n-1];
                for ( int i = n; i > 0; i-- )
То вывод нормальный, мб тут память заменяется где-нибудь, я просто всегда писал на c# и там таких чудо-штук не происходило.
C++
1
for ( int i = n-1; i > 0; i-- )
Может?
Дмитрий3241
 Аватар для Дмитрий3241
634 / 505 / 52
Регистрация: 07.07.2011
Сообщений: 1,226
08.06.2013, 00:46  [ТС]     Мистическая потеря итераций цикла #9
Цитата Сообщение от l2ded Посмотреть сообщение
Может?
Да и вправду, большое спасибо, я то же тупанул, даже не думал туда смотреть.
Хотя как это мешает циклу выполниться 3 раза?

Не по теме:

Fuck я все равно не допираю... Тогда почему переменная пустышка исправляла данную ситуацию?

l2ded
 Аватар для l2ded
80 / 68 / 11
Регистрация: 10.05.2011
Сообщений: 284
08.06.2013, 00:57     Мистическая потеря итераций цикла #10
Цитата Сообщение от Дмитрий3241 Посмотреть сообщение
Да и вправду, большое спасибо, я то же тупанул, даже не думал туда смотреть.
Хотя как это мешает циклу выполниться 3 раза?

Не по теме:

Fuck я все равно не допираю... Тогда почему переменная пустышка исправляла данную ситуацию?

Массиву А было выделено на 3 ячейки памяти, а вы использовали 4 (не существующую) вот и получился баг.

Не по теме:

У меня не исправила - это наверное МАГИЯ)

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2013, 01:23     Мистическая потеря итераций цикла
Еще ссылки по теме:

C++ Посчитать количество проведенных итераций (метод простых итераций, Pascal -> C++)
C++ Как посчитать количество итераций цикла?
C++ Нахождение отрицательного цикла в графе и вывод цикла

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

Или воспользуйтесь поиском по форуму:
Дмитрий3241
08.06.2013, 01:23  [ТС]     Мистическая потеря итераций цикла
  #11

Не по теме:

Цитата Сообщение от l2ded Посмотреть сообщение
У меня не исправила - это наверное МАГИЯ)
Вот я и назвал тему "мистическая".

Yandex
Объявления
08.06.2013, 01:23     Мистическая потеря итераций цикла
Ответ Создать тему
Опции темы

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