Форум программистов, компьютерный форум 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, обеспечив тем самым... подробнее

Показать сообщение отдельно
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
22.07.2011, 17:26     Изменение значения переменной во время исполнения
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
        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;
                       }
                }
                
            }
        }
о боже что это?
используй временные массивы и жизнь будет гораздо проще!

вообще удобно для решения данной задачи использовать stable_partition:
C++
1
2
3
4
5
6
7
8
9
        std::stable_partition(a,a+n, [] (int i) -> bool {
 
            static int cnt=0;
 
            if ((cnt++)&1) return true;
 
            return false;
            
        });
вопрос к понимающим людям кстати:
вот уже не 1-ый раз юзаю такую форму предиката. но приходится иметь на содержании статическую переменную cnt, а не хотелось бы.
можно ли сделать какую нибудть форму предиката, чтобы передавать и инкрементировать cnt как параметр?? и если да - то как?

Добавлено через 2 минуты
вот решение твоей задачи через временный массив:
C++
1
2
3
4
5
6
7
8
        int * new_a = new int[n];
 
        int cur=0;
 
        for (int i=1; i<n; i+=2)
            new_a[cur++]=a[i];
        for (int i=0; i<n; i+=2)
            new_a[cur++]=a[i];
всё!
 
Текущее время: 11:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru