Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
651 / 521 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
1

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

08.06.2013, 00:11. Просмотров 677. Ответов 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# и там таких чудо-штук не происходило.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2013, 00:11
Ответы с готовыми решениями:

Посчитать количество итераций цикла
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int main()...

Посчитать количество итераций цикла
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int main()...

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

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

10
350 / 343 / 279
Регистрация: 21.05.2013
Сообщений: 1,312
08.06.2013, 00:16 2
1 2 3
3 2 1
2 3 1
вот такое у меня пишет
програма пашеш на ура!!!
0
651 / 521 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
08.06.2013, 00:22  [ТС] 3
newyork7776, Я тогда вообще в ступоре.
Прикрепил скрины, дабы меня не оклеветали.
0
Миниатюры
Мистическая потеря итераций цикла   Мистическая потеря итераций цикла   Мистическая потеря итераций цикла  

Мистическая потеря итераций цикла  
479 / 471 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
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
0
651 / 521 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
08.06.2013, 00:27  [ТС] 5
Игорь с++, не суть важна, суть в том, что у меня вообще его нету ( есть но 1 итерация ) если я переменную пустышку в цикл не засуну.
0
479 / 471 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
08.06.2013, 00:28 6
попробуй перестроить проект полностью
0
651 / 521 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
08.06.2013, 00:29  [ТС] 7
Цитата Сообщение от Игорь с++ Посмотреть сообщение
попробуй перестроить проект полностью
Я его по сути каждый раз перестраиваю командой
Bash
1
g++ perm.cpp -o perm
0
80 / 68 / 31
Регистрация: 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-- )
Может?
1
651 / 521 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
08.06.2013, 00:46  [ТС] 9
Цитата Сообщение от l2ded Посмотреть сообщение
Может?
Да и вправду, большое спасибо, я то же тупанул, даже не думал туда смотреть.
Хотя как это мешает циклу выполниться 3 раза?

Не по теме:

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

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

Не по теме:

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

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

Не по теме:

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

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

Не по теме:

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

0
08.06.2013, 01:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2013, 01:23
Привет! Вот еще темы с ответами:

Сортировка пузырьком: второй цикл уменьшается на 1 с каждой итераций первого цикла
Помогите пожалуйста. Нужно сделать сортировку Пузырьком, чтобы второй цикл уменьшался на 1 с каждой...

Распараллеливание итераций цикла MPI
Как можно распараллелить цикл, чтобы одна итерация передавалась одному потоку, вторая - второму...

Не выполняется нужное количество итераций цикла
Добрый день ребята!!!! Помогите найти ошибку!!! ...

Количество итераций цикла
Привет, не могу разобраться как вывести количество итераций цикла if. Пробую через сделать это...

Сумма результатов итераций цикла for
for (int i = a; i &lt;= b; i++){ System.out.printf(&quot;Значение &quot; + i + &quot; в квадрате равно %.0f \n&quot;,...

Отслеживание количества итераций цикла
n = int ( input (&quot;Укажите, до какого числа проверять простые числа: &quot;)) for a in range (2, n+1):...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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