Member 14822012 Ответов: 1

Как мне закончить эту проблему C++ для указателей


Исключите все существующие файлы исходного кода, которые уже могут быть в вашем IDE-проекте, и добавьте
три новых,называя их C1A5E3_ComputeMinimum.cpp, C1A5E3_ComputeMaximum.cpp, и
C1A5E3_main.cpp. Не используйте #include для включения любого из этих трех файлов друг в друга
или в любом другом файле. Однако вы можете использовать его для включения любого подходящего заголовка
файл(Ы), который вам нужен.

Файл C1A5E3_ComputeMinimum.cpp должен содержать функцию с именем ComputeMinimum и
C1A5E3_ComputeMaximum.cpp должен содержать функцию с именем ComputeMaximum. Каждая функция
должен:
1. иметь ровно два формальных параметра, каждый из которых имеет тип “указатель на const double”;
2. возвращаемый тип “указатель на двойное” (а не “указатель на const двойной”);
3. содержать только одно утверждение;
4. не использовать переменные, отличные от его формальных параметров;
5. Не используйте ничего, что требует #define или #include;
6. Не используйте литеральные значения;
7. Не выполняйте задания, сложения, вычитания, умножения или деления.;
8. не использовать, если, выключатель, или циклических инструкций;
9. не вызывать функции или макросы;
10. не показывайте ничего.
ComputeMinimum должен сравнить значения, на которые указывают его параметры, и вернуть a
указатель на наименьшее из этих значений в то время как ComputeMaximum должен сравнивать значения
указывает на его параметры и возвращает указатель на наибольшее из этих значений.

Файл C1A5E3_main.cpp должен содержать функцию main, которая должна:
1. Используйте не более двух переменных;
2. предложите пользователю ввести два десятичных значения через пробел в одной строке;
3. передайте указатели на введенные пользователем значения как в ComputeMinimum, так и в ComputeMaximum
в качестве аргументов;
4. отображение результатов обоих вызовов функций в следующем 2-строчном формате, где
вопросительные знаки представляют значения, указатели на которые передаются и возвращаются
функции и амперсанды отображаются буквально, чтобы напомнить пользователю, что
указатели передаются и возвращаются, а не сами значения:
ComputeMinimum(&?, &?) вернулся &?
ComputeMaximum(&?, &?) вернулся &?

Что я уже пробовал:

Главная.С
#include <iostream>
#include "C:\Users\Shreeji\CLionProjects\C1A5E3\C1A5E3_Compute.h"
using namespace std;

int main()
{
    cout << "Please enter any two number: ";
    double number1, number2, *ptr1, *ptr2;
    cin >> number1 >> number2;
    ptr1 = &number1;
    ptr2 = &number2;
    cout << "ComputeMinimum (" << number1 << ", " << number2 << ") returned " << *ComputeMinimum(ptr1, ptr2) << "\n";
    cout << "ComputeMaximum (" << number1 << ", " << number2 << ") returned " << *ComputeMaximum(ptr1, ptr2) << "\n";
    cout << ptr1 << ptr2;
    return 0;
}



Computeminimum.с
double *ComputeMinimum(const double *number1, const double *number2)
{
    return (double *) (number1 < number2 ? number1 : number2);
}


ComputeMaximum.с
double *ComputeMaximum(const double *number1, const double *number2)
{
    return (double *) (number1 > number2 ? number1 : number2);
}


заголовочный файл
#ifndef C1A5E2_Compute_H
#define C1A5E2_Compute_H

double &ComputeMinimum(const double &number1, const double &number2);
double &ComputeMaximum(const double &number1, const double &number2);

#endif // C1A5E2_Compute_H

1 Ответов

Рейтинг:
2

phil.o

Вы должны разыменовать указатели, чтобы сравнить значения, в противном случае вы будете сравнивать адреса вместо этого:

double* ComputeMinimum(const double* number1, const double* number2)
{
    return (double*) (*number1 < *number2 ? number1 : number2);
}

double* ComputeMaximum(const double* number1, const double* number2)
{
    return (double*) (*number1 > *number2 ? number1 : number2);
}


Кроме того, объявления в заголовочном файле не соответствуют их определениям (вы использовали ссылки вместо указателей).