Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 03.11.2013
Сообщений: 20

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

03.11.2013, 19:21. Показов 1906. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Учусь в колледже и по программированию задали программу написать, котоаря бы брала четырёхзначные числа, делила бы их на две части (допустим 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;
}
Благодарю. Никак не могу разобраться что к чему, как они между собой связываются
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.11.2013, 19:21
Ответы с готовыми решениями:

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

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

Вызов родовой функции (нужно передать массив в качестве аргумента функции через указатель)
#include &lt;iostream&gt; using namespace std; template &lt;class T1&gt; class mas { public: T1 n; T1 a; void input() ...

29
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
03.11.2013, 21:22
Студворк — интернет-сервис помощи студентам
Folko,
ты бы хот по строчкам описал
а то окончательно запутаешь

Добавлено через 1 минуту
Цитата Сообщение от Deeve Посмотреть сообщение
И там у него именно константы ведь. int a = 3, int b = 4. Они не меняются, а всегда равны 3 и 4.
могут и поменятся
у констант присутствует слово const и больше ничего ты в неё не запишешь
0
 Аватар для Folko
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
03.11.2013, 21:25
Deeve, объясняю на пальцах. Вы подходите к автомату с шоколадками, суете туда червонец, ждете и вам выпадает шоколадушка вот и тут также. int c = f(a+b) объявляет целочисленную переменную c и присваивает ей значение, которое нам выдаст функция f. А что происходит в функции f? Она получает число 7 (ведь а = 3, b = 4, то есть f(a+b) эквивалентно f(7)), затем выполняет с переменной а (где хранится это самое переданное число 7) необходимые операции и возвращает некоторое число, в нашем случае 56. Ну и поскольку с = f(7), то после вызова функции у нас переменная c будет равна 56
0
1 / 1 / 0
Регистрация: 03.11.2013
Сообщений: 20
03.11.2013, 21:25  [ТС]
Цитата Сообщение от 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 и проверяться?
0
 Аватар для Folko
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
03.11.2013, 21:27
ValeryS,

Не по теме:

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

0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
03.11.2013, 21:27
Цитата Сообщение от Deeve Посмотреть сообщение
Что значат ретурны всякие, ещё и с названием функции, либо буквой какой-нибудь, а потом ещё и в скобках что-то написано.
прочитай что нибудь про функции
имя может быть любым какое придумаешь
перед именем стоит что функция возвращает тип или если ничего не возвращает то void
в скобочках аргументы которые нужны для работы функции
return выход из функции

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

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

Добавлено через 2 минуты
https://www.ozon.ru/context/detail/id/19710905/ автору советую скачать и почитать)
Там отлично по самым основам для легкого старта)
Пары глав хватит
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
03.11.2013, 22:26
Цитата Сообщение от ntny Посмотреть сообщение
искомое число вообще без цикла?
abcd=(ab+cd)*(ab+cd)
abcd=ab2+2*ab*cd+cd2
ab2+2*ab*cd+cd2-abcd=0
решай
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.11.2013, 22:26

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

Вызов массива, сформированной в одной функции с другой функции
Здравствуйте! Есть разрабатываемое решение - состоящее из main.cpp и array.cpp Main - выражает собой меню в консольном режиме по...

Вызов функции визуал бейсика из функции явы скрипта
Как такое соорудить, есть например две наипростецкие функции: &lt;% function base() h11='123' base = h11 end function %&gt; ...

Вызов анимации в коде подскажите
Как вызвать анимацию в коде чтоб при беге проигрывалась анимация бега а при прыжке анимация прыжка? буду очень благодарен) Вот код...

Не работает без указателя вызов функции в функции
int AmountOfSquares(int **Array) { NumberOfSquares++; for (i = iTempTwo + 1; ((i&lt;(iTemp + SizeOfSquare)) &amp;&amp;...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru