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

Функции и их вызов. Подскажите - C++

Восстановить пароль Регистрация
 
 
Deeve
0 / 0 / 0
Регистрация: 03.11.2013
Сообщений: 13
03.11.2013, 19:21     Функции и их вызов. Подскажите #1
Учусь в колледже и по программированию задали программу написать, котоаря бы брала четырёхзначные числа, делила бы их на две части (допустим 3025 делила бы на 30 и 25), складывала эти две полученные части и квадрат этой суммы давал бы это число т.е. (30+25)*(30+25)=3025 и программа должна была найти такие четырехзначные числа, квадрат суммы двух частей которых давал бы это число. Я взял похожий код из интернета, немного его переписал. Как бы всё понятно, кроме того - как эти функции подключены? Как мне самому подключить функции, если я напишу что-то подобное? у меня нет проблем написать сами функции самому, но вот вызвать их в мейне - проблема. Не понятные места помечаю комментарием

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 <cstdlib>
#include <iostream>
 
using namespace std;
int kv(int a) // что дает нам имя и int a? Почему int a?
{
    a*=a;
    return a; // почему возвращаемся в a? Что значит возвращение в a?
}
int sum1 (int a) // опять этот Int a, и имя непонятное
{
    int sum=0;
    while (a>0)
    {
        sum+=a%100; 
        a=a/100; // значение a меняется в итоге и возвращается в kv и там умножается? А где сохраняется тогда первый a? Ведь у 4-значного числа 2 части. Одна a и вторая a, которые перемножаются и дают квадрат в итоге.
    }
    return kv(sum); // почему возвращаемся к kv? Типа дальше решать будет всё kv функция?
}    
int main(int argc, char *argv[])
{
    int a, sum; // тут только все константы и переменные, которые уже использовались?
    for (int i=1000;i<9999;i++)
    if (sum1(i)==i)               // вот тут больше всего непонятно. Почему sum(i)?
    cout<<"Podhodiashee chislo = "<<i<<endl;
    system ("PAUSE");
    return EXIT_SUCCESS;
}
Благодарю. Никак не могу разобраться что к чему, как они между собой связываются
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2013, 19:21     Функции и их вызов. Подскажите
Посмотрите здесь:

C++ Вызов функции
C++ Вызов функции
Вызов функции C++
C++ Вызов функции
Вызов функции в возврате значения функции C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
03.11.2013, 21:22     Функции и их вызов. Подскажите #21
Folko,
ты бы хот по строчкам описал
а то окончательно запутаешь

Добавлено через 1 минуту
Цитата Сообщение от Deeve Посмотреть сообщение
И там у него именно константы ведь. int a = 3, int b = 4. Они не меняются, а всегда равны 3 и 4.
могут и поменятся
у констант присутствует слово const и больше ничего ты в неё не запишешь
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
03.11.2013, 21:25     Функции и их вызов. Подскажите #22
Deeve, объясняю на пальцах. Вы подходите к автомату с шоколадками, суете туда червонец, ждете и вам выпадает шоколадушка вот и тут также. int c = f(a+b) объявляет целочисленную переменную c и присваивает ей значение, которое нам выдаст функция f. А что происходит в функции f? Она получает число 7 (ведь а = 3, b = 4, то есть f(a+b) эквивалентно f(7)), затем выполняет с переменной а (где хранится это самое переданное число 7) необходимые операции и возвращает некоторое число, в нашем случае 56. Ну и поскольку с = f(7), то после вызова функции у нас переменная c будет равна 56
Deeve
0 / 0 / 0
Регистрация: 03.11.2013
Сообщений: 13
03.11.2013, 21:25  [ТС]     Функции и их вызов. Подскажите #23
Цитата Сообщение от Folko Посмотреть сообщение
Deeve, если что, мой ник читается Фолко, а не Фолько)
А решение я уже приводил:
C++
1
2
3
4
5
6
7
8
9
10
int func(int a)
{
return ((int)a/100)+((int)a%100)*((int)a/100)+((int)a%100);
}
 
int main(){
for (int i = 1000; i<10000; i++)
if (func(i) == i) cout << "Число " << i << " подходит!" << endl;
return 0;
}
Я скомпилировал твой код - не работает нормально. Показывает все числа, которые оканчиваются на 99

Но ты всё-равно объясни зачем ты это всё написал в return? Почему именно туда? Что значит каждый раз (int) перед решением, что будут целые числа?

У тебя выходит, что вместо a всегда будут подставляться значения i и проверяться?
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
03.11.2013, 21:27     Функции и их вызов. Подскажите #24
ValeryS,

Не по теме:

хм, и наверно еще не стоило сразу возвращать через return

ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
03.11.2013, 21:27     Функции и их вызов. Подскажите #25
Цитата Сообщение от Deeve Посмотреть сообщение
Что значат ретурны всякие, ещё и с названием функции, либо буквой какой-нибудь, а потом ещё и в скобках что-то написано.
прочитай что нибудь про функции
имя может быть любым какое придумаешь
перед именем стоит что функция возвращает тип или если ничего не возвращает то void
в скобочках аргументы которые нужны для работы функции
return выход из функции

на житейском языке попытаюсь объяснить
ты говоришь "Вася, сосчитай мне 3 плюс 5"
Вася считает и говорит тебе 8
так вот Вася это функция
3 и 5 это аргументы
8 это возвращаемое значение
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
03.11.2013, 21:31     Функции и их вызов. Подскажите #26
Deeve, return - это, грубо говоря, команда, которая возвращает значение и заканчивает работу функции. То есть return 0 в функции main означает, что она вернет программе, вызвавшей ее, число 0. (int) это я на всякий случай сделал представление числа в целочисленном формате, без плавающей точки.
В переменную а при вызове функции будет записываться переданное значение. Само собой, если мы делаем func(i) то мы передаем в функцию число, которому равна переменная i на данный момент
Deeve
0 / 0 / 0
Регистрация: 03.11.2013
Сообщений: 13
03.11.2013, 21:37  [ТС]     Функции и их вызов. Подскажите #27
Цитата Сообщение от Folko Посмотреть сообщение
Deeve, return - это, грубо говоря, команда, которая возвращает значение и заканчивает работу функции. То есть return 0 в функции main означает, что она вернет программе, вызвавшей ее, число 0. (int) это я на всякий случай сделал представление числа в целочисленном формате, без плавающей точки.
В переменную а при вызове функции будет записываться переданное значение. Само собой, если мы делаем func(i) то мы передаем в функцию число, которому равна переменная i на данный момент

И в этой функции все неизвестные, допустим "a" будут равняться этому "i"? А если неизвестных несколько? Допустим в функции есть int a, b, c; , а i тогда куда подставится?
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
03.11.2013, 21:40     Функции и их вызов. Подскажите #28
Deeve, если функция будет int func(int a, int b, int c), то тогда вызывать ее придется уже не func(i), а func(i,3,4). То есть сколько вы входных параметров указали, столько и придется передавать при вызове. Вот в этом примере значение i запишется в а, 3 запишется в b, 4 запишется в с. Все прочие переменные в теле функции не получают значений извне, их вы задаете уже сами в теле функции
ntny
7 / 7 / 0
Регистрация: 17.06.2012
Сообщений: 168
03.11.2013, 22:18     Функции и их вызов. Подскажите #29
А есть мысли как найти искомое число вообще без цикла?
потому, что пробежать 9999 вариантов не очень вариант. Я пока не додумался.
Я правда и про деление на сто каюсь не сразу подумал.
Я бы сконвертил число в строку, разделил на две части, а потом эти две части обратно в число

Добавлено через 2 минуты
https://www.ozon.ru/context/detail/id/19710905/ автору советую скачать и почитать)
Там отлично по самым основам для легкого старта)
Пары глав хватит
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2013, 22:26     Функции и их вызов. Подскажите
Еще ссылки по теме:

C++ Вызов функции
Вызов функции C++
Вызов функции в параметре другой функции C++

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
03.11.2013, 22:26     Функции и их вызов. Подскажите #30
Цитата Сообщение от ntny Посмотреть сообщение
искомое число вообще без цикла?
abcd=(ab+cd)*(ab+cd)
abcd=ab2+2*ab*cd+cd2
ab2+2*ab*cd+cd2-abcd=0
решай
Yandex
Объявления
03.11.2013, 22:26     Функции и их вызов. Подскажите
Ответ Создать тему
Опции темы

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