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

Функция не меняет значения

14.09.2012, 15:22. Показов 9110. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста, не могу заставить функцию изменить значение переменных.
Должно быть digita=5 и digitb=4

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void to2 (int a, int b)
{
    a=5;
    b=4;
    cout<<"\na="<<a;
    cout<<"\nb="<<b;
}
 
void main () {
 
int digita=0;
int digitb=0;
to2(digita,digitb);
cout<<"\na="<<digita;
cout<<"\nb="<<digitb;
 
 
}
Вывод на экран:
a=5
b=4
a=0
b=0
Для продолжения нажмите любую клавишу . . .

Хотя:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void brosok (int Br [], const int kolbroskov, int brosok){
    Br[brosok]=0;
    int vibor = rand() % 6 + 1;
    Br[brosok] = Br[brosok]+vibor;
    cout<<"\nmy brosok = "<<Br[brosok];
}
 
void main () {
 
    srand(unsigned(time(NULL)));
    const int kolbroskov=3;
    int resultpc[kolbroskov];
 
    for (int i=0;i<kolbroskov;i++)
    {
        brosok(resultpc,kolbroskov, i);
        cout<<"\nbrosok = "<<resultpc[i];
    }
 
    cout<<"\n";
На экране:
my brosok = 3
brosok = 3
my brosok = 6
brosok = 6
my brosok = 5
brosok = 5
Для продолжения нажмите любую клавишу . . .

Почему в первом примере значения не изменяются, а во втором изменяются?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.09.2012, 15:22
Ответы с готовыми решениями:

Функция не меняет значения двумерного массива
Проблема в Функции BuildNewMap, мне нужно, чтобы значения элемента в массиве myMap поменялось с 0 на заданное в аргументе функции. Вызвал...

Функция, которая меняет значения 2-х динамических массивов местами
Всем здравствуйте. Недавно начал изучать программирование на c++. Изучил тему динамических массивов и их передачу в функцию. Написал...

Функция не меняет значение аргументов (за ее пределами)
Код: //заголовочный #ifndef HTPOTC_H #define HTPOTC_H class Rational{ public: Rational(int = 1,int = 2,int = 1,int = 2);

5
Кошковед
 Аватар для co6ak
521 / 509 / 63
Регистрация: 12.04.2010
Сообщений: 1,390
14.09.2012, 15:25
а и не должна она менять

C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
void changeFunc (int& a) {
    a += 2;
}
 
int main() {
    int number = 3;
    changeFunc(number);
    std::cout << number; // 5
    return 0;
}
в амперсанте сила! по значению можно передавать параметр, если у тебя не указатели. с динамическим массивом все проще. ему амперсанты не нужны. передаешь адрес переменной - функция меняет значение в адресе.

во втором примере походу тоже не изменяются ) попробуй сделать вывод массива не внутри функции. будет тебе сюрприз)
1
0 / 0 / 0
Регистрация: 08.09.2012
Сообщений: 27
14.09.2012, 15:39  [ТС]
Спасибо большое!
0
 Аватар для cmath
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349
14.09.2012, 16:07
zepterman, будьте осторожны при использовании переменных в качестве параметров. Вот здесь можете посмотреть информацию об этом (начинайте с поста #6).
1
 Аватар для kotleta
44 / 44 / 17
Регистрация: 13.09.2012
Сообщений: 196
14.09.2012, 16:21
Используйте для этого передачу значений по ссылке:

C++
1
2
3
4
5
6
7
8
9
10
11
12
void f(int &a)
{
 a = 5;
}
 
int main()
{
 int b = 4;
 f(b); // b=5
 
 return 0;
}
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
15.09.2012, 08:53
zepterman, в STL существует уже специально написанная функция swap которая обменивает значения хоть переменных хоть классов, да чего угодно, к примеру твой первый код, с применением STL выглядел бы вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <algorithm>
using namespace std;
 
int main () 
{
 
    int digita = 5;
    int digitb = 4;
    cout<<"digita = "<<digita<<endl;
    cout<<"digitb = "<<digitb<<endl;
    swap(digita,digitb);
    cout<<"digita = "<<digita<<endl;
    cout<<"digitb = "<<digitb<<endl;
    return 0; 
}
digita = 5
digitb = 4
digita = 4
digitb = 5
http://codepad.org/IuiIOvmZ
Миниатюры
Функция не меняет значения  
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.09.2012, 08:53
Помогаю со студенческими работами здесь

Функция GetCurrentDirectory меняет тип переменной
Подскажите пожалуйста. Определяю от куда была запущена программа. В режиме Debug все работает. Когда компилируемую в режиме Release не...

Функция которая меняет переданные ей переменные?
Как ее сделать

Функция,которая меняет расширение файла на новое
Здравствуйте,уважаемые форумчане,помогите мне пожалуйста,доделать задание(не компилится,и я не понимаю в чём именно могут быть ошибки.) ...

Массив меняет свои значения
Проблема вот такая. В процессе этой программы массив summ меняет свои значения, хотя я к нему вообще не прикасался. int main() { ...

Функция, что меняет первую букву слова на большую.
Здравствуйте! Помогите, пожалуйста, написать функцию на Си, которая меняет первую букву на большую в каждом слове предложения.


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru