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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Tiami
Яростный кот
-4 / 1 / 1
Регистрация: 10.03.2009
Сообщений: 220
#1

Что опять не так в функции? - C++

30.03.2009, 12:34. Просмотров 1460. Ответов 26
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
void power(char='*',int=1,float=7);
int main()
{
    cout<<power('*');
    cout<<power(34.51);
    cout<<power(37);
    cout<<power();
}
void power(char ch,int x,float y)
{
                     for(int j=1;j<50,j++)
                     cout<<ch;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2009, 12:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что опять не так в функции? (C++):

Ошибки в функции что не так? - C++
#include &lt;iostream&gt; using namespace std; long int hms_to_secs(long int,long int,long int); int main(); { int h,m,s; ...

Что не так в этой функции? - C++
Подскажите что не так в этой функции, понимаю что что-то с передачей массива из функции, но что именно не соображу. Еще можете попутно...

Ошибки в функции что не так? - C++
#include &lt;iostream&gt; using namespace std; int fadd(int,int); int fmul(int,int); int fsub(int,int); int fdiv(int,int); int main()...

Найти решение заданной функции. Что делаю не так? - C++
Что делаю не так? Найти решение заданной функции, используя циклы &quot;for&quot;, &quot;while&quot;, &quot;do-while&quot;. число n вводится с клавиатуры. ...

Что не так в функции? Написать функцию вставки элемента в массив - C++
Здравствуйте. Вообщем что то запутался, много вариантов уже перебрал. Вроде где выделено, там ошибка, а именно в том, что он у меня...

Нужно экспертное мнение! Что рациональнее!? почему так работают функции?! - C++
Привет всем!:) Возникли небольшие непонятки с функциями которые вычисляют интеграл по формуле симпсона. Дело в том что ф-ция integ_2 ...

26
Haster
инженер-системотехник
110 / 109 / 2
Регистрация: 10.03.2009
Сообщений: 533
30.03.2009, 12:42 #2
Т.к. у тебя все параметры в функции используются по умолчанию, то вызов функции с одним аргументом всегда заменяет только первый параметр...
соответственно, power(32.51); сругается на ощибку, ибо компилятор не может преобразовать double к char
1
Deicider
96 / 52 / 1
Регистрация: 18.03.2009
Сообщений: 273
30.03.2009, 12:42 #3
Tiami, всё не так.

Ты объявляешь функцию с тремя параметрами, а когда вызываешь, передаешь только один, притом еще разных типов, или вообще не передаешь ничего.
Второе: чтобы задать значения параметров по умолчанию, нужно в объявлении функции написать имена переменных:
void power(char ch='*', int x=1, float y=7);

Вызывая такую функцию, можно будет передавать значения только типа char для первого параметра, int для второго и float для третьего. Ты же передаешь разные типы для первого параметра.
Третье: функция не возвращает значения (объявлена как void), но ты пытаешься вывести на экран возвращаемое значение ( cout<<power() ), которого не существует.

И еще одно замечание: ты в функции не используешь, ни x, ни y. зачем они тогда нужны? ))))
1
Humanitis
174 / 166 / 6
Регистрация: 12.01.2009
Сообщений: 430
30.03.2009, 12:43 #4
Цитата Сообщение от Tiami Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
void power(char='*',int=1,float=7);
int main()
{
    cout<<power('*');//power('*',1,7)
    cout<<power(34.51);//power(char(34.51),1,7)
    cout<<power(37);//power(char(37),1,7)
    cout<<power();//power('*',1,7)
}
void power(char ch,int x,float y)
{
                     for(int j=1;j<50,j++)
                     cout<<ch;
}
Перегружай функцию
1
Haster
инженер-системотехник
110 / 109 / 2
Регистрация: 10.03.2009
Сообщений: 533
30.03.2009, 12:45 #5
Deicider полностью прав ))
1
Deicider
96 / 52 / 1
Регистрация: 18.03.2009
Сообщений: 273
30.03.2009, 12:50 #6
Цитата Сообщение от Humanitis Посмотреть сообщение
Перегружай функцию
Даже если перегружать, то тоже осторожно использовать надо, так как при передаче в функцию целого числа со значением от 0 до 255, оно по сути может соответствовать и типу char, и int, и float, а свыше 255 до (не помню точно какого ), может быть как int и float.
0
Tiami
Яростный кот
-4 / 1 / 1
Регистрация: 10.03.2009
Сообщений: 220
30.03.2009, 12:52  [ТС] #7
Странно а я думал функция автоматически определяет тип аргумента....
0
Deicider
96 / 52 / 1
Регистрация: 18.03.2009
Сообщений: 273
30.03.2009, 12:53 #8
Цитата Сообщение от Tiami Посмотреть сообщение
Странно а я думал функция автоматически определяет тип аргумента....
Она-то определяет, но я пишу про то, что есть значения, которым может соответствовать несколько типов.
0
Tiami
Яростный кот
-4 / 1 / 1
Регистрация: 10.03.2009
Сообщений: 220
30.03.2009, 12:54  [ТС] #9
Цитата Сообщение от Humanitis Посмотреть сообщение
#

#include <iostream>

#

using namespace std;

#

void power(char='*',int=1,float=7);

#

int main()

#

{

#

cout<<power('*');//power('*',1,7)

#

cout<<power(34.51);//power(char(34.51),1,7)

#

cout<<power(37);//power(char(37),1,7)

#

cout<<power();//power('*',1,7)

#

}

#

void power(char ch,int x,float y)

#

{

#

for(int j=1;j<50,j++)

#

cout<<ch;

#

}
Пишет одну ошибочку:
1. expected `;' before ')' token
0
Humanitis
174 / 166 / 6
Регистрация: 12.01.2009
Сообщений: 430
30.03.2009, 12:55 #10
Deicider, Думаю тут не будет проблем при перегрузке.
Литерал 0..255 по умолчанию будет типом int
Литерал записанный в кавычках,будет типом char
и соответсвенно для float,записанный через точку.

Другое дело если мы будем подставлять в функцию типы отличные от перечисленных.
например short int или double
0
Tiami
Яростный кот
-4 / 1 / 1
Регистрация: 10.03.2009
Сообщений: 220
30.03.2009, 12:57  [ТС] #11
Цитата Сообщение от Haster Посмотреть сообщение
Т.к. у тебя все параметры в функции используются по умолчанию, то вызов функции с одним аргументом всегда заменяет только первый параметр...
соответственно, power(32.51); сругается на ощибку, ибо компилятор не может преобразовать double к char
Я думал она сразу приравняет к типу float))
0
Deicider
96 / 52 / 1
Регистрация: 18.03.2009
Сообщений: 273
30.03.2009, 13:03 #12
Сейчас задумался над своим сообщением насчет типов. А можно ли целое число без запятых перепутать с float? Или если нет запятой, то это точно будет int? подскажите, кто знает! ))

Насчет char и int всё что я написал остается в силе, так как char это однобайтовая целочисленная беззнаковая переменная.

Добавлено через 2 минуты 56 секунд
Tiami,
Может быть тут проблема: for(int j=1;j<50,j++). Нужно через ; записывать.
0
Haster
инженер-системотехник
110 / 109 / 2
Регистрация: 10.03.2009
Сообщений: 533
30.03.2009, 13:03 #13
Есть схема, которой следует компилятор при работе с типами...
Как я помню, тип float по умолчанию не приводится к типу int....
При всех операциях тип char автоматически расширяется до int...
float до double....

А вот преобразование int во float осуществляется без проблем, т.к. не связано с потерей точности
0
Humanitis
174 / 166 / 6
Регистрация: 12.01.2009
Сообщений: 430
30.03.2009, 13:21 #14
Цитата Сообщение от Haster Посмотреть сообщение
При всех операциях тип char автоматически расширяется до int...
float до double....
этож с чего вдруг?
0
Deicider
96 / 52 / 1
Регистрация: 18.03.2009
Сообщений: 273
30.03.2009, 13:28 #15
Цитата Сообщение от Tiami Посмотреть сообщение
Я думал она сразу приравняет к типу float))
Она не приравняет к типу float, потому что первый параметр имеет тип char.
0
30.03.2009, 13:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2009, 13:28
Привет! Вот еще темы с ответами:

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

Не работает strcmp + указатели непойми что опять выводят - C++
Странно все это в одном примере работает strcmp в другом (здесь) не работает. Не могу понять почему, пока разбирался решил проверить на...

При решении программа выдаёт значение функции, равное 0 или выдаёт ошибку. Что не так? - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cmath&gt; using namespace std; long Fact(short m)// функция вычисления факториала ...

Как сделать так что я мог умножать не на два числа а на 3,4,5 и так далее? - C++
Вот код: #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main(){ float a,c; char b; skip: ...


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

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

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