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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
LiLi R.
0 / 0 / 0
Регистрация: 15.04.2010
Сообщений: 82
#1

Механизм перегрузки - C++

15.04.2010, 18:03. Просмотров 1664. Ответов 18
Метки нет (Все метки)

Ребят помогите. Нужно создать две версии функции, используя механимз перегрузки, заголовки у которых должны быть такими: №1 float F(float x); №2 void F (float x, float &y).
1)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <math.h>
using namespace std;
 
int main(){
    float F(float x){
    float y;
    cin>>x;
    if (fabs(x)<3)
        return y=sin(x);
    else if (fabs(x)<9)
        return y=sqrt(x*x+1)/sqrt(x*x+5);
    else return y=sqrt(x*x+1)-sqrt(x*x+5);
    cout<<y<<endl; 
    system("PAUSE");
    return 0;}
}
2)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <math.h>
using namespace std;
 
int main(){
    void F (float x, float &y){
    if (fabs(x)<3) y=sin(x);
    else if (fabs(x)<9) y=sqrt(x*x+1)/(x*x+5);
    else y=sqrt(x*x+1)-sqrt(x*x+5);
    cin>>x;
    cout<<y<<endl;
    system("PAUSE");
    return;}
}
В обоих версиях одна ошибка с F. Я новичёк поэтому пожалуста, не ругайте сильно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2010, 18:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Механизм перегрузки (C++):

Механизм перегрузки - C++
Здравствуйте, помогите решить задачу. С помощью механизма перегрузки функций организовать сложение: а) числа с самим собой (один...

механизм перегрузки функций - C++
С помощью механизма перегрузки функций реализовать функции для вывода на экран (первый параметр – тип выводимого значения (самостоятельно...

Используя механизм перегрузки функций, разработать две версии функции F - C++
Используя механизм перегрузки функций,разработать две версии функции F,заголовки которых выглядят так: 1) float F(float x); 2) void...

Используя механизм перегрузки функций, разработайте две версии функции F - C++
Используя механизм перегрузки функций, разработайте две версии функции F, заголовки которых выглядят следующим образом: 1) float...

Используя механизм перегрузки функции, вычислить для разных типов параметров - C++
Используя механизм перегрузки функции, разработать и отладить программу вычисление значения = f (x, y, z) для различных типов параметров....

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

18
insideone
Модератор
Автор FAQ
3643 / 922 / 51
Регистрация: 10.01.2010
Сообщений: 2,480
15.04.2010, 18:17 #2
Функции нельзя писать внутри других функций, а main это тоже функция... поэтому вынесите код для функций F отдельно. К тому же чтобы они перегружали друг друга они должны быть написаны в одной программе.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <math.h>
 
float F(float x) {
   // код функции float F(float x)
}
void F(float x, float &y) {
  // код функции void F (float x, float &y)
}
 
int main() {
   // код самой программы. вызовы вышенаписаных функций и т.д.
   float x = F(0.3f);
   float y = 0;
   F(0.3f, y);
   std::cout << x << "; " << y;
return 0;
}
0
LiLi R.
0 / 0 / 0
Регистрация: 15.04.2010
Сообщений: 82
15.04.2010, 18:33  [ТС] #3
То есть нужно две эти версии слепить как одну?

Добавлено через 8 минут
insideone, все здорово. Разобралась. Последний вопрос - как теперь сделать, чтобы ввести самой значение x?
0
insideone
Модератор
Автор FAQ
3643 / 922 / 51
Регистрация: 10.01.2010
Сообщений: 2,480
15.04.2010, 19:32 #4
Так у вас в коде (начало темы) это и делается:
C++
1
cin >> x;
Это и есть ввод данных в переменную x.
0
LiLi R.
0 / 0 / 0
Регистрация: 15.04.2010
Сообщений: 82
15.04.2010, 21:10  [ТС] #5
Но когда я пишу cin>>x в третьем загаловке вижак выдает ошибку
Warning 1 warning C4552: '/' : operator has no effect; expected operator with side-effect 16 строка
0
neske
1505 / 872 / 84
Регистрация: 26.03.2010
Сообщений: 2,986
15.04.2010, 22:43 #6
случайно, сори.
0
LiLi R.
0 / 0 / 0
Регистрация: 15.04.2010
Сообщений: 82
16.04.2010, 23:19  [ТС] #7
insideone, как мне изменить код внутри загаловка int main() чтоб при коде cin>>x программа работала?
0
insideone
Модератор
Автор FAQ
3643 / 922 / 51
Регистрация: 10.01.2010
Сообщений: 2,480
16.04.2010, 23:44 #8
Цитата Сообщение от LiLi R. Посмотреть сообщение
Но когда я пишу cin>>x в третьем загаловке вижак выдает ошибку
Warning 1 warning C4552: '/' : operator has no effect; expected operator with side-effect 16 строка
Warning это предупреждение а не ошибка, без неё должно все выполняться. Работает или нет? Если нет то скопируйте строку с ошибкой сюда + строку сверху и снизу. Короче ближайшие строки тоже нужно бы увидеть. Или вообще весь код
0
LiLi R.
0 / 0 / 0
Регистрация: 15.04.2010
Сообщений: 82
17.04.2010, 01:18  [ТС] #9
insideone,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
include <iostream>
#include <math.h>
 
float F(float x) {
if (fabs(x)<3)
return sin(x);
else if (fabs(x)<9)
return sqrt(x*x+1)/sqrt(x*x+5);
else return sqrt(x*x+1)-sqrt(x*x+5);
}
void F(float x, float &y) {
  if (fabs(x)<3) sin(x);
else if (fabs(x)<9) sqrt(x*x+1)/(x*x+5);
else sqrt(x*x+1)-sqrt(x*x+5);
}
 int main() {
 float x = F(0.3f);
   float y = 0;
   F(0.3f, y);
   cin>>x;
   std::cout << x << "; " << y;
   system("PAUSE");
return 0;
}
решила исправится вместо warning получила error с cin.
0
insideone
Модератор
Автор FAQ
3643 / 922 / 51
Регистрация: 10.01.2010
Сообщений: 2,480
17.04.2010, 02:19 #10
нужно
C++
1
std::cin>>x;
а тут забыли дописать return
C++
1
2
3
  if (fabs(x)<3) return sin(x);
else if (fabs(x)<9) return  sqrt(x*x+1)/(x*x+5);
else return sqrt(x*x+1)-sqrt(x*x+5);
0
LiLi R.
0 / 0 / 0
Регистрация: 15.04.2010
Сообщений: 82
17.04.2010, 19:21  [ТС] #11
insideone,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <math.h>
 
float F(float x) {
if (fabs(x)<3) sin(x);
else if (fabs(x)<9)  sqrt(x*x+1)/sqrt(x*x+5);
else return sqrt(x*x+1)-sqrt(x*x+5);
}
void F(float x, float &y) {
  if (fabs(x)<3) return sin(x);
else if (fabs(x)<9) return sqrt(x*x+1)/(x*x+5);
else return sqrt(x*x+1)-sqrt(x*x+5);
}
 int main() {
 float x = F(0.3f);
   float y = 0;
   F(0.3f, y);
   std::cin>>x;
   std::cout << x << "; " << y;
   system("PAUSE");
return 0;
}
Теперь вот такие ошибки:
Warning 1 warning C4552: '/' : operator has no effect; expected operator with side-effect 6
Error 2 error C2562: 'F' : 'void' function returning a value 10
Error 3 error C2562: 'F' : 'void' function returning a value 11
Error 4 error C2562: 'F' : 'void' function returning a value 12
0
Vorona
Peace 2 all shining faces
670 / 532 / 45
Регистрация: 05.03.2010
Сообщений: 1,283
17.04.2010, 19:24 #12
в 9 строке нужно
C++
1
float F(float x, float &y) {......
0
LiLi R.
0 / 0 / 0
Регистрация: 15.04.2010
Сообщений: 82
17.04.2010, 19:27  [ТС] #13
Vorona, нет. в задании сказано чтобы два загаловка были с void и float
0
Vorona
Peace 2 all shining faces
670 / 532 / 45
Регистрация: 05.03.2010
Сообщений: 1,283
17.04.2010, 19:30 #14
но ведь void не может вернуть значения типа float да и вообще ничего не может вернуть
в ф-ции типа void вместо return должно быть y =
а в ф-ции типа float в 6 и 5 строках нужно дописать return перед sin и sqrt
1
LiLi R.
0 / 0 / 0
Регистрация: 15.04.2010
Сообщений: 82
17.04.2010, 19:37  [ТС] #15
Vorona, Точняк! Удалила return и терь прога пашет.

Добавлено через 2 минуты
Эээ...прога то пашет..поспешила радоваться...теперь если например введу число 7 она выводит
7; 0. Разве так и должно быть?
0
17.04.2010, 19:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2010, 19:37
Привет! Вот еще темы с ответами:

Перегрузки - C++
Помогите пожалуйста!!!! Перегрузку оператора – слева объект, справа другой тип данных вроде сделала, а перегрузку оператора – слева другой...

с++ перегрузки - C++
Нужна помощь с реализацией кода(перегрузка добавления элемента в массив) Полная постановка задачи. АТД - множество с элементами типа...

Перегрузки - C++
Помогите пожалуйста написать программу. Описать производный класс, содержащий поле козырь, и функцию, проверяющую кроет ли карта,...

Массивы и перегрузки - C++
Есть парочка вопросов. Как объявить указатель на двумерный массив? На одномерный в таком виде int *ptr = new int ; а с двумерным...


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

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

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