Форум программистов, компьютерный форум CyberForum.ru

Переписать код с использованием указателей на функцию - C++

Восстановить пароль Регистрация
 
Anton21
0 / 0 / 0
Регистрация: 18.10.2012
Сообщений: 15
18.10.2012, 21:27     Переписать код с использованием указателей на функцию #1
Помогите вот эту программу переделать на указатели! Спасибо всем)

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 <locale.h>
#include <conio.h>
using namespace std;
float sum(float,float);
int main()
{
    float a,b;
    setlocale(LC_ALL,"ukrainian");
    do
    {
    cout<<"Введiть два числа:";
    cin>>a>>b;
    cout<<"Cереднє гармонiчне:"<<sum(a,b)<<"\n";
     }
    while(a!=0 && b!=0);
    getch();
    return 0;
}
float sum(float x,float y)
{
    float c=(2*x*y)/(x+y);
    return c;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Marko
9 / 9 / 0
Регистрация: 05.07.2012
Сообщений: 38
18.10.2012, 21:31     Переписать код с использованием указателей на функцию #2
Я не очень понял сути задания, но если тебе нужен указатель на функцию то используй что-то вроде:
float(*fptr)(float, float) = &sum;
(*fptr)(a, b);
Anton21
0 / 0 / 0
Регистрация: 18.10.2012
Сообщений: 15
18.10.2012, 21:33  [ТС]     Переписать код с использованием указателей на функцию #3
Цитата Сообщение от Marko Посмотреть сообщение
Я не очень понял сути задания, но если тебе нужен указатель на функцию то используй что-то вроде:
Суть в том, чтобы эту программу записать с помощью указателей!
Marko
9 / 9 / 0
Регистрация: 05.07.2012
Сообщений: 38
18.10.2012, 21:38     Переписать код с использованием указателей на функцию #4
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
25
26
27
28
29
30
#include <iostream>
#include <locale.h>
#include <conio.h>
using namespace std;
float* sum(float*,float*);
int main()
{
    float *a = new float(),
           *b = new float();
    float*(*fptr)(float* float*) = &sum;
    setlocale(LC_ALL,"ukrainian");
    do
    {
    cout<<"Введiть два числа:";
    cin>>*a>>*b;
    float* c = (*fptr)(a,b);
    cout<<"Cереднє гармонiчне:"<<*c<<"\n";
     }
    while(*a && *b);
    delete a;
    delete b;
    delete c;
    getch();
    return 0;
}
float* sum(float* x,float* y)
{
    float* c= new float((2*(*x)*(*y))/((*x)+(*y)));
    return c;
}
Держи, тут все на указателях.
Anton21
0 / 0 / 0
Регистрация: 18.10.2012
Сообщений: 15
18.10.2012, 21:42  [ТС]     Переписать код с использованием указателей на функцию #5
Программа не компилируется даже (

Теперь работает! А можно поподробнее Вот это строки расписать, что они делают и зачем они там???
C++
1
2
3
float *a = new float(),
           *b = new float();
    float*(*fptr)(float* float*) = &sum;

C++
1
2
3
delete a;
    delete b;
    delete c;
Marko
9 / 9 / 0
Регистрация: 05.07.2012
Сообщений: 38
18.10.2012, 21:51     Переписать код с использованием указателей на функцию #6
C++
1
float *a = new float()
Выделение памяти для указателя.


C++
1
float*(*fptr)(float*, float*) = &sum;
Создание указателя на функцию.

C++
1
delete a;
Освобождение выделенной памяти.

А вообще, программа выше - сарказм.
Anton21
0 / 0 / 0
Регистрация: 18.10.2012
Сообщений: 15
18.10.2012, 21:53  [ТС]     Переписать код с использованием указателей на функцию #7
Цитата Сообщение от Marko Посмотреть сообщение
А вообще, программа выше - сарказм.
Я только учусь))

Добавлено через 1 минуту
И еще, а зачем нам вот это? (*fptr)
Marko
9 / 9 / 0
Регистрация: 05.07.2012
Сообщений: 38
18.10.2012, 21:58     Переписать код с использованием указателей на функцию #8
Ну ты же прочил всё через указатели, так держи всё, в том числе функции.
Есть еще указатели на методы класса, но это совсем темный лес.
Anton21
0 / 0 / 0
Регистрация: 18.10.2012
Сообщений: 15
18.10.2012, 21:59  [ТС]     Переписать код с использованием указателей на функцию #9
Если вам не трудно, возможно бы еще эту задачу так переделали?)
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
25
26
27
#include <iostream>
#include <conio.h>
using namespace std;
 
int min(int ,int);
int max(int ,int);
int main()
{
    int a,b,c,y;
    cout<<"vv a b c ";
    cin>>a>>b>>c;;
    y = min(a,b+c)+max(a*b,c)-min(a*2,c);
    cout <<"y= "<< y <<endl;
    getch();
    return 0;
}
int min(int x,int y) 
{                                 
    if (x > y) return y;
    else
        return x;
}
int max(int x,int y)
{
    if (x > y) return x;
    else return y;
}
Marko
9 / 9 / 0
Регистрация: 05.07.2012
Сообщений: 38
18.10.2012, 22:00     Переписать код с использованием указателей на функцию #10
Повтори по аналогии.
У меня нет под рукой ничего компилирующего, посему даже если я переделаю, то за работоспособность не отвечаю.
Anton21
0 / 0 / 0
Регистрация: 18.10.2012
Сообщений: 15
18.10.2012, 22:03  [ТС]     Переписать код с использованием указателей на функцию #11
Цитата Сообщение от Marko Посмотреть сообщение
У меня нет под рукой ничего компилирующего, посему даже если я переделаю, то за работоспособность не отвечаю
Мне главное чтобы основание было, а если что-то не так то и я сам уже смогу исправить!
defer
秘密
 Аватар для defer
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
18.10.2012, 22:10     Переписать код с использованием указателей на функцию #12
Marko, компилятор online http://liveworkspace.org/
Nazek
 Аватар для Nazek
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 6
28.10.2012, 15:36     Переписать код с использованием указателей на функцию #13
извини за тупой вопрос, А можешь поподробнее Вот эти строки расписать?

C++
1
2
3
4
5
6
 cout<<"Cереднє гармонiчне:"<<sum(a,b)<<"\n";
     }
    while(a!=0 && b!=0);
    getch();
    return 0;
}
_arty_
29 / 28 / 1
Регистрация: 10.07.2009
Сообщений: 316
28.10.2012, 18:56     Переписать код с использованием указателей на функцию #14
Разве так среднее арифметическое находят?
Я думал это сумма всех чисел в наборе, делённое на их количество....
По поводу куска кода - ждём пока a и b не будут равны нулю, до тех пор будем "долбить" на клавишу "Space".
Nazek
 Аватар для Nazek
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 6
28.10.2012, 19:21     Переписать код с использованием указателей на функцию #15
Цитата Сообщение от >arty< Посмотреть сообщение
ждём пока a и b не будут равны нулю, до тех пор будем "долбить" на клавишу "Space".
спасибо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.10.2012, 11:11     Переписать код с использованием указателей на функцию
Еще ссылки по теме:

C++ Подскажите как переписать класс с использованием умных указателей, либо STL
C++ Переписать код с использованием двоичных файлов
C++ Переписать решение системы линейных уравнений с помощью указателей

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

Или воспользуйтесь поиском по форуму:
_arty_
29 / 28 / 1
Регистрация: 10.07.2009
Сообщений: 316
29.10.2012, 11:11     Переписать код с использованием указателей на функцию #16
Anton21, Думаю так будет правильнее...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "stdafx.h"
#include <conio.h>
#include <stdlib.h>
#include <iostream>
 
using namespace std;
 
float sum(float *x,float *y)
{
    float c = (*x+*y)/2;
    return c;
}
 
 
void main()
{
    float a,b;
    a = 3;
    b = 2;
    cout<<"Srednee arifmeticheskoe:"<<sum(&a,&b)<<"\n";
    getch();
    //return 0;
}
Всё остальное уже сам доделаешь, это пример.
Yandex
Объявления
29.10.2012, 11:11     Переписать код с использованием указателей на функцию
Ответ Создать тему
Опции темы

Текущее время: 03:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru