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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Дмитрий3241
639 / 510 / 52
Регистрация: 07.07.2011
Сообщений: 1,228
#1

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

08.06.2013, 00:11. Просмотров 525. Ответов 10
Метки нет (Все метки)

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# и там таких чудо-штук не происходило.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2013, 00:11     Мистическая потеря итераций цикла
Посмотрите здесь:

Формула подсчета количества итераций цикла for - C++
Доброго времени суток Помогите ответом/советом/уч. материалом Пусть, for( int i = 1; i &lt;= 10; i++ ) ... имеем 10 итераций цикла ...

Как посчитать количество итераций цикла? - C++
Не совсем представляю, как это осуществить. Т.е. возвращается х, а еще что-то вернуть, то будет немного не так, как хотелось бы, по идее....

Потеря памяти - C++
Здравия желаю!:) Вопрос: Возможна ли такая конструкция? #include&lt;iostream&gt; #include&lt;conio.h&gt; using namespace std; char...

Потеря памяти в программе - C++
Подскажите пожалуйста, как отловить в каком месте происходит потеря памяти? Программа считает, но если открыть диспетчер задач, то файл...

Потеря данных в string - C++
Здравствуйте, у меня возникла проблема со string a: когда я ввожу значение слова через код, то программа работает, а если через cin, т.е...

Потеря значений указателя - C++
Вообщем столкнулся с интересной проблемой. При добавлении больше одного значения, на строке 123-124 значения указателя выводятся корректно,...

Потеря точности у double - C++
Салют! Ситуация следующая - есть необходимость работать с изображением, а точнее - с его градиентом/направлением градиента. Для...

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

Мистическая потеря итераций цикла  
Игорь с++
434 / 457 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
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
639 / 510 / 52
Регистрация: 07.07.2011
Сообщений: 1,228
08.06.2013, 00:27  [ТС]     Мистическая потеря итераций цикла #5
Игорь с++, не суть важна, суть в том, что у меня вообще его нету ( есть но 1 итерация ) если я переменную пустышку в цикл не засуну.
Игорь с++
434 / 457 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
08.06.2013, 00:28     Мистическая потеря итераций цикла #6
попробуй перестроить проект полностью
Дмитрий3241
639 / 510 / 52
Регистрация: 07.07.2011
Сообщений: 1,228
08.06.2013, 00:29  [ТС]     Мистическая потеря итераций цикла #7
Цитата Сообщение от Игорь с++ Посмотреть сообщение
попробуй перестроить проект полностью
Я его по сути каждый раз перестраиваю командой
Bash
1
g++ perm.cpp -o perm
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
639 / 510 / 52
Регистрация: 07.07.2011
Сообщений: 1,228
08.06.2013, 00:46  [ТС]     Мистическая потеря итераций цикла #9
Цитата Сообщение от l2ded Посмотреть сообщение
Может?
Да и вправду, большое спасибо, я то же тупанул, даже не думал туда смотреть.
Хотя как это мешает циклу выполниться 3 раза?

Не по теме:

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

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++
Доброго времени суток может кто-то подскажет алгоритм масштабирования без потери точности,пока я для этого пользуюсь типом double и...

Потеря указателя на корень дерева - C++
Всем доброго времени суток. У меня есть функция вставки структуры в АВЛ дерево, но при его печати оказывается, что дерево пусто и корень...

Потеря значения в виртуальной функции - C++
Подскажите что не так, вывод должен быть 1 и 5. class cBase { public: int i, f; virtual void addI() { i = 0; f = 5; ...

Связный список, потеря данных - C++
Есть один список нахожу по ключу значения удаляю его из списка (все работает) , потом пытаюсь то что удалил внести в новый список и получаю...

Потеря значений переменных при расчетах - C++
Нужно поворачивать прямоугольник на заданый угол. Вот что у меня получилось: const long double Pi =...


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

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

Не по теме:

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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru