Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Передача массива в несколько функций

Привет!

Возник такой вопрос: Как передать исходный массив в несколько функции, так, чтобы исходный массив не изменялся ?
Ответ:
Сообщение от Unit_39
Как передать исходный массив в несколько функции, так, чтобы исходный массив не изменялся ?
Если в функции элементы модифицируются, то передавать копию (например через std::vector по значению)
Если нужно всего лишь избежать случайной модификации элементов, то достаточно просто указать const в параметре. Т.е. при передаче обычного сишного массива будет так:
Код C++
1
void f( const T* arr, size_t size )
Добавлено через 41 секунду
Сообщение от Unit_39
А какой вариант лучше/быстрее/чаще используется?
Зависит от того, что действительно надо делать.
Вопрос: Заменить несколько функций в dll на свои

Есть приложение использующее DLL в которой 200 доступных функций. На приложение и dll нету исходных кодов.
Необходимо написать промежуточный обработчик для входных данных для нескольких функций. Как это легче всего сделать?
Т.е. по сути как заменить несколько функций в dll на свои?
Ответ: предлагали уже?
Вопрос: Создание матрицы и сортировка, используя несколько функций

Доброго времени суток, всем пользователям.
Нуждаюсь в помощи, имею код, в котором лишь используется 1 функция int main ();
Но согласно условиям требуется использовать несколько функций, и уже ссылаться на них, что того требует условия лабораторной работы.
Был бы очень благодарен, т.к буду пытаться сдать данную работу в третий раз, ведь каждый раз, отправляют на пересдачу.

Да, несколько нюансов.

1.Матрица (N+15)x(N+15) отсортировать по убыванию и записать результат в виде вертикальной нисходящей змейки, числа генерировать случайно в интервале [-N-15; N+15]
2. Пользователь так же должен ввести лично размеры матрицы.

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
#include <stdafx.h>
#include <iostream>
#include <math.h>
using namespace std;
int matr[29][29], i = 0, j = 0, stack;
bool k, f = 0, t = 1;
int  main()
{
    cout << "UNSORTED MATRIX" << '\n';
    for (i = 0; i < 29; i++) {
        for (j = 0; j < 29; j++) {
            matr[i][j] = (rand() % 59) - 29;
            cout << matr[i][j] << " ";
        }
        cout << endl;
    }
    cout << "SORTED MATRIX" << '\n';
    while (t) {
        t = 0;
        for (i = 0; i < 29; i++) {
            if (i == 28) f = 1;
            else f = 0;
            if (i % 2 == 0) {
                for (j = 0; j < 29 - f; j++) {
                    if (j == 28) k = 1;
                    else k = 0;
                    if (matr[i][j] < matr[i + k][j + !k]) {
                        stack = matr[i][j];
                        matr[i][j] = matr[i + k][j + !k];
                        matr[i + k][j + !k] = stack;
                        t = 1;
                    }
                }
            }
            else {
                for (j = 28; j >= f; j--) {
                    if (j == 0) k = 1;
                    else k = 0;
                    if (matr[i][j] < matr[i + k][j - !k]) {
                        stack = matr[i][j];
                        matr[i][j] = matr[i + k][j - !k];
                        matr[i + k][j - !k] = stack;
                        t = 1;
                    }
                }
            }
        }
    }
    for (j = 0; j < 29; j++) {
        for (i = 0; i < 29; i++) {
            cout << matr[i][j] << " ";
        }
        cout << endl;
    }
    system("PAUSE");
    return 0;
}
Ответ: Чем готовый образец не устраивает? Лень под себя переделать? нам тоже....
Вопрос: Вызов нескольких функций в цикле по имени

Хочу сделать в цикле запрос функций в стиле

Code
1
2
3
4
5
6
7
8
9
10
11
12
NumberLayers = 4
for i = 1, NumberLayers do
  //Какой-то повторяемый код
 
   Layers i    -- Как это написать правильно???
 
  //Какой-то повторяемый код
end
 
function Layers 0()...
function Layers 1()...
function Layers X()...
Как сделать, чтобы в цикле вызывались разные функции
не используя if then, т.к. функций может быть сотни

П.С. Это не VB, а скриптовый язык практически идентичный.
Ответ: Это ветка VB .NET, здесь выкладываются решения с использованием функций и возможностей .NET

Что у Вас за скрипт и что его интерпретирует - другая сказка, к ветке, наверно, отношения не имеет.
Поищите на форуме раздел, наиболее подходящий, и задайте вопрос там.
Вопрос: Использование функций и процедур при вычислении сложных формул

Доброго времени суток!
Помогите пожалуйста разобраться, заранее простите за глупые вопросы. Степень знания языка невысокая, а задачу решить надо.
Есть сложная формула, грубо говоря это сумма функций(математическо-физических), в каждой из которых задействовано ещё несколько функций, которые в свою очередь зависят от третьих функций. При этом одна и та же функция используются в разных функциях более высокого порядка.
Стандарт F.90+, по умолчанию компилирую на Force 2.0.
Собственно вопрос: каким подпрограммам отдать предпочтение, чтобы это было не только оптимально для машины, но и структура кода была наглядно понятна условно несведущему в языке человеку, а также удобна конечному пользователю?
Уточнение - функции(математические) берут данные на обработку из внешних файлов, данные в виде одно- двумерных массивов, диапазон значений по каждому измерению в пределах тысячи символов, может быть что-то упустил из вида.
Спасибо!
Ответ: Subroutine - подпрограмма- выполнение последовательности нескольких (в общем случае разных) действий.
Function - функция идеологически правильно делать в ней только одно конкретное действие.
Common block - место памяти куда могут обращаться сразу несколько программных единиц ( подпрограммы, функции и тд) может быть использован для передачи чего-то из одной подпрограммы в другую или в функцию.

Нарисуйту блок-схему на бумажке тогда будет понятнее как построить программу.

Я бы выделил в отдельную подпрограмму блок с получением входных данных (чтение из файла/интерполяция если надо и тд.),
а далее рассчитывать все остальные
функций(математическо-физических)
необходимые для суммы. Тут как бы и так должно быть понятно, что огород городить не нужно. Ключевое слово функции прозвучало.

И самое главное - осмысленные имена функций и переменных!
Вопрос: Как вызвать функцию в пространстве имен?

Я создал несколько файлов. В каждом файле есть одно пространство имен. И несколько функций.
Например.

file1.php
PHP
1
2
3
4
5
namespace myspace\space1;
function test1($var)
{
//код
}
file2.php
PHP
1
2
3
4
5
6
7
8
9
10
namespace myspace\space2;
function test1($var)
{
//код
}
 
function test2($var)
{
//код
}
file3.php
PHP
1
//Тут нет пространства имен

Любой файл, может быть включен (include) в любой файл.
Функции любого файла, могут вызывать (использовать) функции любого файла. Например, своего файла или другого файла.
Каким образом я могу вызывать функции в любом файле?

По логике как то так, но это не работает
PHP
1
2
3
namespace myspace\space1;
 
\myspace\space2\test1($var); //Fatal error: Uncaught Error: Call to undefined function myspace\space2\test1....
Ответ:
Кликните здесь для просмотра всего текста

Сообщение от Jewbacabra
useruser, а интерпретатор говорит что нет. Ему я верю больше.
Странно. Выполнил всё в тестовом примере - видит, работает, не ругается.


1) Так верно?
test1.php
PHP
1
2
3
4
5
6
7
8
9
10
11
namespace myspace\space1;
function test()
{
//код
}
 
function test1()
{
\myspace\space1\test();
//или просто test();? а с учетом кода ниже?
}
2) А так?
test2.php
PHP
1
2
3
4
5
6
7
namespace myspace\space2;
include_once (__DIR__.'/test1.php'); //Код выше
 
function test2()
{
\myspace\space1\test1();
}
3) И вот так?
test3.php
PHP
1
2
include_once (__DIR__.'/test2.php');
\myspace\space2\test2();


Добавлено через 1 час 17 минут
Jewbacabra - спасибо, разобрался в своем вопросе.
Не было там этой функции.

Сообщение от Jewbacabra
Ему я верю больше.
и вроде верно, но

Сообщение от useruser
Она там есть. В файле.
и это верно.

Она там как бы есть, но реально её как бы и нет. )

Это глюк текстового редактора. Notepad++ Даже не понимаю как, почему и из за чего. Первый раз такое.
Он вставлял заместо английской "c" русскую (с кодировкой всё ок). Причем это не моя ошибка. Он сам. И прятал её. 0_0

