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

как передать структуру в функцию, чтобы после выполнения функции он(массив в данном случае) вернулся измененным? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Определить методы вычисления гипотенузы и площади прямоугольника http://www.cyberforum.ru/cpp-beginners/thread536600.html
Создать класс Pair (пара чисел); определить методы изменения полей и вычисления произведения чисел. Определить производный класс RightAngled с полями-катетами. Определить методы вычисления гипотенузы и площади прямоугольника.
C++ Программирование задач с использованием функций. Пусть даны две вещественные матрицы порядка N. Получить новую матрицу следующим способом: прибавлением к элементам каждого столбца первой матрицы произведения элементов соответствующих строк второй матрицы. http://www.cyberforum.ru/cpp-beginners/thread536599.html
Программирование задач обработки структур и файлов. C++
Даны сведения об экспорте товаров: название страны, импортирующей товар, наименование товара и объем поставляемой партии в штуках. Найти страны, в которые экспортируется данный товар и общий объем его экспорта.
C++ Удалить из списка все идентификаторы, начинающиеся с заданной буквы
как удалить из списка все идентификаторы, начинающиеся с заданной буквы? // prog.cpp: определяет точку входа для консольного приложения. // // программа включения идентификатора и печати списка #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <string.h>
C++ Вывод на экран таблицы с вопросами и ответами http://www.cyberforum.ru/cpp-beginners/thread536515.html
мне нужно написать программу, которая выводит на экран таблицу: в ней должны быть вопросы(5) и ответы,например: Вопрос|Ответ сколько вам лет?|7 как вас зовут?|ввыыв ваша фамилия|лдподол ваше отчество| ыыыыыв где вы учитесь?|вааавф я попытался сделать , но у меня ничего не получилось:
C++ Строка, слова в которой разделены пробелами 1) слова в строке разделены пробелами. найти самое длинное слово 2) слова в строке разделены последовательностями пробелов. удалить лишние пробелы 3) дана строка, слова в которой разделены пробелами. удалить из строки самое короткое слово 4) дана строка, слова в которой разделены пробелами. все слова в стороке перевернуть 5) дана строка, слова в которой разделены пробелами. посчитать... подробнее

Показать сообщение отдельно
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
02.04.2012, 13:48  [ТС]     как передать структуру в функцию, чтобы после выполнения функции он(массив в данном случае) вернулся измененным?
soon,
функция обработки массива(вызывается из функции function, если как в первом сообщении):
C++
1
2
3
4
5
6
7
8
9
10
11
void fun1_left(MARKER &struct_m, int index, int len_mark, int len_proc, int len_slovo)
{
    while(len_slovo != 0)
    {
        for(int q = len_mark - len_proc; q < len_mark; q++)
        {
            struct_m.mark[q] = struct_m.mark[q + 1];
        }
        len_slovo--;
    }
}
из этой функции вызвается fun1_left() (место вызова отмечено комментарием):
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
void marker_marker(ifstream &input_marker, ofstream &output, MARKER *struct_m)
{
    char slovo[size], zamena[size], *proc;
    int i = 0,
        pos = 0,
        len_mark = 0;
    struct_m->marker = '*';
    while(!input_marker.eof() && struct_m->mark)
    {
        input_marker.get(struct_m->mark[i]);
        if(struct_m->mark[i] == struct_m->marker)
            pos = i;
        i++;
    }
    struct_m->mark[pos] = '\0';
    cout << "Исходная строка: " << struct_m->mark << endl;
    choise_of_words(slovo, zamena);
    proc = strstr(struct_m->mark, slovo);
    if(proc == NULL)
    {
        cout << slovo << " в строке не найдено." << endl;
    }
    len_mark = strlen(struct_m->mark);
    int len_slovo = strlen(slovo);
    for(int b = 0; b < len_mark; b++)
    {
        proc = strstr(struct_m->mark, slovo);
        if(proc == NULL)
            break;
        int len_proc = strlen(proc);
        int index = len_mark - len_proc + 1;
        if(struct_m->mark[index - 1] != ' ')
            fun1_left(struct_m, index, len_mark, len_proc, len_slovo); // вызов функции
    }
    cout << "Обработанная строка: " << struct_m->mark << endl;
}
и это main():
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
int main()
{
    MARKER struct_m;
    LEN struct_l;
    int Menu = 0;
    ifstream input_marker("/media/wind/forlabs/2_sem/l3/input_marker.txt");
    ifstream input_length("/media/wind/forlabs/2_sem/l3/input_length.txt");
    ofstream output("/media/wind/forlabs/2_sem/l3/output.txt");
    input_length.getline(struct_l.len, size);
    cout << "1. Маркер -> Маркер." << endl
         << "2. Маркер -> Длина." << endl
         << "3. Длина -> Маркер." << endl
         << "4. Длина -> Длина." << endl
         << "Выбор: ";
    cin >> Menu;
    switch(Menu)
    {
        case 1:
            marker_marker(input_marker, output, &struct_m);
            break;
        case 2:
            marker_length(input_marker, output, &struct_m);
            break;
        case 3:
            length_marker(input_length, output, &struct_l);
            break;
        case 4:
            length_length(input_length, output, &struct_l);
            break;
    }
}
то есть в main() вызывается marker_marker(), а из marker_marker() вызывается fun1_left()
 
Текущее время: 03:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru