Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 26.11.2019
Сообщений: 17
1

Написать программу, которая выполняет задание используя указатели на функцию

03.12.2019, 19:08. Показов 1588. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написать программу, которая выполняет задание используя указатели на функцию:
Вычислить площадь геометрических фигур:
1. Трапеции (по длине средней линии и высоте)
2. Прямоугольника (по длинам двух смежных сторон)
3. Ромба (по длинам диагоналей)
4. Прямоугольного треугольника (по длинам катетов)

Добавлено через 54 минуты
Сделал вот такое вот решение с возможностью выбрать что считать
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <stdio.h>
 
int trap(int x, int y)
{
    return x * y;
}
 
int romb(int x, int y)
{
    return (x * y) / 2;
}
 
int main()
{
    int (*task)(int x, int y);
    int taskN, a, b, result;
    printf("Enter a, then b ");
    scanf_s("%d%d", &a, &b);
    printf("Enter a number of task(1-4)");
    scanf_s("%d", &taskN);
    if (taskN == 1)
    {
        task = trap;
        result = task(a, b);
        printf("%d", result);
    }
    else if (taskN == 2)
    {
        task = trap;
        result = trap(a, b);
        printf("%d", result);
    }
    else if (taskN == 3)
    {
        task = romb;
        result = task(a, b);
        printf("%d", result);
    }
    else if (taskN == 4)
    {
        task = romb;
        result = task(a, b);
        printf("%d", result);
    }
    else
        printf("There is no such task");
 
    return 0;
}
Добавлено через 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
31
32
33
34
35
36
37
#include <stdio.h>
 
int trap(int x, int y)
{
    return x * y;
}
 
int romb(int x, int y)
{
    return (x * y) / 2;
}
 
int main()
{
    int (*task)(int x, int y);
    int taskN, a, b, result;
    printf("Enter a, then b ");
    scanf_s("%d%d", &a, &b);
    printf("Enter a number of task (1 - trapezoid,rectangle 2 - rhombus, rectangular triangle) ");
    scanf_s("%d", &taskN);
    if (taskN == 1)
    {
        task = trap;
        result = task(a, b);
        printf("%d", result);
    }
    else if (taskN == 2)
    {
        task = romb;
        result = task(a, b);
        printf("%d", result);
    }
    else
        printf("There is no such task");
 
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.12.2019, 19:08
Ответы с готовыми решениями:

Написать программу, которая выполняет приведение многочлена, используя списки
Такое дело. Нужно написать программу, которая выполняет приведение многочлена, используя списки....

Написать функцию, которая вычисляет квадрат целых чисел, используя указатели
Написать функцию, которая вычисляет квадрат целых чисел, используя указатели.

Написать функцию, которая обменивает значениями две целочисленных переменных, используя указатели.
Ребят, такая задачка: &quot;написать функцию, которая обменивает значениями две целочисленных...

Написать функцию Dohod которая выполняет доход по вкладу
Написать функцию Dohod которая выполняет доход по вкладу,используемыми данными являются:величина...

2
Эксперт CЭксперт С++
5118 / 4558 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
03.12.2019, 19:22 2
Лучший ответ Сообщение было отмечено Arcen9 как решение

Решение

Arcen9, еще вот такое решение:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <stdio.h>
 
typedef double (*task)(double, double);
 
double trap(double x, double y)
{
    return x * y;
}
 
double romb(double x, double y)
{
    return (x * y) / 2;
}
 
double square(task t, double x, double y)
{
    return t(x, y);
}
 
int main()
{
    int     taskN;
    double  a, b;
 
    printf("Enter a, then b\n");
    scanf_s("%lf %lf", &a, &b);
    printf("Enter a number of task(1-4): ");
    scanf_s("%d", &taskN);
    switch (taskN)
    {
        case 1:
        case 2:
            printf("%.3lf", square(trap, a, b));
            break;
        case 3:
        case 4:
            printf("%.3lf", square(romb, a, b));
            break;
        default:
            printf("There is no such task");
    }
    return 0;
}
Наверное, лучше использовать не int, а double
1
0 / 0 / 0
Регистрация: 26.11.2019
Сообщений: 17
03.12.2019, 22:21  [ТС] 3
Ещё такое решение, дополнительное задание было сделать тоже самое только с использованием массива указателей на функции
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
31
32
33
34
35
36
#include <stdio.h>
 
int trap(int x, int y)
{
    return x * y;
}
 
int romb(int x, int y)
{
    return (x * y) / 2;
}
 
int main()
{
    int (*task[2])(int x, int y) = {trap, romb};
    int taskN, a, b, result;
    printf("Enter a number of task (1 - trapezoid,rectangle 2 - rhombus, rectangular triangle) ");
    scanf("%d", &taskN);
    printf("Enter a, then b ");
    scanf("%d%d", &a, &b);
 
    if (taskN == 1)
    {   
        result = task[0](a, b);
        printf("%d", result);
    }
    else if (taskN == 2)
    {
        result = task[1](a, b);
        printf("%d", result);
    }
    else
        printf("There is no such task");
 
    return 0;
}
0
03.12.2019, 22:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.12.2019, 22:21
Помогаю со студенческими работами здесь

Написать функцию , которая выполняет сложение и вычитание данной строки
Написать функцию arf, которая выполняет сложение и вычитание данной строки Пример: arf(&quot;3+6-1&quot;)=8

Написать функцию, которая выполняет поиск значения в произвольном массиве
Написать функцию, выполняющую поиск указанного значения в произвольном массиве. Результат поиска...

Написать функцию, которая выполняет возведение в квадрат всех элементов массива
Написать функцию, которая выполняет возведение в квадрат всех элементов массива с нечетными...

Используя указатели написать функцию strcat
Упражнение 5.3. Используя указатели, напишите функцию strcat, которую мы рассматривали в главе 2...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru