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

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

Войти
Регистрация
Восстановить пароль
 
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
#1

Затирается переменная в DevCPP - C++

15.11.2012, 20:06. Просмотров 333. Ответов 1
Метки нет (Все метки)

Проблема возникла в этой теме.
Выставить цифры в числе 1234567890 таким образом, чтобы новое число делилось без остатка на все числа от 2 до 18 включительно.
Программу я написал в MSVS2008 и она корректно работала,
но стали поступать жалобы, я проверил и обнаружил что в DevCPP возникает ошибка.

Дело в глобальных переменных
divisor, half_life и массиве mask[10]
В ходе заполнения массива mask переменная divisor портится, хотя за пределы массива я не выхожу.
Я проверял адреса этих переменных, смутно помню что там что, но факт есть. Чтобы mask не затирал divisor между ними нужно объявить доп. переменную half_life

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
#include <iostream>
using namespace std;
int mask[10]; 
//если поменять местами объявление divisor и half_life всё заработает, т.к. 
// half_life не используется в программе.
// Но если оставить в неизменном виде код, то портится значение divisor,
// затираясь последним элементом массива mask
unsigned long long divisor;     
unsigned long long half_life;
void solve(int l, int r){
    unsigned long long i;
    if (l==r){
        for (i=0, l^=r; l<10; l=l+1)
            i=i*10+mask[l];
        if (!(i%divisor))
                 cout<<"found i="<<i<<endl;
        
    }
    else
        for (int i=l; i<=r; i++){
            if (l-i){
                mask[l]^=mask[i];
                mask[i]^=mask[l];
                mask[l]^=mask[i];
                solve(l+1, r);
                mask[l]^=mask[i];
                mask[i]^=mask[l];
                mask[l]^=mask[i];
            }else
                solve(l+1, r);
            
        }
}
int main(int argc, char* argv[])
{
    setlocale(0, "russian");
    double x = 0;
    int a[10]; 
           //1*2*3*4*5*6*7*8*9*10*11*12*13*14*15*16*17*18
    divisor=   2*3*2*5*  7*2*3*   11   *13       *2*17;
    for (argc^=argc; argc<10; mask[argc]=argc)argc++;
    solve(0,9);
       cout<<"not found"<<endl;
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2012, 20:06     Затирается переменная в DevCPP
Посмотрите здесь:

opengl with devcpp - C++
При компиляции проектов с opengl ошибки вида: undefined reference to`_imp____ и дальше глутовские функции: 0)Пыталась скачать либу...

Не запускается Devcpp - C++
Перестал запускаться Devcpp. попробовал переустановить, но ничего не поменялось. Пишет подождите момент, и пропадает. Добавлено через...

DevCpp не запускаются программы - C++
В DevCPP при компиляции любой программы вылезает окно с надписью &quot;Программа g++.exe не работает&quot;. Потом windows ищет решение проблемы, но...

Не компилится код в DevCpp - C++
В DevCpp не компилится код, ругается вот на эту строчку. В IDE Qt - все нормально. vector&lt;pair&lt;string,int&gt; &gt;...

DevCpp + bgi, очистка дисплея - C++
Играюсь с графикой в консоли через bgi Собственно пробую сделать очистку экрана, но не выходит Пробовал писать clrscr(); но выдаёт...

преобразовать код программы из DevCPP в VisualStudio - C++
Помогите пожалуйста переделать код программы на С++, из DevCPP в VisualStudio #include &lt;cstdlib&gt; #include &lt;iostream&gt; ...

Не удается просмотреть значение переменной в DevCpp - C++
У меня есть компилятор Dev Cpp, проблема в том, что он не отлаживает программу.. Когда я добавляю переменную в список наблюдаемых, в...

DevCpp не вводятся спец символы (масти карт) - C++
Для программы необходимо использование спец символов обозначающих масти карт: ♥ ♦ ♣ ♠ . Но при копировании этих символов в редактор или...

Где скачать библиотеку OpenGL для DevCpp? - C++
Мало чего знаю по C++ и потому решил начать с готового примера 3D игры. Есть код, все норм но нет OpenGL библиотек! #include...

Глобальная переменная определена в хидере. Компилятор ругается на то, что переменная переопределена несколько раз - C++
Исходники: /* main.cpp */ #include &quot;hider.h&quot; int main(void) { return 0; } /* foo.cpp */


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
15.11.2012, 20:24     Затирается переменная в DevCPP #2
Выходишь за пределы, так видно:
C++
1
    for (argc^=argc; argc<10; mask[argc]=argc, cout << argc << endl ) {
Ответ Создать тему
Опции темы

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