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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Запись string в файл http://www.cyberforum.ru/cpp-beginners/thread698849.html
есть строка, я её должен записать в текстовый файл так,чтобы она разбилась на несколько строк , при этом длина каждой не превышала 10 символов, а слова которые не влезли переносились: stroka="word1 jladhfa\nds;F jdhs\nkjhs kej qkjehr w "; if((a.length()<10)) { a.insert(a.begin()+10, '\n'); }
C++ Определите что за сортировка Это сортировка вставками или выбором #include <iostream> #include <time.h> #include <conio.h> using namespace std; int main (){ int temp; const int arraysize=10; int array={2,3,4,5,6,7,8,9,10,6}; for(int i=0;i<arraysize;i++){ cout<<array<<"\t";} http://www.cyberforum.ru/cpp-beginners/thread698847.html
C++ Одномерные массивы на csharp
Помогите плз!! Сотавить массив из 20 случ чисел.Отсортировать отриц.четные элементы по возрастаниюю.Вывести на экран нач. массив и отсортированный.
Одномерные массивы: вычисление сумм элементов C++
Еще раз здравствуйте, дорогие форумчане. Мне еще раз нужна ваша помощь по задаче. Если сможете, то помогите, пожалуйста. Собственно само задание: Даны целые числа a1, ..., an, среди которых могут быть повторяющиеся члены. Найти число различных членов последовательности.(Если что, скрин прикрепил). ------------------------------------------- Я понял так, что можно начать вот как: #include...
C++ В С++ нужно вывести числа четные до 10, нечетные до 11, в случайном порядке http://www.cyberforum.ru/cpp-beginners/thread698831.html
В С++ нужна программа для вывода чисел в случайном порядке четные до 10(2, 4, 6, 8, 10), нечетные до 11(1, 3, 5, 7, 9, 11) PFC_CSKA, будьте внимательнее с выбором раздела.
C++ Программа, имитирующая файловую систему Создать программу, которая будет имитировать файловую систему. Как это сделать? С чего начать? У кого есть пример такой программы. Сама структура будет отображаться в текстовом файле Файловая система использующая таблицы в памяти для размещения файлов и хранения информации о свободных блоках. Добавлено через 2 часа 8 минут подскажите, очень надо Добавлено через 1 час 37 минут ..... подробнее

Показать сообщение отдельно
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
15.11.2012, 20:06     Затирается переменная в DevCPP
Проблема возникла в этой теме.
Выставить цифры в числе 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru