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

Индусский код - C++

Восстановить пароль Регистрация
 
nuHrBuH
 Аватар для nuHrBuH
248 / 248 / 99
Регистрация: 04.03.2011
Сообщений: 590
05.06.2014, 18:16     Индусский код #1
Помогите укоротить код.
node - процедура, которая записывает в файл кучу данных.
Мне нужно произвести все те же операции еще раз, только уже с аналогичной функцией "element". Думал записать данные в структуру, но структуры функций node и element разные, поэтому не получается сделать общую для них процедуру для записи данных в файл.
Может можно написать процедуру, которая использует процедуру?)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
for(i = 1; i <= ny; i++)
    {
        for(j = 1; j <= nx; j++)
        {
            if ((i%2) != 0)
                if ((j%2) != 0)
                    for(k = 1; k <= nz; k++)
                        node(i,j,k, rx,ry,z, nx,nz); 
                else
                    for(k = 1; k <= nz; k++)
                        node(i,j,k, fx,ry,z, nx,nz); 
            else
                if ((j%2) != 0)
                    for(k = 1; k <= nz; k++)
                        node(i,j,k, rx,fy,z, nx,nz); 
                else
                    for(k = 1; k <= nz; k++)
                        node(i,j,k, fx,fy,z, nx,nz); 
        }
    }
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
05.06.2014, 22:25     Индусский код #2
Цитата Сообщение от nuHrBuH Посмотреть сообщение
все те же операции еще раз, только уже с аналогичной функцией "element"
Если сигнатуры node и element совпадают, то можно передавать указатель на функцию.
Цитата Сообщение от nuHrBuH Посмотреть сообщение
но структуры функций node и element разные
Что за структуры функций?
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
05.06.2014, 23:03     Индусский код #3
C++
1
2
for(k = 1; k <= nz; k++)
                        node(...);
Можно заменить на вызов одного метода.

C++
1
(i%2) != 0
имхо читабельнее
C++
1
i&1
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
05.06.2014, 23:09     Индусский код #4
Цитата Сообщение от Nekto Посмотреть сообщение
Можно заменить на вызов одного метода.
Там 4ый аргумент отличается. Видимо ТС не хотел вносить условие в цикл.
nuHrBuH
 Аватар для nuHrBuH
248 / 248 / 99
Регистрация: 04.03.2011
Сообщений: 590
06.06.2014, 00:14  [ТС]     Индусский код #5
Цитата Сообщение от Tulosba Посмотреть сообщение
Что за структуры функций?
node и element - процедуры, которые сразу пишут в файл. Но если сделать, чтобы они возвращали значения (использовать структуру в другой процедуре), то они буду разные. Например, одна из них будет возвращать int и char, а другая double, char, int.

Цитата Сообщение от Nekto Посмотреть сообщение
имхо читабельнее
Оно же будет всегда выполнятся, кроме нуля?

Может неясно изъясняю, пробачте)
IrineK
Заблокирован
06.06.2014, 00:19     Индусский код #6
Вот это:
C++
1
for(i = 1; i <= ny; i++)
случайно не это:
C++
1
for(i = 0; i < ny; i++)
?
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
06.06.2014, 00:30     Индусский код #7
Цитата Сообщение от nuHrBuH Посмотреть сообщение
node и element - процедуры, которые сразу пишут в файл. Но если сделать, чтобы они возвращали значения (использовать структуру в другой процедуре), то они буду разные. Например, одна из них будет возвращать int и char, а другая double, char, int.
std::function/бинды/wrapper-ы.
Цитата Сообщение от nuHrBuH Посмотреть сообщение
Оно же будет всегда выполнятся, кроме нуля?
0&1 - false
1&1 - true
2&1 - false
3&1 - true
4&1 - false
...
nuHrBuH
 Аватар для nuHrBuH
248 / 248 / 99
Регистрация: 04.03.2011
Сообщений: 590
06.06.2014, 10:07  [ТС]     Индусский код #8
Цитата Сообщение от IrineK Посмотреть сообщение
случайно не это:
не, с единицы начинается)

Цитата Сообщение от Nekto Посмотреть сообщение
std::function/бинды/wrapper-ы.
Так получается под каждую функцию потом еще свою процедуру писать?

Цитата Сообщение от Nekto Посмотреть сообщение
0&1 - false
1&1 - true
2&1 - false
3&1 - true
4&1 - false
А как это "побитовое И"?
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.06.2014, 10:24     Индусский код #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от nuHrBuH Посмотреть сообщение
А как это "побитовое И"?
это когда для каждого бита одного операнда выполняется "логическое и" для соответствующего бита второго операнда, но в итоге получаем не "истина/ложь", а "1/0" в каждой позиции итогового числа.

Добавлено через 4 минуты
Исходный код упрощается до
C++
1
2
3
4
5
6
7
8
for(i = 1; i <= ny; i++)
{
     for(j = 1; j <= nx; j++)
     {
         for(k = 1; k <= nz; k++)
              node(i, j, k, j%2?rx:fx, ry, z, nx, nz); 
     }
}
Если я ничего не напутал

Добавлено через 2 минуты
Или даже так, чтобы уменьшить кол-во сравнений:
C++
1
2
3
4
5
6
7
8
9
for(i = 1; i <= ny; i++)
{
     for(j = 1; j <= nx; j++)
     {
          T v = j%2?rx:fx; // где T - тип rx, fx
          for(k = 1; k <= nz; k++)
             node(i, j, k, v , ry, z, nx, nz); 
     }
}
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5547 / 2561 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
06.06.2014, 13:04     Индусский код #10
Цитата Сообщение от Tulosba Посмотреть сообщение
Или даже так
Главное не перейти ту грань, за которой он начнет обратно усложняться.
nuHrBuH
 Аватар для nuHrBuH
248 / 248 / 99
Регистрация: 04.03.2011
Сообщений: 590
06.06.2014, 14:33  [ТС]     Индусский код #11
Цитата Сообщение от Tulosba Посмотреть сообщение
j%2?rx:fx
А это что за чудеса?)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2014, 14:41     Индусский код
Еще ссылки по теме:

Написать код для игры НИМ. проверьте пожалуйста тот ли это код C++
индусский код. Ввести 3 числа, и отсортировать по возрастанию C++
Перевести код программы Паскаля в код С++ C++

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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.06.2014, 14:41     Индусский код #12
Цитата Сообщение от nuHrBuH Посмотреть сообщение
А это что за чудеса?)
Тернарный оператор.
Yandex
Объявления
06.06.2014, 14:41     Индусский код
Ответ Создать тему
Опции темы

Текущее время: 17:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru