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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
zepterman
0 / 0 / 0
Регистрация: 08.09.2012
Сообщений: 27
#1

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

14.09.2012, 15:22. Просмотров 1298. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2012, 15:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция не меняет значения (C++):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
co6ak
Кошковед
407 / 500 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
14.09.2012, 15:25 #2
а и не должна она менять

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
zepterman
0 / 0 / 0
Регистрация: 08.09.2012
Сообщений: 27
14.09.2012, 15:39  [ТС] #3
Спасибо большое!
0
cmath
Модератор
2433 / 1660 / 133
Регистрация: 11.08.2012
Сообщений: 3,301
Завершенные тесты: 5
14.09.2012, 16:07 #4
zepterman, будьте осторожны при использовании переменных в качестве параметров. Вот здесь можете посмотреть информацию об этом (начинайте с поста #6).
1
kotleta
42 / 42 / 11
Регистрация: 13.09.2012
Сообщений: 196
14.09.2012, 16:21 #5
Используйте для этого передачу значений по ссылке:

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
15.09.2012, 08:53 #6
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
Миниатюры
Функция не меняет значения  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.09.2012, 08:53
Привет! Вот еще темы с ответами:

Функция меняет все отрицательные элементы массива на максимальный - C++
Написать функцию, которая принимает одномерный массив и его размерностью. Функция меняет в массиве все элементы меньше ноля, на...

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

Функция катороя в массиве меняет единиц на нули и наоборот - C++
Сложить функцию, которая меняет в одномерном массиве, заданного размера - из единиц и нулей, все единицы на нули, а нули - на единицы....

Написать функцию, которая меняет местами значения двух целых - C++
Нужен рабочий код по решению задачи в С++ : «Напишите функцию которая меняет местами значения двух целых. В качестве типа параметров...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.09.2012, 08:53
Ответ Создать тему
Опции темы

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