Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
 Аватар для Iangyl
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495

Возврат массива из функции

31.03.2018, 16:13. Показов 2707. Ответов 24

Студворк — интернет-сервис помощи студентам
Здравствуйте! Нужно решить задачу, но для её решения я не могу понять как правильно вывести массив(mas) из ф-ции, чтобы показать в 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
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
#include <iostream>
#include <string.h>
using namespace std;
 
int funct(char *mass, int size);
 
int main()
{
    char string[10000] = "";
    cout << "Enter random text, please: " << endl;
    cin.getline(string, 10000);
    funct(string, 10000);
    cout << "Amount of words = " << mas[0] << endl;
    cout << "Amount of voice letters = " << mas[1] << endl;
    for (int i = 2, d = 1; i <= mas[0]; i++, d++)
    {
        cout << "Amount of letters in " << d << " word = " << mas[i] << endl;
    }
    return 0;
}
 
int funct(char *mass, int size)
{
    int mas[10000];
    char *p;
    int numerator = 0;
    int massize = strlen(mass);
    for (int i = 0; i < massize; i++)
    {
        if (mass[i] == ' ') numerator++;
    }
    numerator++;
    mas[0] = numerator;
    // кол-во слов
    int numerator_1 = 0;
    for (int i = 0; i < massize; i++)
    {
        if (mass[i] == 'e'
            && mass[i] == 'y'
            && mass[i] == 'u'
            && mass[i] == 'i'
            && mass[i] == 'o'
            && mass[i] == 'a'
            && mass[i] == 'E'
            && mass[i] == 'Y'
            && mass[i] == 'U'
            && mass[i] == 'I'
            && mass[i] == 'O'
            && mass[i] == 'A')
            numerator_1++;
    }
    mas[1] = numerator_1;
    // кол-во гласных букв
    int k = 2;
    for (int i = 0; i <= numerator; i++)
    {
        p = strtok(mass, " ");
        bool local_tf = true;
        do
        {
            mas[k] = strlen(p);
            k++;
            local_tf = false;
        } while (!local_tf);
    }
    // кол-во букв в слове
    return *mas;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.03.2018, 16:13
Ответы с готовыми решениями:

Возврат массива из функции
Здравствуйте, Не пойму почему не работает данный код. Пишет cannot convert 'std::string*' to 'int*' in return По теории я жду...

Возврат массива из функции
Есть задача: используя функции, вычислить количество элементов заранее введённых массивов, которые кратны Х, и переписать в отдельный...

Возврат массива из функции
Здравствуйте. Не могу разобраться, почему при передачи массива из функции но не правильно передаётся. Вот результат.

24
 Аватар для Iangyl
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495
01.04.2018, 16:23  [ТС]
Студворк — интернет-сервис помощи студентам
Не решил, к сожалению. Вот, пожалуйста:
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
#include <iostream>
#include <string.h>
using namespace std;
 
int *funct(char *mass, int size);
 
int main()
{
    char str[10000] = "";
    cout << "Enter random text, please: " << endl;
    cin.getline(str, 10000);
    int *mas = funct(str, 10000);
    cout << "Amount of words = " << mas[0] << endl;
    cout << "Amount of voice letters = " << mas[1] << endl;
    for (int i = 2, d = 1; i <= mas[0]; i++, d++)
    {
        cout << "Amount of letters in " << d << " word = " << mas[i] << endl;
    }
    return 0;
}
 
int *funct(char *mass, int size)
{
    static int mas[10000];
    char *p;
    int numerator = 0;
    int massize = strlen(mass);
    for (int i = 0; i < massize; i++)
    {
        if (mass[i] == ' ') numerator++;
    }
    numerator++;
    mas[0] = numerator;
    // кол-во слов
    int numerator_1 = 0;
    for (int i = 0; i < massize; i++)
    {
        if (mass[i] == 'e'
            && mass[i] == 'y'
            && mass[i] == 'u'
            && mass[i] == 'i'
            && mass[i] == 'o'
            && mass[i] == 'a'
            && mass[i] == 'E'
            && mass[i] == 'Y'
            && mass[i] == 'U'
            && mass[i] == 'I'
            && mass[i] == 'O'
            && mass[i] == 'A')
            numerator_1++;
    }
    mas[1] = numerator_1;
    // кол-во гласных букв
    int k = 2;
    for (int i = 0; i <= numerator; i++)
    {
        p = strtok(mass, " ");
        bool local_tf = true;
        do
        {
            mas[k] = strlen(p);
            k++;
            local_tf = false;
        } while (!local_tf);
    }
    // кол-во букв в слове
    return mas;
}
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,430
01.04.2018, 16:54
Лучший ответ Сообщение было отмечено Iangyl как решение

Решение

Цитата Сообщение от Iangyl Посмотреть сообщение
Вот
Задача в чём?

Добавлено через 9 минут
59-64 - бесконечный цикл. 39-49 вместо && нужно ||.

Добавлено через 13 минут
Цитата Сообщение от Iangyl Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
    int k = 2;
    for (int i = 0; i <= numerator; i++)
    {
        p = strtok(mass, " ");
        bool local_tf = true;
        do
        {
            mas[k] = strlen(p);
            k++;
            local_tf = false;
        } while (!local_tf);
    }
C++
1
2
3
4
5
6
7
8
    int k = 2;
    p = strtok(mass, " ");
    while (p)
    {
        mas[k] = strlen(p);
        k++;
        p = strtok(NULL, " ");
    }
Добавлено через 5 минут
Цитата Сообщение от Iangyl Посмотреть сообщение
C++
1
for (int i = 2, d = 1; i <= mas[0]; i++, d++)
C++
1
for (int i = 2, d = 1; i < 2 + mas[0]; i++, d++)
1
 Аватар для Iangyl
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495
01.04.2018, 21:50  [ТС]
Спасибо! У меня все заработало. Но я хотел прежде попросить вас объяснить вот эту строку:
Цитата Сообщение от nd2 Посмотреть сообщение
1
for (int i = 2, d = 1; i < 2 + mas[0]; i++, d++)
а именно: 2 + mas[0]
и вот здесь:
Цитата Сообщение от nd2 Посмотреть сообщение
int k = 2;
p = strtok(mass, " ");
while (p)
{
mas[k] = strlen(p);
k++;
p = strtok(NULL, " ");
}
Разве не нужен цикл для команды strtok(), когда в строке несколько слов, которые нужно разбить или он сразу всю строку разбивает? И что делает strtok(NULL, " ")? Объясните пожалуйста.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,430
01.04.2018, 22:07
Цитата Сообщение от Iangyl Посмотреть сообщение
и вот здесь:
Насчёт здесь читай про strtok (это, вообще-то, не С++, чтобы здесь об этом вопросы задавать).
Цитата Сообщение от Iangyl Посмотреть сообщение
Разве не нужен цикл для команды strtok()
А разве его (цикла), в моём коде, нет?
Цитата Сообщение от Iangyl Посмотреть сообщение
вот эту строку:
Что здесь непонятно? Индексы, по которым находятся размеры слов, начинаются с 2, количество слов находится по индексу 0.
1
 Аватар для Iangyl
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495
01.04.2018, 22:39  [ТС]
Понял, принял, обработал
Спасибо большое!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.04.2018, 22:39

Возврат массива из функции
Программа должна переводить числа с 10 системы в двоичную... но почемуто выводит некорректно... Вот код... #include &lt;iostream&gt; ...

Возврат массива из функции
В объекте есть массив int state;, который мне нужно из него вытащить. Вижуал показывал ошибку, когда я пытался вернуть указатель state в...

возврат динамического массива из функции
Всем привет, вот часть кода функцииchar *result=new char; int ind=0; int number=0; int k=1; while...

Возврат созданного в функции массива
Верна ли следующая конструкция? void LoadArray(float* array, int &amp; count) { int fcount = 30;//данная цифра подсчитывается...

Не могу организовать возврат массива из функции
Помогите пожалуйста! Надо сделать так, чтоб deystvie1 возвращал готовый массив с нулями. #include &quot;stdafx.h&quot; #include...


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru