С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Техник228
1 / 1 / 0
Регистрация: 07.06.2016
Сообщений: 62
1

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

14.07.2016, 23:00. Просмотров 345. Ответов 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
Ответы с готовыми решениями:

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

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

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

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

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

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

Добавлено через 1 минуту
хотя 12 в квадрате это всего 144
0
Tulosba
:)
Эксперт С++
4750 / 3244 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
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
:)
Эксперт С++
4750 / 3244 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
14.07.2016, 23:30 6
Цитата Сообщение от Unknownx Посмотреть сообщение
- 60
Функция с типом char, которая должна возвращать интовое значение
0
Tulosba
:)
Эксперт С++
4750 / 3244 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
14.07.2016, 23:32 7
Unknownx, ты 14 умножаешь, а я 12, как и ТС
0
Техник228
1 / 1 / 0
Регистрация: 07.06.2016
Сообщений: 62
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
:)
Эксперт С++
4750 / 3244 / 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
Техник228
1 / 1 / 0
Регистрация: 07.06.2016
Сообщений: 62
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
:)
Эксперт С++
4750 / 3244 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
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

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

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

Где и что исправить в коде ? Ошибка :sumSequence должна возвращать значение
#include #include #include using namespace std; void...


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

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

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