Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Iangyl
16 / 13 / 7
Регистрация: 31.03.2018
Сообщений: 318
Завершенные тесты: 2
1

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

31.03.2018, 16:13. Просмотров 1156. Ответов 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
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2018, 16:13
Ответы с готовыми решениями:

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

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

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

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

24
nmcf
6546 / 5767 / 2624
Регистрация: 14.04.2014
Сообщений: 24,505
31.03.2018, 16:26 2
24-ю строку в main() перенеси.
0
Starfer
114 / 93 / 79
Регистрация: 30.11.2017
Сообщений: 230
Завершенные тесты: 3
31.03.2018, 16:33 3
Возвращайте указатель на массив. Указатель ссылается на первый элемент.
0
nmcf
6546 / 5767 / 2624
Регистрация: 14.04.2014
Сообщений: 24,505
31.03.2018, 16:48 4
Starfer, нельзя возвращать локальный объект.
0
nd2
3179 / 2644 / 1164
Регистрация: 29.01.2016
Сообщений: 8,862
31.03.2018, 18:52 5
Лучший ответ Сообщение было отмечено Iangyl как решение

Решение

C++
1
2
3
static int mas[10000];
//...
return mas;
C++
1
2
3
int* funct(char *mass, int size);
//...
int* mas = funct(string, 10000);
1
Iangyl
16 / 13 / 7
Регистрация: 31.03.2018
Сообщений: 318
Завершенные тесты: 2
31.03.2018, 23:33  [ТС] 6
Спасибо! Проблема с возвратом массива из ф-ции решена, но вылезла другая - краш программы после ввода слов через комаду cin.getline, вы не подскажете с чем это может быть связано?
0
nd2
3179 / 2644 / 1164
Регистрация: 29.01.2016
Сообщений: 8,862
31.03.2018, 23:37 7
Цитата Сообщение от Iangyl Посмотреть сообщение
Проблема с возвратом массива из ф-ции решена
Ясновидящих тут нет.
0
perevertysh
5 / 5 / 6
Регистрация: 23.03.2018
Сообщений: 98
Завершенные тесты: 3
01.04.2018, 01:40 8
Iangyl,
C++
1
getline(cin, /*переменная*/, /*'знак до которого читать строку'*/);
reference
0
nd2
3179 / 2644 / 1164
Регистрация: 29.01.2016
Сообщений: 8,862
01.04.2018, 01:42 9
Цитата Сообщение от perevertysh Посмотреть сообщение
getline(cin,
У ТС массив char, по имени string.
0
perevertysh
5 / 5 / 6
Регистрация: 23.03.2018
Сообщений: 98
Завершенные тесты: 3
01.04.2018, 01:47 10
nd2, ну строка же
0
nd2
3179 / 2644 / 1164
Регистрация: 29.01.2016
Сообщений: 8,862
01.04.2018, 01:50 11
Цитата Сообщение от perevertysh Посмотреть сообщение
ну строка же
Строки они разные бывают...
0
perevertysh
5 / 5 / 6
Регистрация: 23.03.2018
Сообщений: 98
Завершенные тесты: 3
01.04.2018, 01:56 12
nd2,
11.04.2010, 13:56 cin И getline [В закладки] [Окно ответа] #6
Цитата Сообщение от Krist_ALL Посмотреть сообщение
Скажите что в моем коде от с?
Я думаю ***GIN*** имел ввиду что ты используешь строки в стиле Си (char*).

Krist_ALL, просто со std::string работать гораздо удобнее.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
 
int main() {
  std::string n1;
 
  std::cout <<"n1 :";
  getline(std::cin, n1);
  
  int n2;
 
  std::cout <<"n2 :";
  std::cin >> n2;
 
  std::cout << n1 << n2 <<endl;
}
Считываешь строку полностью, а потом обрезаешь как тебе надо c помощью метода std::string erase.
Link

но я не пользовался, ничего не могу сказать про cin.getline();
0
nd2
3179 / 2644 / 1164
Регистрация: 29.01.2016
Сообщений: 8,862
01.04.2018, 01:58 13
Цитата Сообщение от perevertysh Посмотреть сообщение
nd2,
И что?
0
perevertysh
5 / 5 / 6
Регистрация: 23.03.2018
Сообщений: 98
Завершенные тесты: 3
01.04.2018, 02:00 14
nd2, а что?
0
nd2
3179 / 2644 / 1164
Регистрация: 29.01.2016
Сообщений: 8,862
01.04.2018, 02:02 15
Цитата Сообщение от perevertysh Посмотреть сообщение
а что?
А ничего.
0
Avaddon74
01.04.2018, 02:02
  #16

Не по теме:

nd2, perevertysh, Такого конструктивного диалога я давно не встречал :D

0
perevertysh
5 / 5 / 6
Регистрация: 23.03.2018
Сообщений: 98
Завершенные тесты: 3
01.04.2018, 02:44 17

Не по теме:

Avaddon74, я где-т в фильме или квн такой диалог видел. ДиодиТриод кажись



Добавлено через 32 минуты

Не по теме:

Avaddon74, ааа нет, эт в Рассмеши Комика было

0
Iangyl
16 / 13 / 7
Регистрация: 31.03.2018
Сообщений: 318
Завершенные тесты: 2
01.04.2018, 13:33  [ТС] 18
C++
1
getline(cin, /*переменная*/, /*'знак до которого читать строку'*/);
К сожалению такой вариант не проходит. Ошибки вылетают - возможно не правильно заюзал, я еще getline(cin,) не использовал никогда.
0
perevertysh
5 / 5 / 6
Регистрация: 23.03.2018
Сообщений: 98
Завершенные тесты: 3
01.04.2018, 13:57 19
Iangyl, массив переназвать из string еще во что-нибудь можно попробовать.
0
nd2
3179 / 2644 / 1164
Регистрация: 29.01.2016
Сообщений: 8,862
01.04.2018, 16:03 20
Цитата Сообщение от Iangyl Посмотреть сообщение
К сожалению такой вариант не проходит.
И не пройдёт, это для std::string предназначено. Проблему с крашем решил? Если нет, то код показыай.
0
01.04.2018, 16:03
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2018, 16:03

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

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

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


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

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

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