Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
 Аватар для Liori
4 / 4 / 5
Регистрация: 30.08.2012
Сообщений: 155

Возвращение значения функции

19.03.2015, 14:42. Показов 1888. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я создала структуру и конструктор. Нужно создать функцию типа этой структуры add_one_minute, которая будет прибавлять одну минуту. Но я не пойму - что должна возвращать эта функция?

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
29
30
31
32
33
#include <iostream>
#include <string>
using namespace std;
 
struct my_time
{
    my_time(int h, int m, int s);
    int hour, minute, second;
    my_time add_one_minute();
};
 
my_time::my_time(int h, int m, int s)
{
    hour = h;
    minute = m;
    second = s;
}
 
my_time my_time::add_one_minute()
{
    if (minute > 59) minute = 0;
    else minute++;
    cout <<  minute << endl;
        return ?
}
int main(int argc, char* argv[])
{
    my_time obj(24, 60, 60);
    cout << obj.hour << ' ' << obj.minute << ' ' << obj.second << endl;
    obj.add_one_second();
    system("pause");
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.03.2015, 14:42
Ответы с готовыми решениями:

Возвращение значения из функции
У меня есть 3 задания. Я их сделала. Но нужно что то возвращать. И я не знаю как return сделать. Нужна ваша помощь. и проверьте...

Возвращение значения из функции
Ребят, подскажите, когда функция возвращает значение из функции, то в памяти создается копия значения? Я все время думал что функция на...

Возвращение значения функции
Как сделать отдельно функцию, чтобы она возвращала в основную функцию значение sum? Помогите пожалуйста! #include &lt;stdio.h&gt;...

23
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
19.03.2015, 14:54
В таком виде можно ничего не возвращать (void).
0
 Аватар для Liori
4 / 4 / 5
Регистрация: 30.08.2012
Сообщений: 155
19.03.2015, 15:02  [ТС]
nmcf, Но компилятор выдает ошибку, что нужно что-то всё-таки возвратить
0
1 / 1 / 1
Регистрация: 07.11.2014
Сообщений: 36
19.03.2015, 16:20
Liori, а откуда взялся метод add_one_second?
0
 Аватар для Liori
4 / 4 / 5
Регистрация: 30.08.2012
Сообщений: 155
19.03.2015, 20:55  [ТС]
Astroz, просто нужно реализовать несколько методов, среди них add_one_second, add_one_minute и add_one_hour. Я убрала фрагменты кода с ними, когда писала сообщение, чтобы не было громоздкости, т.к. суть та же и перепутала.
Так и не поняла, что в return записать
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
19.03.2015, 21:01
Цитата Сообщение от Liori Посмотреть сообщение
Так и не поняла, что в return записать
Ничего не писать. И сам return не нужен.
В 19-й строке замени my_time на void. Аналогично во всех методах add_one_*.
0
 Аватар для Liori
4 / 4 / 5
Регистрация: 30.08.2012
Сообщений: 155
19.03.2015, 21:26  [ТС]
castaway, я бы так сделала, но проблема в том, что в задании нужно именно тип my_time, а точнее еще и с таким параметром: my_time add_one_second(my_time t);
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
19.03.2015, 21:31
Цитата Сообщение от Liori Посмотреть сообщение
а точнее еще и с таким параметром: my_time add_one_second(my_time t);
ну и верни текущий объект
C++
1
return *this;
Добавлено через 2 минуты
хотя по правильному лучше бы вернуть указатель на текущий объект
C++
1
2
3
4
5
6
my_time* my_time::add_one_minute()
{
    minute++;
    minute%=60;
       return this;
}
0
 Аватар для Nishen
1357 / 856 / 365
Регистрация: 26.02.2015
Сообщений: 3,814
19.03.2015, 21:35
Ты можешь использовать вот такой прототип функции:
C++
1
my_time& add_one_minute();
и тогда возвращать из функции будешь
C++
1
return *this;
Опять же, у тебя ошибка видимо, вот тут:
C++
1
2
3
4
5
6
7
my_time my_time::add_one_minute()
{
    if (minute > 59) minute = 0;
    else minute++;
    cout <<  minute << endl;
        return ?
}
Ты когда минуты обнуляешь после 59-ой, тебе нужно час увеличить на единицу.
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
19.03.2015, 21:37
Цитата Сообщение от Nishen Посмотреть сообщение
не будет несоответствия типов?
а я,хрен его знает никогда такой глупостью не занимался
вроде не должно
0
 Аватар для Nishen
1357 / 856 / 365
Регистрация: 26.02.2015
Сообщений: 3,814
19.03.2015, 21:39
Цитата Сообщение от ValeryS Посмотреть сообщение
такой глупостью не занимался
Не возвращал *this? Я проверил, сработал успешно такой возврат.
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
19.03.2015, 21:44
Цитата Сообщение от Nishen Посмотреть сообщение
Не возвращал *this?
нет
а зачем?
если я вызвал метод то уж знаю наверно какой объект
даже представить не могу где сие понадобится
0
 Аватар для Nishen
1357 / 856 / 365
Регистрация: 26.02.2015
Сообщений: 3,814
19.03.2015, 21:46
Цитата Сообщение от ValeryS Посмотреть сообщение
даже представить не могу где сие понадобится
Так как я еще сопля в данной области, могу лишь предложить вариант из книги Р. Лафоре... :-D Там он использовал такую конструкцию:
C++
1
2
3
4
MyClass& operator =(const MyClass& mc){
          //какой-то код;
          return *this;
}
Удобно же вроде? Не?
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
19.03.2015, 21:55
Цитата Сообщение от Nishen Посмотреть сообщение
Удобно же вроде? Не?
ты не путай
это перегрузка операторов( в них возвращение объекта необходимо), в данном случае оператора равно, к нему еще в пару пишут конструктор копирования

и тогда сможешь написать что то типа
C++
1
2
MyClass A;
MyClass B=A;
почитай хотя бы вот здесь
http://habrahabr.ru/post/132014/
0
 Аватар для Nishen
1357 / 856 / 365
Регистрация: 26.02.2015
Сообщений: 3,814
19.03.2015, 21:57
Цитата Сообщение от ValeryS Посмотреть сообщение
ты не путай
Нет, просто я подумал, что вообще нигде не нужно возвращать this.
А про конструкторы копирования и операции присваивания и уже читал у Р. Лафоре. Только вот прошел главу "Виртуальные функции", там как раз про это рассказывалось. За ссылку спасибо, завтра почитаю.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
19.03.2015, 22:04
Цитата Сообщение от ValeryS Посмотреть сообщение
даже представить не могу где сие понадобится
Это обычная практика.
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 <iostream>
 
struct A {
    int i;
 
    A( int i ) : i( i ) {}
 
    A & foo() {
        std::cout << i++ << std::endl;
        return *this;
    }
 
    A & operator = ( const A & a ) {
        i = a.i;
        return *this;
    }
 
    A & operator + ( int rhs ) {
        i += rhs;
        return *this;
    }
};
 
int main() {
    A a( 0 );
    A b( 100 );
    a.foo().foo().foo() + 1000 = b.foo().foo();
}
Чтобы не отличаться от операций над фундаментальными типами:
C++
1
2
int x, y, z;
x = y = z + 1;
2
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
19.03.2015, 22:06
Цитата Сообщение от castaway Посмотреть сообщение
a.foo().foo().foo() + 1000 = b.foo().foo();
это для меня слишком заумно
0
518 / 410 / 188
Регистрация: 08.04.2013
Сообщений: 1,750
19.03.2015, 22:27
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
29
30
31
32
33
34
35
36
37
 
struct my_time
{
    my_time(int h, int m, int s);
    int hour, minute, second;
    my_time add_one_second();
};
 
my_time::my_time(int h, int m, int s)
{
    hour = h;
    minute = m;
    second = s;
}
 
my_time my_time::add_one_second()
{
    if (second == 59) {
       second = 0; minute++;}
    else second++;
      if(minute == 60){
      minute=0; hour++;
      if(hour == 24){
      hour=0; 
   }
}
}
 
int main(int argc, char* argv[])
{
    my_time obj(23, 59, 59);
    cout << obj.hour << ' ' << obj.minute << ' ' << obj.second << endl;
    obj.add_one_second();
     cout << obj.hour << ' ' << obj.minute << ' ' << obj.second << endl;
    system("pause");
    return 0;
}
0
 Аватар для Nishen
1357 / 856 / 365
Регистрация: 26.02.2015
Сообщений: 3,814
19.03.2015, 22:31
marat_miaki, мне кажется, что твой код работать не будет. У тебя функция add_one_second() должена возвращать значение my_time. У тебе же функция ничего не возвращает, а лишь изменяет поля структуры, которая ее вызвала.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
19.03.2015, 22:32
marat_miaki, а значение возвращать в методе add_one_second кто будет?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.03.2015, 22:32
Помогаю со студенческими работами здесь

Возвращение из функции значения
Всем добрый день! Я дилетант в С++, поэтому не могу получить из функции значение: char *image_dir(char *im_path, char *path, char...

Возвращение значения из функции
Добрый день. Вообщем, проблема такова: есть такой исходник (ниже), в нем находятся 3 функции (main, reading и Proverka). Вся суть вопроса в...

Возвращение значения функции
Подскажите, что означает эта запись, что она возвращает понять не могу. static FUnknown* createInstance (void* context) { ...

Возвращение из функции значения массива
Есть функция , она выполнила свою работу , теперь результат в виде массива нужно отправить в основную программу , незнаю как это сделать...

Возвращение значения в функции, ссылки, вычислить корни квадратного уравнения
Определить функцию вычисления корней квадратного уравнения. Функция должна возвращать значение 1, если корни найдены, значение 0, если...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru