Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 15.01.2020
Сообщений: 4

Вызов функции из другой функции и обратно. Общие переменные функций

15.01.2020, 17:19. Показов 2792. Ответов 8

Студворк — интернет-сервис помощи студентам
Всем привет.

Заранее напишу, что я ещё только изучаю программирование

В данной программе генирируются числа заполняющие одним числом каждую ячейку массива, который способен вместить 30 чисел. Позже необходимо ввести число, от которого вы решитесь избавиться в данной последовательности элементов массива.
Теперь же компилятор должен вывести последовательность элементов массива, где будут замыкаться элементы массива на месте избавленного или избавленных.

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
#include <iostream>
#include <string>
#include <cstdlib> 
#include <ctime> 
//int a, int b,string hop,string op
using namespace std;
void sdvig(int a, int b,string hop,string op){
for (int i=a; i<30-b;i++){
    if(i<30-b){
        hop[i]=hop[i+1];
        
    }else {
        
        prover();
    }
}
 
}
void prover(int a, int b,string hop,string op){
for (int i=0; i<30-b; i++){ 
        if(hop[i]==op){
            a=i;
            sdvig();
        }   
        
    }
    for (int i=0; i<30-b; i++){
    
    
        cout<<hop[i]<<" ";
        
    }
}
int main(){
    
    string hop,op;
    srand(time(0));
    int a;
    int b=0;
    for (int i=0; i<30; i++){
        
        hop[i]=1+rand()%8;
        
    }
    for (int i=0; i<30; i++){
    
    
        cout<<hop[i]<<" ";
        
    }
    cout<<"Vvedite chislo, kotoroe neobhodimo ubrat"<<endl;
    cin>>op;
    for (int i=0; i<30; i++){   
        if(hop[i]==op){
            a=i;
            sdvig();
        }   
    }
}
Компилятор выводит ошибку. Он описывает, что функции не запланированы, также переменные не могут существовать в функциях(предпологалось другое).

Писал в онлайн компиляторе, где обычная функция рандом работает более менее.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.01.2020, 17:19
Ответы с готовыми решениями:

Функция, в функции main() или общие переменные для нескольких функций
Делаю мелкую игрушку, в консоли, ради забавы и столкнулся с 1 проблемой: Невозможно, создавать функцию в функции, вынеся эту функцию за...

Вызов функции внутри другой функции с передачей локальной переменной по ссылке
Столкнулся с очень с интересной проблемой. Можно ли так делать? #include &lt;iostream&gt; using std::cout; void f(const int...

Вызов функции в параметре другой функции
программа: #include &lt;iostream&gt; using namespace std; struct E { E() {} }; void f(const E&amp; e)

8
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,406
15.01.2020, 17:44
Wastad541, привет! С Новым Годом!
Может код вообще переписать? Я немного отредактировал твой код.
Кликните здесь для просмотра всего текста

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
#include <iostream>
#include <string>
#include <cstdlib> 
#include <ctime> 
//int a, int b,string hop,string op
using namespace std;
 
void sdvig(int a, int b, string hop, string op);
void prover(int a, int b, string hop, string op);
 
int main()
{
    string hop, op;
    srand(time(0));
    int a;
    int b = 0;
    for (int i = 0; i < 30; i++)
        hop[i] = 1 + rand() % 8;
    for (int i = 0; i < 30; i++)
        cout << hop[i] << " ";
    cout << "Vvedite chislo, kotoroe neobhodimo ubrat" << endl;
    cin >> op;
    for (int i = 0; i < 30; i++)
        if (hop[i] == op)
        {
            a = i;
            sdvig();
        }
}
 
void sdvig(int a, int b, string hop, string op)
{
    for (int i = a; i < 30 - b; i++)
        if (i < 30 - b)
            hop[i] = hop[i + 1];
        else
            prover();
}
 
void prover(int a, int b, string hop, string op)
{
    for (int i = 0; i < 30 - b; i++)
        if (hop[i] == op)
        {
            a = i;
            sdvig();
        }
    for (int i = 0; i < 30 - b; i++)
        cout << hop[i] << " ";
}
0
0 / 0 / 0
Регистрация: 15.01.2020
Сообщений: 4
15.01.2020, 17:52  [ТС]
Знать бы ещё как его переписать. Мысль то приходит первоначально в одной форме
0
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
15.01.2020, 17:59
Лучший ответ Сообщение было отмечено Wastad541 как решение

Решение

Wastad541, сильно перемудрили.
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
const size_t ARRLEN = 30;
 
size_t sdvig(int *arr, int val, size_t len) {
    size_t src = 0, dst = 0;
    while (src < len) {
        if (arr[src] != val) {
            arr[dst++] = arr[src++];
        }
        else
            ++src;
    }
    return dst;
}
 
int main() {
 
    int hop[ARRLEN], op;
    srand((unsigned int)time(NULL));
 
    for (size_t i = 0; i < ARRLEN; i++) {
        hop[i] = 1 + rand() % 8;
        cout << hop[i] << " ";
    }
    cout << endl;
 
    cout << "Vvedite chislo, kotoroe neobhodimo ubrat: ";
    cin >> op;
 
    size_t newlen;
    newlen = sdvig(hop, op, ARRLEN);
 
    for (int i = 0; i < newlen; i++) {
        cout << hop[i] << " ";
    }
    cout << endl;
}
PS. Гугл-транслейт отвратительно переводит. Интересно, с какого языка?
1
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,406
15.01.2020, 18:04
Цитата Сообщение от Wastad541 Посмотреть сообщение
Знать бы ещё как его переписать
Вот так.
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
#include <iostream>
#include <string>
#include <random>
#include <algorithm>
 
using namespace std;
 
template<size_t N>
std::ostream& operator<< (std::ostream& os, char(&arr)[N]);
 
int main()
{
    setlocale(LC_ALL, "Rus");
    const int left = 1;
    const int right = 8;
    const uint32_t count_elems = 30u;
 
    random_device rd;
    mt19937 g(rd());
    uniform_int_distribution<> dist(left, right);
    auto gen = [&g, &dist]() { return dist(g); };
 
    char hop[count_elems];
    generate(begin(hop), end(hop), gen);
    cout << "Исходный массив\n" << hop << "\n";
    cout << "Введите число, которое необходимо убрать\n";
    char op;
    cin >> op;
    op -= '0';
    char* pointer = remove(begin(hop), end(hop), op);
    *pointer = 0;
    cout << "Обработанный массив\n" << hop << "\n";
}
 
template<size_t N>
std::ostream& operator<< (std::ostream& os, char(&arr)[N])
{
    for (auto c : arr)
    {
        if (!c) break;
        os << static_cast<int16_t>(c) << " ";
    }
    return os;
}
Миниатюры
Вызов функции из другой функции и обратно. Общие переменные функций  
1
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
15.01.2020, 18:06
как вариант:
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
#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <ctime> 
using namespace std;
 
int main() 
{
    srand((int)time(0));
    int n=30, x;     
    
    vector<int> v(n);   
    
    for (int &e : v)            
        cout << (e=rand()%9+1) << " ";
      
    cout << "\nx="; cin >> x; 
    
    v.erase(remove(v.begin(),v.end(),x),v.end());    
    
    for(int &e : v)
        cout << e << " ";
    cout << "\n";
    
system("pause");
return 0;
}
1
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
15.01.2020, 18:09
Цитата Сообщение от SomniPhobia Посмотреть сообщение
Я немного отредактировал твой код.
Ну, собственно, оно как не компилировалось, так и не компилируется. Не стоило и руки пачкать.

Ничего, что вы std::string сравниваете с char?

Да и вообще бред, начиная с того, что std::string используется как массив чисел. В военное время, конечно, можно так сделать (тогда даже число пи может достигать 4), но в данном случае ни что не мешает использовать обычный массив. Тем более, что это указано в задании.
0
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,406
15.01.2020, 18:20
Цитата Сообщение от L0M Посмотреть сообщение
Ну, собственно, оно как не компилировалось, так и не компилируется
Обязательно чтобы компилировалось? Код причесал немного.
Цитата Сообщение от L0M Посмотреть сообщение
Не стоило и руки пачкать
Обычно я пачкаю руки, когда ем шоколад. Потом их об штаны витираю, чтобы не бегать к умывальнику.
Цитата Сообщение от L0M Посмотреть сообщение
Ничего, что вы std::string сравниваете с char
Я тоже заметил, но промолчал.
Цитата Сообщение от L0M Посмотреть сообщение
Да и вообще бред, начиная с того, что std::string используется как массив чисел
Типа память экономит, наверно. 8 бит вместо 32 (вроде 32 может и другим быть числом, зависимо от платформы).
Цитата Сообщение от L0M Посмотреть сообщение
но в данном случае ни что не мешает использовать обычный массив
Да.
Цитата Сообщение от L0M Посмотреть сообщение
Тем более, что это указано в задании
Там конкретно про тип элементов массива не сказано. Указано что элементы числом заполняются, а это может быть char, int, double, variant, string.
0
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
15.01.2020, 18:29
Цитата Сообщение от SomniPhobia Посмотреть сообщение
Обязательно чтобы компилировалось?
Видимо я что-то в этой жизни не понимаю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.01.2020, 18:29
Помогаю со студенческими работами здесь

Вызов функций в функции
Доброе время суток! Буду признательна, если кто-то сможет помочь -&gt; обьяснить возникшую проблему с вызовом функции! В этом коде...

Вызов функции из другой функции после нажатия на кнопку
Помогите, пожалуйста! Никак не могу понять почему не запускается функция d() Полный код: &lt;script language=&quot;javascript&quot;&gt;...

Вызов функции, находящейся в другой функции
Добрый день! Есть такая функция: function func1(p1, p2) { function func2() {alert(1);} func2(); } Мне нужно...

Вызов функции внутри другой функции
Доброго времени суток! Есть код, которые показывают расстановку шахматных фигур на доске, и если ход был сделан не правильно то фигура...

Вызов функции из другой функции в объекте
Добрый день. У меня есть скрипт: var combiner = { getString: function(param){ return param; }, run: function(){ ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru