Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

05.06.2014, 18:16. Просмотров 549. Ответов 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); 
        }
    }
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2014, 18:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Индусский код (C++):

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

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

Код написан в Dev C. Не работает в Visual. Как нужно переделать код? - C++
Здравствуйте. Столкнулась с такой проблемой: код был написан в Dev C, но в Visual он выдаёт ошибку. ...

Не получается запустить длинный код Алгоритма Гомори, код правильный. - C++
Собственно как запустить код через С++Builder 6 #include&lt;ctype.h&gt; #include&lt;string.h&gt; #include&lt;conio.h&gt; #include&lt;stdio.h&gt; ...

Написать код для игры НИМ. проверьте пожалуйста тот ли это код - C++
#include &lt;string&gt; using namespace std; int compChoose(int markers); int userChoose(int markers); int...

Как получить исходный код *.exe или отредактировать его исполняемый код? - C++
Собственно возможно ли декомпилить его так, чтобы можно было потом обратно скомпилировать? Или хотя-бы отредактировать код, только не...

11
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
05.06.2014, 22:25 #2
Цитата Сообщение от nuHrBuH Посмотреть сообщение
все те же операции еще раз, только уже с аналогичной функцией "element"
Если сигнатуры node и element совпадают, то можно передавать указатель на функцию.
Цитата Сообщение от nuHrBuH Посмотреть сообщение
но структуры функций node и element разные
Что за структуры функций?
0
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
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
05.06.2014, 23:09 #4
Цитата Сообщение от Nekto Посмотреть сообщение
Можно заменить на вызов одного метода.
Там 4ый аргумент отличается. Видимо ТС не хотел вносить условие в цикл.
0
nuHrBuH
249 / 249 / 99
Регистрация: 04.03.2011
Сообщений: 590
06.06.2014, 00:14  [ТС] #5
Цитата Сообщение от Tulosba Посмотреть сообщение
Что за структуры функций?
node и element - процедуры, которые сразу пишут в файл. Но если сделать, чтобы они возвращали значения (использовать структуру в другой процедуре), то они буду разные. Например, одна из них будет возвращать int и char, а другая double, char, int.

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

Может неясно изъясняю, пробачте)
0
IrineK
Заблокирован
06.06.2014, 00:19 #6
Вот это:
C++
1
for(i = 1; i <= ny; i++)
случайно не это:
C++
1
for(i = 0; i < ny; i++)
?
0
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
...
1
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
А как это "побитовое И"?
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 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); 
     }
}
0
SatanaXIII
Супер-модератор
Эксперт С++
5619 / 2654 / 246
Регистрация: 01.11.2011
Сообщений: 6,550
Завершенные тесты: 1
06.06.2014, 13:04 #10
Цитата Сообщение от Tulosba Посмотреть сообщение
Или даже так
Главное не перейти ту грань, за которой он начнет обратно усложняться.
0
nuHrBuH
249 / 249 / 99
Регистрация: 04.03.2011
Сообщений: 590
06.06.2014, 14:33  [ТС] #11
Цитата Сообщение от Tulosba Посмотреть сообщение
j%2?rx:fx
А это что за чудеса?)
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
06.06.2014, 14:41 #12
Цитата Сообщение от nuHrBuH Посмотреть сообщение
А это что за чудеса?)
Тернарный оператор.
1
06.06.2014, 14:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2014, 14:41
Привет! Вот еще темы с ответами:

перевод десятичного вещественного в машинный код(двоичный код) - C++
пожалуйста , подскажите пожалуйста код C++ ,для перевода вещественного числа в машиное (двоичное представление,32 бит). Без использования...

Visual c++ код перевести в gcc linux код - C++
Ниже есть код. Нужно сделать так, что бы он компилировался и работал в линуксе(компиляция с помощью gcc). #include &quot;stdio.h&quot; #pragma...

перевести код на С++ или написать свой код - C++
Задано предложение. Составить программу вывода на экран слов, в которых первая и последняя буквы совпадают. program Project1; ...

код, который прекрасно выполняет Code::Blocks не выполняеться в Студии, как сделатьь так чтобы Студия воспринимала этот код?? - C++
Ребята, обьясните мне чего код, который прекрасно выполняет Code::Blocks не выполняеться в Студии, там требуються существенно другие...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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