Беру английское название функции и копирую его в другой файл. И вижу русскую букву "с".
Как так? Смотрю в исходный - английская (русская другим цветом).
Хм..скопировал не оттуда? Не скопировал - в буфере что то не то? Ладно. Правим ручками.
Функция не найдена!
Так - там английские, тут тоже. ??
А и там русская "с". Но она не отображается как русская. Вот так.
Мистика... (

И 3 часа потрачено зря (
Вопрос: Аргумент разных типов для одной функции (без перегрузки)

День всем добрый!

Я тут решил немного облегчить себе жизнь.

У меня есть функция:

C++
1
2
3
4
5
6
7
void CombineWCHAR(WCHAR wchar_main[256], WCHAR wchar_0[256], WCHAR wchar_1[256] = L"", WCHAR wchar_2[256] = L"", WCHAR wchar_3[256] = L"", WCHAR wchar_4[256] = L"") {
    wcscat(wchar_main, wchar_0);
    wcscat(wchar_main, wchar_1);
    wcscat(wchar_main, wchar_2);
    wcscat(wchar_main, wchar_3);
    wcscat(wchar_main, wchar_4);
}
Как вы, наверное, поняли, она объединяет до шести строк типа WCHAR. Чтобы несколько функций много раз не писать, подключил заголовок с такой функцией.

Теперь я хочу апгрейдить эту функцию таким образом:

Я записываю первый аргумент типа WCHAR, а остальные аргументы типа char. Или, к примеру, третий и пятый аргументы char, а остальные WCHAR.

Как можно реализовать возможность введения аргумента нескольких разных типов? Чтобы потом проверять, какого типа агрумент и уже дальше либо перекодровать его и клеить, либо просто клеить.

Но без перегрузки, а то для всех возможных вариантов слишком нудно писать.

Добавлено через 10 минут
И ещё один вопрос: можно ли задефайнить всё так, чтобы, к примеру, если я написал:

C++
1
2
3
WCHAR a;
WCHAR b;
WCHAR c = a + b;
Это посчиталось компилятором как:

C++
1
2
wcscat(c, a);
wcscat(c, b);
Ответ:
Сообщение от mkostoevr
типа STRING и WSTRING неприменимы.
Для таких функций есть
C++
1
2
3
4
5
6
7
8
9
10
#include <string>
#include <cstdio>
 
int main() {
    std::string  s1 = "std::string s1";
    
    fputs (s1.c_str(), stdout);
    
    return 0;
}
Вопрос: Текстовая функция ПОДСТАВИТЬ в Excel 2007

Здравствуйте!

подскажите пожалуйста где можно почитать о применении текстовых функций и создании объединённых вариантов из двух или нескольких функций.
Например, как в одной ячейке, применив функцию ПОДСТАВИТЬ, назначить не один вариант старого текста, а два и подставить один вариант нового текста.
Например вместо двух вариантов старого текста: к-т и к-кт подставить новый текст: комплект

Конечно эту задачу можно решить дважды применив функцию ПОДСТАВИТЬ, но если возможно иметь несколько аргументов, то можно решать преобразование быстрее.
Ответ: МаркД,

Написание возможно было бы быстрее, для первой формулы, но Excel не поддерживает такого. В крайнем случае можно воспользоваться пользовательской функцией. А почему не устраивает вариант с двойной ПОДСТАВИТЬ?
Вопрос: Можно ли исключить названия экспортируемых функций?

Возник вопрос, ответа на который я до сих пор не могу найти... . Когда создается портабельное приложение, в его таблице экспорта (при просмотре соотв. программами) содержится список из нескольких функций: как правило это _Form1, finalize, initialize и еще парочка других. Использованные компоненты из базовых наборов никак не представлены. Но стоит только применить сторонний компонент, и все его функции тут же высвечиваются, хотя применялась аналогичная базовым библиотека bpl. Видимо, этим занимается компоновщик, но как его отучить...?... . Этот перечень кроме того, что занимает объем, иногда бывает нежелателен. Можно, конечно, применять хакерские примочки, но может кто знает, каким образом избежать появления этого списка в "экспорте"?
Ответ: Хотелось бы продолжить эту тему с Вашего позволения
А как быть если исходников компонента нет? Я использую сторонний компонент, лицензию на который я покупал без исходников (просьба не предлагать купить исходники - это довольно дорого ))))) )
Компонент достаточно объемный, и портянка в экспорте из пары-тройки сотен функций несколько раздражает ))
Вопрос: Connect, вызов нескольких функций

Привет. Есть обычный сonnect. При нажатии на кнопку мне нужно вызвать более одной функции. Как правильно это сделать? писать несколько коннектов на один и тот же сигнал с вызовом разных функций, или в реализации первой функции дописать вызов других(бред же?)) ) ?.
Ответ:
Сообщение от oxotnik
Так тоже ресиверы снаружи протухнут, а внутри лябды вы об этом не узнаете
Вы вырвали фразу из контекста, я же и написал выше, что для такого метода нужно указали подчищать.

Но вы всё равно чертовски правы в том, что что-то может протухнуть без ведома разработчика. Например, если окно не удалять, а закрыть через крестик (с выставленным флагом WA_DeleteOnClose).