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

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

Войти
Регистрация
Восстановить пароль
 
nuHrBuH
249 / 249 / 99
Регистрация: 04.03.2011
Сообщений: 590
#1

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

05.06.2014, 18:16. Просмотров 509. Ответов 11
Метки нет (Все метки)

Помогите укоротить код.
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)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2014, 18:16     Индусский код
Посмотрите здесь:

Массивы и индусский код - C++
Имеем очевидную задачу: Дан массив из 4-ых вещественных чисел. Определить величину наименьшего среди положительных элементов массива. И...

индусский код. Ввести 3 числа, и отсортировать по возрастанию - C++
задание: ввести 3 числа, и отсортировать по возрастанию, (не массивом). я, в общем то сделал) вопрос, как это делается по человечески? ...

Индусский сишный компилятор - Шутки юмора
Недавно видел индусский синшный компилятор который не проходит тесты на анси с) После оценки скорости работы - &quot;А куда индусам...

уникальный код для входа на опрос. код действителен только один раз - PHP БД
Привет всем! возникла проблема типа &quot;как воплотить в жизнь&quot; в php. Сценарий такой: 600 человек получают уникальный код для входа на...

Как совместить существующий код в htaccess и код для редиректа 301 домена? - Apache
Делаю редирект со старого домена на новый. Применяю следующий код для редиректа Options +FollowSymLinks RewriteEngine On ...

Переведите, пожалуйста код с Паскаля на QBasic и отредактируйте код под условие задачи - QBasic
Ниже расположено условие задачи. Даны натуральное число m, целые числа {a}_{l},...,{a}_{lm} и целочисленная квадратная матрица порядка m....

Вывести символы, у которых код равен среднему арифметическому min и max код строки - Turbo Pascal
задание звучит следующим образом: Вывести символы у которых код равен среднему арифметическому min и max код строки. program lab4; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
05.06.2014, 23:09     Индусский код #4
Цитата Сообщение от Nekto Посмотреть сообщение
Можно заменить на вызов одного метода.
Там 4ый аргумент отличается. Видимо ТС не хотел вносить условие в цикл.
nuHrBuH
249 / 249 / 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
249 / 249 / 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
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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
Супер-модератор
Эксперт С++
5592 / 2626 / 239
Регистрация: 01.11.2011
Сообщений: 6,457
Завершенные тесты: 1
06.06.2014, 13:04     Индусский код #10
Цитата Сообщение от Tulosba Посмотреть сообщение
Или даже так
Главное не перейти ту грань, за которой он начнет обратно усложняться.
nuHrBuH
249 / 249 / 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     Индусский код
Еще ссылки по теме:

Код выдает кучу ошибок при построении. Этот код находится в DLL файле - C#
using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace TvProgrammProj ...

Код выполняемый из студии с пометкой debag, работает не так как уже компилированный код - C#
Здравствуйте, столкнулся с такой проблемой. Код выполняемый из студии с пометкой debag, работает не так как уже компилированный код....

DirectX 9.0 Ищу нормальный рабочий код для вывода текста. В книгах код не работает! - DirectX
Подскажите нормальный рабочий код для вывода текста на экран. Сложность в том, что при разных версиях DirectX разные коды. В интернете...


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

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

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