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

Изменение значения переменной во время исполнения - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Скорость функций с ссылками http://www.cyberforum.ru/cpp-beginners/thread335414.html
Всем привет. Интересует способ организации функции для более быстрого передачи данных. Дана функция которая дополняет вектор битов нулями в конце, если количество бит не кратно некому числу. Вариант 1: Используются ссылки. private: void static add_bits(const std::vector <boost::uint8_t> & VectorInput, std::vector <boost::uint8_t> & VectorOutput,
C++ Решить систему алгебраических линейных неоднородных уравнени У меня есть система линейных уравнений. В ней 4000 уравнений. Киньте плиз код для её решения. Желательно, чтобы он был максимально быстрым. http://www.cyberforum.ru/cpp-beginners/thread335409.html
Английские и русские буквы. C++
Здравствуйте! Подскажите пожалуйста, как в С отличить русские буквы от английских? Я думаю что надо оперировать с кодами букв, но как именно-не соображу. Добавлено через 18 минут /* * File: main.cpp * Author: alchemist * Больше свинок для науки!
Что делается этимим строчками C++
void main() { srand((unsigned)time(NULL)); setlocale(0, ""); ..... }
C++ Почему то не могу считать матрицу http://www.cyberforum.ru/cpp-beginners/thread335372.html
Есть матрица порядка 3638. Мне нужно найти обратную к ней. ( В последствии порядок матрицы будет около 100 000) Есть код, вот только он не совсем рабочий. На маленьких матрицах порядка 3-4 он работает отлично, а вот на матрице порядка 3638 - не работает. В качестве результата выдает исходную матрицу. Помогите найти косяк. И по возможности сделать код "по-шустрее" Вот код на С++ #include...
C++ наследование классов Здарова, народ! :D Вот сижу и пытаюсь сделать задание из книги по которой "учимся программировать в универе", а там такой поворот событий :wall:, что я не понял как сделать. Помогите как накатать ето задание в коде. Теперь само задание: 1) добавьте в базовый и производный классы еще один конструктор с параметрами - толщиной оболочки thickness и наполнителем filter, обеспечив тем самым... подробнее

Показать сообщение отдельно
Vultaron
 Аватар для Vultaron
1 / 1 / 0
Регистрация: 27.03.2011
Сообщений: 31
22.07.2011, 17:04     Изменение значения переменной во время исполнения
Задача: Преобразовать введенный с клавиатуры массив таким образом, чтобы в первой его половине располагались элементы , имевшие нечетный индекс, а во второй - четный.
Код такой:
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <iostream>
using namespace std;
 
int main(int argc, char **argv)
{
    int n;
    cout<<"Введите кол-во элементов массива "<<endl;
    cin>>n;
    int* a = new int [n];
    for (int i = 0; i < n; i++)
    {
        cout<<"Введите "<<i<<"Элемент массива"<<endl;
        cin>>a[i]; 
    }
    cout<<"Введенный массив "<<endl;
    for (int i = 0; i < n; i++)
    {
        cout<<a[i]<<" ";
    }
    cout<<endl;
    
    int maxNumber = a[0], iMaxNumber = 0, sumOfElements = 0;
    for (int i = 0; i < n; i++)
    {
        if (maxNumber < a[i])
        {
           maxNumber = a[i];
           iMaxNumber = i;
        }
    }
    cout<<"Индекс наибольшего элемента "<<iMaxNumber<<endl;
    
    
    int iFirstZero,iSecondZero;
    for (int i = 0; i < n; i++)
    {
        if (a[i] == 0)
        {
           iFirstZero = i;
           break;
       }
    }
    
    for (int i = 0; i < n; i++)
    {
        if (i == iFirstZero)
           continue;
        else
           if (a[i] == 0)
              iSecondZero = i;
    }
    
    for (int i = iFirstZero; i < iSecondZero; i++)
        sumOfElements += a[i];
    
    cout<<"Сумма элементов между первым и вторым нулевыми элементами равна "<<sumOfElements<<endl;
    
        //Начало решения вышеизложенной задачи
 
    for (int k = 0; k < (n + 1) / 2; k++)
    {
        if (k % 2 == 0)
        {
           for (int i = 0; i < n; i++)
           {
              if (i % 2 == 0 && (i + 1) % 2 != 0)
              {
                 int temp;
                 temp = a[i];
                 a[i] = a[i+1];
                 a[i+1] = temp;
              }
           }
        }
        else
        {
            for (int i = 0 ; i < n; i++)
            {
               if (i % 2 != 0 && (i + 1) % 2 == 0)
               {
                  int temp;
                  temp = a[i];
                  a[i] = a[i+1];
                  a[i+1] = temp;
               }
            }
        
        }
    }
        
   
    cout<<"Массив с нечетными индексами в первой части: "<<endl;
    for (int i = 0; i < n; i++)
    {
        cout<<a[i]<<" ";
    }
    cout<<endl;
    
    return 0;
        
}
Проблема заключается в том, что программа делает то что нужно, но по каким-то причинам при некоторых значениях меняет значение одной из переменных массива. Например, при вводе массива 1 2 3 4 5 6, оно выдает 4 2 6 1 0 3 , т.е. 5 почему то меняется на 0.
Компилятор gcc
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru