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

Перевод из сантиметры в метры - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.62
CHELOVEKPAUK
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
12.08.2013, 16:13     Перевод из сантиметры в метры #1
Задача такая: нужно перевести из сантиметра в метры, и результат записать в виде "n метров, n сантиметров". Не могу скомпилировать, пишет ошибку LNK2019 и LNK1120.

Вот сам код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using std::cout; using std::cin;
 
int sm_to_m(int);
int sm, m, smmod;
const int M = 100; // постоянная, количество см в м
 
int main()
{
    setlocale(0,"russian");
    cout << "Введите значение в сантиметрах: _____\b\b\b\b\b\n";
    cin >> sm; // переменная (сантиметры)
    cout << "Результат преобразования: " << sm_to_m(m) << " м, " << sm_to_m(smmod) << " см\n";
    system("pause");
    return 0;
}
 
int sm_to_m(int m, int smmod) // smmod - остаток от деления sm на m
{
    m = sm / M;
    smmod = sm % M;
    return m, smmod;
}
И еще вопрос: почему ф-я sm_to_m не видит переменную sm, если она описана в ф-и main()? пришлось наверх ее вытянуть.

Не по теме:

Давно хотел спросить - нужно каждый раз писать \b если нужно сдвинуть курсор на 1 позицию назад? можно ли как то сократить команду, вдруг нужно будет на 100 символов назад перевести, неужели 100 раз команду писать

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
12.08.2013, 16:32     Перевод из сантиметры в метры #2
1. Сигнатуры прототипа и реализации должны совпадать:
C++
1
2
int sm_to_m(int); // 4 строка
int sm_to_m(int m, int smmod) // 18 строка
2. Переменная (локальная) в одной функции, не будет видна в другой функции. Нужно передавать через аргументы.
3. Возвращать 2 значения через return так не получится:
C++
1
return m, smmod;
4. Для setlocale нужно #include <locale.h>
5. Для system - #include <stdlib.h>
Valentina
66 / 66 / 3
Регистрация: 13.05.2012
Сообщений: 130
12.08.2013, 16:43     Перевод из сантиметры в метры #3
Для того чтобы вернуть две переменные из функции нужно использовать ссылки
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
#include <iostream>
using std::cout; using std::cin;
 
void sm_to_m(int, int&, int&);
 
const int M = 100; // постоянная, количество см в м
 
int main()
{
    setlocale(0,"russian");
    int sm;
    int m=0;
    int smmod=0;
    cout << "Введите значение в сантиметрах: _____\b\b\b\b\b\n";
    cin >> sm; // переменная (сантиметры)
    sm_to_m(sm,m,smmod);
    cout << "Результат преобразования: " <<m << " м, " << smmod << " см\n";
    system("pause");
    return 0;
}
 
void sm_to_m(int sm,int& m,int& smmod)// smmod - остаток от деления sm на m
{
    
    m = sm / M;
    smmod = sm % M;
}
CHELOVEKPAUK
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
12.08.2013, 18:18  [ТС]     Перевод из сантиметры в метры #4
Цитата Сообщение от Tulosba Посмотреть сообщение
1. Сигнатуры прототипа и реализации должны совпадать:
C++
1
2
int sm_to_m(int); // 4 строка
int sm_to_m(int m, int smmod) // 18 строка
2. Переменная (локальная) в одной функции, не будет видна в другой функции. Нужно передавать через аргументы.
3. Возвращать 2 значения через return так не получится:
C++
1
return m, smmod;
4. Для setlocale нужно #include <locale.h>
5. Для system - #include <stdlib.h>
1. а в чем не совпадение, я не понимаю, честно скажу - вроде бы тип вызываемой функции и тип значения правильно указал. и я не умею пока через аргументы.
2. а как можно?
3. у меня C++, setlocale и system работают без указания директивы, тем более их можно без расширения.


Цитата Сообщение от Valentina Посмотреть сообщение
Для того чтобы вернуть две переменные из функции нужно использовать ссылки
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
#include <iostream>
using std::cout; using std::cin;
 
void sm_to_m(int, int&, int&);
 
const int M = 100; // постоянная, количество см в м
 
int main()
{
    setlocale(0,"russian");
    int sm;
    int m=0;
    int smmod=0;
    cout << "Введите значение в сантиметрах: _____\b\b\b\b\b\n";
    cin >> sm; // переменная (сантиметры)
    sm_to_m(sm,m,smmod);
    cout << "Результат преобразования: " <<m << " м, " << smmod << " см\n";
    system("pause");
    return 0;
}
 
void sm_to_m(int sm,int& m,int& smmod)// smmod - остаток от деления sm на m
{
    
    m = sm / M;
    smmod = sm % M;
}
Почему в функции значение void? Зачем после int ставить &? Можете попроще описать? Без ссылок и аргументов, а то я только-только типы данных прошел, и не понимаю ничего в коде этом Почему в функции значение void?
Valentina
66 / 66 / 3
Регистрация: 13.05.2012
Сообщений: 130
12.08.2013, 18:21     Перевод из сантиметры в метры #5
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
Почему в функции значение void? Зачем после int ставить &? Можете попроще описать? Без ссылок и аргументов, а то я только-только типы данных прошел, и не понимаю ничего в коде этом Почему в функции значение void?
значение void, потому что функция ничего не возвращает, а без ссылок Вы два значения не вернете
CHELOVEKPAUK
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
12.08.2013, 18:28  [ТС]     Перевод из сантиметры в метры #6
Цитата Сообщение от Valentina Посмотреть сообщение
значение void, потому что функция ничего не возвращает, а без ссылок Вы два значения не вернете
В общем, я решил не заморачиваться, и сделал без функций. Но, спасибо за помощь.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using std::cout; using std::cin;
 
int sm, m, smmod;
const int M = 100;
 
int main()
{
    setlocale(0,"russian");
    cout << "Введите значение в сантиметрах: _____\b\b\b\b\b";
    cin >> sm;
    cout << "Результат преобразования: " << (sm/M) << " м, " << (sm%M) << " см\n";
    system("pause");
    return 0;
}
Yandex
Объявления
12.08.2013, 18:28     Перевод из сантиметры в метры
Ответ Создать тему
Опции темы

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