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

Функция с типом char, которая должна возвращать интовое значение - C++

Восстановить пароль Регистрация
 
Техник228
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 61
14.07.2016, 23:00     Функция с типом char, которая должна возвращать интовое значение #1
Всем привет. Странное дело. Есть функция с типом char, которая должна возвращать интовое значение в виде площади квадрата (так по заданию нужно). написал следующий код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
char ArOfShp (int);
void main ()
{
    int sqsd;
    cout << "Enter square side: ";
    cin >> sqsd;
    cout << "The square area is: " << (int)ArOfShp (sqsd) << "\n\n";
system ("pause");
}
 
char ArOfShp (char a)
{
    int c;
    return c=a*a;
}
И все работает. Но если указать сторону квадрата больше 10 выдает какой-то бред... в чем может быть проблема?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2016, 23:00     Функция с типом char, которая должна возвращать интовое значение
Посмотрите здесь:

Функция должна возвращать указатель на первый элемент массива,удовлетворяющий условию C++
C++ Не работает шаблонная функция с типом char
C++ error C4716: Distance::getdist: должна возвращать значение
3. Написать функцию, которая обеспечивает ввод с клавиатуры целого положительного числа. Функция из набора знаков должна возвращать только целые полож C++
Ошибка в функции (function: должна возвращать значение) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Unknownx
Заблокирован
14.07.2016, 23:12     Функция с типом char, которая должна возвращать интовое значение #2
Цитата Сообщение от Техник228 Посмотреть сообщение
И все работает. Но если указать сторону квадрата больше 10 выдает какой-то бред... в чем может быть проблема?
- потому что char во первых максим что может уместит - это 255, во вторых код выше собраться не может т.к не соовт прототип функции её объявлению, следует всё записать вот так

Добавлено через 34 секунды
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
char ArOfShp (int);
int main ()
{
    int sqsd;
    cout << "Enter square side: ";
    /*cin >> sqsd;*/sqsd = 11;
    cout << "The square area is: " << (int)ArOfShp (sqsd) << "\n\n";
    return 0;
}
 
char ArOfShp (int a)
{
    int c;
    return c=a*a;
}
http://codepad.org/IBYq6EUR
Enter square side: The square area is: 121
Техник228
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 61
14.07.2016, 23:17  [ТС]     Функция с типом char, которая должна возвращать интовое значение #3
с 11 тоже работает. а если попробовать 12 и больше - баста...

Добавлено через 1 минуту
хотя 12 в квадрате это всего 144
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
14.07.2016, 23:26     Функция с типом char, которая должна возвращать интовое значение #4
Техник228, твоя функция возвращает тип char, который в твоём случае имеет диапазон [-128,127], поэтому, когда результат умножение получается вне этого диапазона, то он к нему приводится усечением int до char. И вместо 144 ты получаешь -112. Объяви возвращаемый тип как int и проблем не будет.
Unknownx
Заблокирован
14.07.2016, 23:27     Функция с типом char, которая должна возвращать интовое значение #5
Цитата Сообщение от Техник228 Посмотреть сообщение
хотя 12 в квадрате это всего 144
ну так коды после 128 для чара идут в минус, unsigned тогда используй
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
unsigned char ArOfShp (int);
int main ()
{
    int sqsd;
    cout << "Enter square side: ";
    /*cin >> sqsd;*/sqsd = 14;
    cout << "The square area is: " << (int)ArOfShp (sqsd) << "\n\n";
    return 0;
}
 
unsigned char ArOfShp (int a)
{
    int c;
    return c=a*a;
}
http://codepad.org/7hNjgfw7
Enter square side: The square area is: 196

Не по теме:

Добавлено через 32 секунды

Цитата Сообщение от Tulosba Посмотреть сообщение
И вместо 144 ты получаешь -112.
(-60) http://codepad.org/IgMFJWV8

Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
14.07.2016, 23:30     Функция с типом char, которая должна возвращать интовое значение #6
Цитата Сообщение от Unknownx Посмотреть сообщение
- 60
Функция с типом char, которая должна возвращать интовое значение
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
14.07.2016, 23:32     Функция с типом char, которая должна возвращать интовое значение #7
Unknownx, ты 14 умножаешь, а я 12, как и ТС
Техник228
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 61
14.07.2016, 23:37  [ТС]     Функция с типом char, которая должна возвращать интовое значение #8
так, минуточку. а как сделать чтобы с клавиатуры вводить сторону квадрата можно было и все корректно считалось?
Unknownx
14.07.2016, 23:37
  #9

Не по теме:

Цитата Сообщение от Tulosba Посмотреть сообщение
Unknownx, ты 14 умножаешь, а я 12, как и ТС
да согласен, тут я затупил конечно же 144 - 128 = 16 => -128 + 16 = 112

Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
14.07.2016, 23:40     Функция с типом char, которая должна возвращать интовое значение #10
Цитата Сообщение от Техник228 Посмотреть сообщение
с клавиатуры вводить сторону квадрата можно было и все корректно считалось?
Да на int замени возвращаемый тип и всё.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
int ArOfShp (int);
int main ()
{
    int sqsd;
    cout << "Enter square side: ";
    cin >> sqsd;
    cout << "The square area is: " << ArOfShp (sqsd) << "\n\n";
}
 
int ArOfShp (int a)
{
    int c;
    return c=a*a;
}
Техник228
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 61
14.07.2016, 23:44  [ТС]     Функция с типом char, которая должна возвращать интовое значение #11
Есть функция с типом char, которая должна возвращать интовое значение в виде площади квадрата (так по заданию нужно). Именно char и нужен. в том-то и затык.
Galileo
1 / 1 / 0
Регистрация: 10.05.2015
Сообщений: 15
15.07.2016, 02:05     Функция с типом char, которая должна возвращать интовое значение #12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
unsigned char ArOfShp (int);
int f(int c);
int main ()
{
    int sqsd;
    cout << "Enter square side: ";
    /*cin >> sqsd;*/sqsd = 14;
    cout << "The square area is: " << (int)ArOfShp (sqsd) << "\n\n";
    return 0;
}
 
unsigned char ArOfShp (int a)
{
return   f(a);
}
int f(int c){
int a=c;
    return a=a*a
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2016, 11:13     Функция с типом char, которая должна возвращать интовое значение
Еще ссылки по теме:

C++ Функция должна возвращать наименьший положительный элемент массива
C++ Функция должна возвращать новый массив, состоящий из отрицательных элементов исходного массива
Где и что исправить в коде ? Ошибка :sumSequence должна возвращать значение C++

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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
15.07.2016, 11:13     Функция с типом char, которая должна возвращать интовое значение #13
Цитата Сообщение от Техник228 Посмотреть сообщение
Именно char и нужен. в том-то и затык.
Ну оставь char в аргументах, а возвращай int.
Т.к если значение не лезет в тип, будет его усечение, от этого никуда не денешься.
Yandex
Объявления
15.07.2016, 11:13     Функция с типом char, которая должна возвращать интовое значение
Ответ Создать тему
Опции темы

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