Форум программистов, компьютерный форум 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, 14:34  [ТС]     как передать структуру в функцию, чтобы после выполнения функции он(массив в данном случае) вернулся измененным?
а, и вот код в процессе его создания(т.е. основную задачу не выполняет еще и работают не все функции), может кому пригодится решение:
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include <iostream>
#include <fstream>
#include <cstring>
#define size 256
using namespace std;
 
struct MARKER
{
    char mark[size];
    char marker;
};
 
struct LEN
{
    char len[size];
    unsigned lenght;
};
 
void fun1_left(struct 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_proc; q++)
        {
            struct_m->mark[q] = struct_m->mark[q + 1];
        }
        len_slovo--;
    }
}
 
void choise_of_words(char *slovo, char *zamena)
{
    cout << "Буду менять слово ";
    cin >> slovo;
    cout << "Поменять на слово ";
    cin >> zamena; 
    cout << "Меняем слово '" << slovo << "' на '" << zamena << "'." << endl;
}
 
void marker_marker(ifstream &input_marker, ofstream &output, struct 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;
}
 
void marker_length(ifstream &input_marker, ofstream &output, struct MARKER struct_m)
{
    
}
 
void length_marker(ifstream &input_length, ofstream &output, struct LEN struct_l)
{
    
}
 
void length_length(ifstream &input_length, ofstream &output, struct LEN struct_l)
{
    
}
 
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;
    }
}
Добавлено через 4 минуты
soon, да

то есть там(выше места вызова) была эта штуковина void f1_left(...........) - протокол вроде бы называется, я не помню
 
Текущее время: 05:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru