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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ При вызове конструктора ошибка: L "Buffer is too small" & & 0 http://www.cyberforum.ru/cpp-beginners/thread1127581.html
Привет. При вызове конструктора вылетает эта ошибка. Student(char *n, char *s, char *p, int y, char *g) { name = new char; surname = new char; patr = new char; group = new char;
C++ Переделайте, пожалуйста, с использованием процедур. Код С++ #include <iostream> #include <time.h> #define SIZE_X 10 #define SIZE_Y 12 #define MAX_NUM 256 int main() { http://www.cyberforum.ru/cpp-beginners/thread1127580.html
Удалить из массива числа – палиндромы, в которых есть хотя бы одна нечетная цифра C++
помогите написать программу на С++ Дан массив из N целых чисел, где N<=16, каждое число в диапазоне от –32000 до 32000. Создать программу с обязательным использованием функций. Вместо чисел, имеющих в составе цифру P, вставить сумму цифр этого числа.
Получение доступа к переменным класса из другого класса C++
Как передать по ссылке переменную из класса А в метод класса В?
C++ Найти строку в массиве без положительных элементов http://www.cyberforum.ru/cpp-beginners/thread1127574.html
Доброго времени суток! Есть задачка. Для двумерного массива разработайте код который бы находил последнюю строчку в массиве не содержащюю не одного положительного элемента. Большую половину задачи я решил помогите плиз добить ее до конца!!! #include <iostream> #include <math.h> #include <Windows.h> using namespace std;
C++ Как сформировать массив строк, разделенных нулями, с двойным нулем на конце Здравствуйте. Как сформировать массив строк, разделенных нулями, с двойным нулем на конце (null-terminated string array)? что это за массив такой? Подскажите, пожалуйста . подробнее

Показать сообщение отдельно
big_boom
1 / 1 / 0
Регистрация: 28.01.2014
Сообщений: 14
23.03.2014, 18:25     Как передать массив в функцию так, чтобы при выходе из функции он не изменялся?
Задачка: есть строка, которая состоит из символов. Символы соединяються в слова, которые оттделены друг от друга одним или несколькими пробелами. В конце текста крапка. написать:
1) Функцию, которая выводит все слова, без гласных литер;
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
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
#include <iostream>
using namespace std;
#include <cstring>
void Without_vowels(char *);
void With_numbers(char *);
int main()
{
    char *str = new char[];
    cout << "Enter the string: " << endl;
    rewind(stdin);
    gets_s(str, strlen(str));
 
 
    cout << "Words with numbers: ";
    With_numbers(str);
 
    cout << "Words without vowels: ";
    Without_vowels(str);
 
    
 
    return 0;
}
void Without_vowels(char *str4)
{
    char *new_str = new char[strlen(str4)];
    new_str = str4;
    char *vowels = { "AaOoIiUuYyEe" };
    char *ptrnastr;
    char *next_token;
    
 
    ptrnastr = strtok_s(new_str, " .", &next_token);
    while (ptrnastr != NULL)
    {
        bool check = true;
        for (int i = 0; i < strlen(ptrnastr); i++)
        {
            for (int j = 0; j < strlen(vowels); j++)
            {
                if (ptrnastr[i] == vowels[j])
                {
                    check = false;
                    break;
                }
 
            }
            if (check == false)
            {
                break;
            }
        }
        if (check == true)
        {
            cout << ptrnastr << " ";
        }
        
        ptrnastr = strtok_s(NULL, " .", &next_token);
        
    }
    //cout << str;
    //delete [] new_str;
 
}
void With_numbers(char *str5)
{
    char *numbers = { "0123456789" };
    char *str1 = new char;
    str1 = str5;
    char *ptrnachar;
    char*next_token = NULL;
    ptrnachar = strtok_s(str1, " .", &next_token);
    while (ptrnachar != NULL)
    {
        bool check = false;
        for (int i = 0; i < strlen(ptrnachar); i++)
        {
            for (int j = 0; j < strlen(numbers); j++)
            {
                if (ptrnachar[i] == numbers[j])
                {
                    check = true;
                    break;
                }
            }
 
            if (check == true)
            {
                break;
            }
        }
 
        if (check == true)
        {
            cout << ptrnachar << " ";
        }
        ptrnachar = strtok_s(NULL, " .", &next_token);
    }
 
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru