Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Техник228
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 61
#1

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

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

Всем привет. Странное дело. Есть функция с типом 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2016, 23:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция с типом char, которая должна возвращать интовое значение (C++):

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

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

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

Ошибка в функции (function: должна возвращать значение) - C++
ребят, компилятор выдает error C4716: function: должна возвращать значение что это значит? как с этим бороться? #include &quot;stdafx.h&quot; ...

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

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

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

Добавлено через 1 минуту
хотя 12 в квадрате это всего 144
0
Tulosba
:)
Эксперт С++
4619 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
14.07.2016, 23:26 #4
Техник228, твоя функция возвращает тип char, который в твоём случае имеет диапазон [-128,127], поэтому, когда результат умножение получается вне этого диапазона, то он к нему приводится усечением int до char. И вместо 144 ты получаешь -112. Объяви возвращаемый тип как int и проблем не будет.
0
Unknownx
Заблокирован
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
Tulosba
:)
Эксперт С++
4619 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
14.07.2016, 23:30 #6
Цитата Сообщение от Unknownx Посмотреть сообщение
- 60
Функция с типом char, которая должна возвращать интовое значение
0
Tulosba
:)
Эксперт С++
4619 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
14.07.2016, 23:32 #7
Unknownx, ты 14 умножаешь, а я 12, как и ТС
0
Техник228
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 61
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
Tulosba
:)
Эксперт С++
4619 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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
Техник228
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 61
14.07.2016, 23:44  [ТС] #11
Есть функция с типом char, которая должна возвращать интовое значение в виде площади квадрата (так по заданию нужно). Именно char и нужен. в том-то и затык.
0
Galileo
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
Tulosba
:)
Эксперт С++
4619 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
15.07.2016, 11:13 #13
Цитата Сообщение от Техник228 Посмотреть сообщение
Именно char и нужен. в том-то и затык.
Ну оставь char в аргументах, а возвращай int.
Т.к если значение не лезет в тип, будет его усечение, от этого никуда не денешься.
0
15.07.2016, 11:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2016, 11:13
Привет! Вот еще темы с ответами:

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

Где и что исправить в коде ? Ошибка :sumSequence должна возвращать значение - C++
#include #include #include using namespace std; void displayExplanation(void) { cout &lt;&lt; &quot;Eta porgramma sumiryet...

Не работает шаблонная функция с типом char - C++
Как реализовать шаблон функции для калькулятора для дробей с типом &lt;char&gt;?А то вместо чисел выводатся символы в дробях. С другими типами...

.Написать функцию, которая будет возвращать значение y=ln(x)+x при входящем параметре x. Построить таблицу значений этой функции - C++
.Написать функцию, которая будет возвращать значение y=ln(x)+x при входящем параметре x. Построить таблицу значений этой функции. ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru