2 / 2 / 0
Регистрация: 07.06.2016
Сообщений: 63
1

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

14.07.2016, 23:00. Показов 952. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. Странное дело. Есть функция с типом 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 выдает какой-то бред... в чем может быть проблема?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.07.2016, 23:00
Ответы с готовыми решениями:

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

Функция должна возвращать наименьший положительный элемент массива
Помогите, не могу написать этот клочек кода...голова кипит.. Есть постановка задания: Написать...

Error C4716: mean: должна возвращать значение
Пожалуйста, подскажите в чем ошибка. При запуске выдает ошибку: «error C4716: mean: должна...

Функция должна возвращать указатель на первый элемент массива,удовлетворяющий условию
Функция должна возвращать указатель на первый элемент массива,удовлетворяющий условию(в данном...

12
Заблокирован
14.07.2016, 23:12 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
0
2 / 2 / 0
Регистрация: 07.06.2016
Сообщений: 63
14.07.2016, 23:17  [ТС] 3
с 11 тоже работает. а если попробовать 12 и больше - баста...

Добавлено через 1 минуту
хотя 12 в квадрате это всего 144
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
14.07.2016, 23:26 4
Техник228, твоя функция возвращает тип char, который в твоём случае имеет диапазон [-128,127], поэтому, когда результат умножение получается вне этого диапазона, то он к нему приводится усечением int до char. И вместо 144 ты получаешь -112. Объяви возвращаемый тип как int и проблем не будет.
0
Заблокирован
14.07.2016, 23:27 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

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

Не по теме:

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

0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
14.07.2016, 23:40 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;
}
0
2 / 2 / 0
Регистрация: 07.06.2016
Сообщений: 63
14.07.2016, 23:44  [ТС] 11
Есть функция с типом char, которая должна возвращать интовое значение в виде площади квадрата (так по заданию нужно). Именно char и нужен. в том-то и затык.
0
1 / 1 / 0
Регистрация: 10.05.2015
Сообщений: 15
15.07.2016, 02:05 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
}
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
15.07.2016, 11:13 13
Цитата Сообщение от Техник228 Посмотреть сообщение
Именно char и нужен. в том-то и затык.
Ну оставь char в аргументах, а возвращай int.
Т.к если значение не лезет в тип, будет его усечение, от этого никуда не денешься.
0
15.07.2016, 11:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.07.2016, 11:13
Помогаю со студенческими работами здесь

Ошибка в функции (function: должна возвращать значение)
ребят, компилятор выдает error C4716: function: должна возвращать значение что это значит? как с...

Функция должна возвращать новый массив, состоящий из отрицательных элементов исходного массива
У меня есть задание: написать функцию (процедуру) с параметрами для обработки одномерного массива...

error C4716: Distance::getdist: должна возвращать значение
уменя visual c++ 2010 professional.как решить проблему ? #include &lt;iostream&gt; using namespace std;...

Ошибка C4716 Complex<int>::operator+=: должна возвращать значение
У меня vs 2015 c++. Необходимо создать шаблон класса для представления 2-х компонентных комплексных...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru