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

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

19.03.2015, 14:42. Показов 1942. Ответов 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
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
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
1358 / 856 / 366
Регистрация: 26.02.2015
Сообщений: 3,822
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
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
19.03.2015, 21:37
Цитата Сообщение от Nishen Посмотреть сообщение
не будет несоответствия типов?
а я,хрен его знает никогда такой глупостью не занимался
вроде не должно
0
 Аватар для Nishen
1358 / 856 / 366
Регистрация: 26.02.2015
Сообщений: 3,822
19.03.2015, 21:39
Цитата Сообщение от ValeryS Посмотреть сообщение
такой глупостью не занимался
Не возвращал *this? Я проверил, сработал успешно такой возврат.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
19.03.2015, 21:44
Цитата Сообщение от Nishen Посмотреть сообщение
Не возвращал *this?
нет
а зачем?
если я вызвал метод то уж знаю наверно какой объект
даже представить не могу где сие понадобится
0
 Аватар для Nishen
1358 / 856 / 366
Регистрация: 26.02.2015
Сообщений: 3,822
19.03.2015, 21:46
Цитата Сообщение от ValeryS Посмотреть сообщение
даже представить не могу где сие понадобится
Так как я еще сопля в данной области, могу лишь предложить вариант из книги Р. Лафоре... :-D Там он использовал такую конструкцию:
C++
1
2
3
4
MyClass& operator =(const MyClass& mc){
          //какой-то код;
          return *this;
}
Удобно же вроде? Не?
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
19.03.2015, 21:55
Цитата Сообщение от Nishen Посмотреть сообщение
Удобно же вроде? Не?
ты не путай
это перегрузка операторов( в них возвращение объекта необходимо), в данном случае оператора равно, к нему еще в пару пишут конструктор копирования

и тогда сможешь написать что то типа
C++
1
2
MyClass A;
MyClass B=A;
почитай хотя бы вот здесь
http://habrahabr.ru/post/132014/
0
 Аватар для Nishen
1358 / 856 / 366
Регистрация: 26.02.2015
Сообщений: 3,822
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
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
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
1358 / 856 / 366
Регистрация: 26.02.2015
Сообщений: 3,822
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
Ответ Создать тему
Новые блоги и статьи
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru