0 / 0 / 0
Регистрация: 18.10.2012
Сообщений: 15
1

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

18.10.2012, 21:27. Показов 967. Ответов 15
Метки нет (Все метки)

Помогите вот эту программу переделать на указатели! Спасибо всем)

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;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2012, 21:27
Ответы с готовыми решениями:

Переписать функцию с использованием указателей
Подскажите пожалуйста как выполнить задание::wall: Перепишите функцию revers с использованием...

Переписать код с использованием указателей
помогите пожалуйста, нужно не использовать а все сделать через указатели #include &quot;stdafx.h&quot;...

Переписать приведенный код с использованием указателей
Есть такой код с функциями. Надо его реализовать через указатели. 3 задания к лабе сделал, а вот...

Как правильней переписать код с использованием умных указателей?
Всем привет. Есть код: TImage *im1 = new TImage(NULL); TImage *im2 = new TImage(NULL);...

15
9 / 9 / 0
Регистрация: 05.07.2012
Сообщений: 38
18.10.2012, 21:31 2
Я не очень понял сути задания, но если тебе нужен указатель на функцию то используй что-то вроде:
float(*fptr)(float, float) = &sum;
(*fptr)(a, b);
0
0 / 0 / 0
Регистрация: 18.10.2012
Сообщений: 15
18.10.2012, 21:33  [ТС] 3
Цитата Сообщение от Marko Посмотреть сообщение
Я не очень понял сути задания, но если тебе нужен указатель на функцию то используй что-то вроде:
Суть в том, чтобы эту программу записать с помощью указателей!
0
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;
}
Держи, тут все на указателях.
0
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;
0
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;
Освобождение выделенной памяти.

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

Добавлено через 1 минуту
И еще, а зачем нам вот это? (*fptr)
0
9 / 9 / 0
Регистрация: 05.07.2012
Сообщений: 38
18.10.2012, 21:58 8
Ну ты же прочил всё через указатели, так держи всё, в том числе функции.
Есть еще указатели на методы класса, но это совсем темный лес.
1
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;
}
0
9 / 9 / 0
Регистрация: 05.07.2012
Сообщений: 38
18.10.2012, 22:00 10
Повтори по аналогии.
У меня нет под рукой ничего компилирующего, посему даже если я переделаю, то за работоспособность не отвечаю.
0
0 / 0 / 0
Регистрация: 18.10.2012
Сообщений: 15
18.10.2012, 22:03  [ТС] 11
Цитата Сообщение от Marko Посмотреть сообщение
У меня нет под рукой ничего компилирующего, посему даже если я переделаю, то за работоспособность не отвечаю
Мне главное чтобы основание было, а если что-то не так то и я сам уже смогу исправить!
0
577 / 256 / 18
Регистрация: 29.11.2010
Сообщений: 868
18.10.2012, 22:10 12
Marko, компилятор online http://liveworkspace.org/
0
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;
}
0
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317
28.10.2012, 18:56 14
Разве так среднее арифметическое находят?
Я думал это сумма всех чисел в наборе, делённое на их количество....
По поводу куска кода - ждём пока a и b не будут равны нулю, до тех пор будем "долбить" на клавишу "Space".
0
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 6
28.10.2012, 19:21 15
Цитата Сообщение от >arty< Посмотреть сообщение
ждём пока a и b не будут равны нулю, до тех пор будем "долбить" на клавишу "Space".
спасибо
0
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317
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;
}
Всё остальное уже сам доделаешь, это пример.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.10.2012, 11:11
Помогаю со студенческими работами здесь

Переписать код с использованием указателей
Помогите сделать указатели... #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;locale.h&gt; ...

Переписать код с использованием указателей
Есть код на C,надо заменить на указатели. #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include...

Переписать программу с использованием указателей
поменяйте, пожалуйста, из индексов в указатели #include &lt;stdio.h&gt;; int cmp_cresc ( const int* x,...

Переписать с использованием указателей и адресов
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #define n 10 int main (void) {...

Переписать программу с использованием указателей
Всем привет, написал программу теперь нужно сделать его с помощью указателей. помогите пожалуйста ...

Подскажите как переписать класс с использованием умных указателей, либо STL
К сожалению, знания об умных указателях и библиотеке STL прошли мимо меня... Сейчас пытаюсь...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru