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

о функциях (элементарно, но я же нуб) - C++

Восстановить пароль Регистрация
 
Dimsssss
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 20
13.06.2013, 03:09     о функциях (элементарно, но я же нуб) #1
Пишу в компилятор следующее:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <cstdlib>
#include <iostream>
 
int Sum (int a, int b)
{
    std::cout << "Type a";
    std::cin >> a;
    std::cout << "Type b";
    std::cin>> b;
    int sum = a + b;
    std::cout<< "Sum is " << sum;
}    
 
int main()
{
    Sum (a, b);
    system("PAUSE");
}

вроде понятно, вводим a и b, а прога выдает нам сумму. Но, видимо, руки при появлении на свет приклеились не к тому месту, соу, нифига не работает. Помогите пожалуйста
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
13.06.2013, 03:15     о функциях (элементарно, но я же нуб) #2
Цитата Сообщение от Dimsssss Посмотреть сообщение
Пишу в компилятор

Не по теме:

...



Добавлено через 1 минуту
Цитата Сообщение от Dimsssss Посмотреть сообщение
Sum (a, b);
а и б не объявлены.
И зачем их копии вообще передавать в функцию, если в функции же их и вводишь.
Dimsssss
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 20
13.06.2013, 03:17  [ТС]     о функциях (элементарно, но я же нуб) #3
мне их удалить? оставить пустые скобки?
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
13.06.2013, 03:21     о функциях (элементарно, но я же нуб) #4
Цитата Сообщение от Dimsssss Посмотреть сообщение
мне их удалить?
Я не могу этого знать. Это же твоя программа. Можешь не удалять. Но объявить обязан. Можешь не удалять, объявить и вводить в мейне, передавать в функцию. Можешь удалить, объявить и вводить внутри функции. Как тебе больше нравится, так и делай.
Dimsssss
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 20
13.06.2013, 03:23  [ТС]     о функциях (элементарно, но я же нуб) #5
так разве они не объявляются при создании функции?
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
13.06.2013, 03:25     о функциях (элементарно, но я же нуб) #6
C++
1
2
3
4
5
int main()
{
Sum (a, b);
system("PAUSE");
}
Вызов Sum. передача ей двух переменных, а и б. Где в этом коде объявлены а и б?
Dimsssss
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 20
13.06.2013, 03:26  [ТС]     о функциях (элементарно, но я же нуб) #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <cstdlib>
#include <iostream>
 
int Sum (int a, int b)
{
    std::cout << "Type a\n";
    std::cin >> a;
    std::cout << "Type b\n";
    std::cin>> b;
    int sum = a + b;
    std::cout<< "Sum is " << sum;
}    
 
int main()
{
    Sum (0, 0);
    system("PAUSE");
}
ну вот так работает, даже правильно. Но значения 0 и 0 изначальные в сумме - это же мусор. Можно ли без него?
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
13.06.2013, 03:30     о функциях (элементарно, но я же нуб) #8
Цитата Сообщение от Dimsssss Посмотреть сообщение
Но значения 0 и 0 изначальные в сумме - это же мусор.
Да. Выше я написал варианты - как можно. Даже по логике функция Sum должна сумму считать, а не данные с консоли брать. Оставь в ней только подсчет суммы и передавай ей на вход веденные значения из main. Желательно и выводить значение в мейне, после того, как Sum его вернула. А у тебя она ничего хорошего не возвращает. Тогда хоть выглядеть будет адекватно. А сейчас - бестолковая функция тупо ради наличия.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,398
13.06.2013, 03:41     о функциях (элементарно, но я же нуб) #9
Логичней ввод-вывод поместить в тело функции main, а дальше в sum лишь производить расчеты и возвращать значение. У вас ведь идентификатор типа возвращаемого значения функции указан как int, а не void, значит и вернуть должно int, что вполне логично.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
int sum(int a, int b)
{
    return a + b; // возвращаем сумму
}
 
 
int main()
{
    int a, b;
    std::cout << "Type a: ";
    std::cin >> a;
    std::cout << "Type b: ";
    std::cin >> b;
    int s = sum(a, b); // равно результату, возвращаемому функцией
    std::cout << "Sum is " << s;
}
Dimsssss
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 20
13.06.2013, 03:48  [ТС]     о функциях (элементарно, но я же нуб) #10
большое спасибо, форумчане. Я несколько улучшил свою старую прогу и за это обязан вам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <cstdlib>
#include <iostream>
 
int AreaCount (int width, int height)
{
    std::cout << "Type width\n";
    std::cin >> width;
    std::cout << "Type height\n";
    std::cin >> height;
    int area;
    return width * height;
}
 
int main()
{
    int width;
    int height;
    int area = AreaCount (width, height);
    std::cout << "Area is " << area << "\n";
    system("PAUSE");
 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2013, 03:54     о функциях (элементарно, но я же нуб)
Еще ссылки по теме:

C++ Элементарно. Но ошибку найти не могу. Вывод имени "Jim" на экран
C++ знаю что элементарно, но я пока не очень в с++ разбираюсь(
C++ Рекурсивная функция элементарно

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,398
13.06.2013, 03:54     о функциях (элементарно, но я же нуб) #11
Dimsssss, непонятно зачем идет инициализация внутри тела функции AreaCount?
Ей должны передаваться уже готовые для подсчета аргументы. Ввод-вывод в функции, отличной от main это моветон.

Добавлено через 15 секунд
Оформляйте все в теги CPP
Yandex
Объявления
13.06.2013, 03:54     о функциях (элементарно, но я же нуб)
Ответ Создать тему
Опции темы

Текущее время: 05:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru