Nano Hash - криптовалюты, майнинг, программирование

Программа C++ под названием Palindrome integer two func. Функция 1// Возвращает целое число разворота. Функция 2// Возвращает true, если палиндром

Пожалуйста помоги

Я пишу программу на С++ с использованием Visual Basic 2010, программа называется «Целое число палиндрома». Мне нужно написать две функции, одна из которых // возвращает целое число. Например, reverse(456) возвращает 654 // с заголовком: -->

int реверс (целое число)

Мне нужно написать еще одну функцию, которая // возвращает true, если число является палиндромом // с заголовком: -->

bool isPalindrome (целое число)

Мне нужно использовать обратную функцию для реализации функции isPalindrome. Число является палиндромом, если перестановка чисел совпадает с самим собой. Моя программа должна сообщить, является ли число палиндромом. Все в одном файле.

Я думаю, что эта программа работала, когда я впервые написал код не как две функции, а просто непосредственно в int main(). Но я должен поместить код в указанные две функции, и как только я это сделал и внес коррективы, я получил следующие сообщения об ошибках, и черное окно отображения cout не появилось. Вот фрагмент отчета об ошибке, за которым следует полный отчет об ошибке.

: ошибка LNK2005: "int __cdecl reverse(int)" (?reverse@@YAHH@Z) уже определено в Driver.obj

:фатальная ошибка LNK1169: найден один или несколько многократно определенных символов

Я получаю следующий отчет об ошибке

1>------ Build started: Project: Palindrome integer, Configuration: Debug Win32 ------
1>Build started 12/7/2013 4:54:25 PM.
1>InitializeBuildStatus:
1>  Touching "Debug\Palindrome integer.unsuccessfulbuild".
1>ClCompile:
1>  All outputs are up-to-date.
1>ManifestResourceCompile:
1>  All outputs are up-to-date.
1>implementation.obj : error LNK2005: "int __cdecl reverse(int)" (?reverse@@YAHH@Z) already defined in Driver.obj
1>c:\documents and settings\dell\my documents\visual studio 2010\Projects\Palindrome integer\Debug\Palindrome integer.exe : fatal error LNK1169: one or more multiply defined symbols found
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:02.25
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

//ниже мой код

#include <iostream>
#include <cmath>
#include <iomanip>

using namespace std;

//Retun reversal of an integer
int reverse(int number);              //function prototype

//Return true if number is a palindrome
bool isPalindrome(int number);            //function prototype


//Driver
int main()
{
    int usersNumber = 456; //0;    //a few lines commented tempararily for easier number testing
//  cout<<"Enter a number and I'll tell you if it's a Palindrome: ";
//  cin>> usersNumber;

bool palindromeToF = (isPalindrome(usersNumber));

    if (palindromeToF == true)
    {
        cout <<"YES the number is a Palindrome";
    }
    else
    {
        cout <<"NO the number is not a Palindrome";
    }


    return 0;
}

//function Implementation
//Retun reversal of an integer
int reverse(int number)
{
    //do while loop to count number of digits in Number
    int digitsCount = 0;
    double exponent1 = 1.0;
    int quotient;

    do
    {
        int tenToPower = pow( 10.0, exponent1);
    //  cout <<"tenToPower  "<< tenToPower <<"\t  ";
        quotient = (number / tenToPower);
    //      cout <<"exponent1  "<< exponent1<<"\t  ";
            exponent1++;

            //cout <<"quotient  "<< quotient<< "\t  "<<endl;
        digitsCount++;
    }while (!quotient == 0);


    //populating array "arrDigits" with integer's digits
    int *arrDigits = NULL;
    arrDigits = new int[digitsCount];
    double exponent2 = 0.0;
        for(int i = 0; i < digitsCount; i++)
        {
        int powerOfTen = pow( 10.0, exponent2);
    //cout <<endl<<"adding "<<((number / powerOfTen) % 10) <<" to sum";
        //cout <<powerOfTen;
        arrDigits[i]= ((number / powerOfTen) % 10);
        exponent2++;
        }

        //reverse number & populate array "arrDigRevers" with reversed order number 
        int *arrDigRevers = NULL;
        arrDigRevers = new int[digitsCount];
        int j = 0;
        int reversedNum = 0;
        double exponent3 = 0.0;
        for(int i = digitsCount-1; i >= 0; i--)
        {
            int powerOfTenB = pow( 10.0, exponent3);
        reversedNum += (powerOfTenB * arrDigits[i]);    //return of reverse func.
        exponent3++;

        /*   //reversed integer put into array 
        if(j < digitsCount)
        {
            arrDigRevers[j] = arrDigits[i];
            //cout <<"\t"<< "arrDigRevers"<<"["<< j<<"]="<< arrDigRevers[j]<<" "<< "arrDigits"<<"["<< j<<"]="<< " "<<arrDigits[j]<<" ";
            j++;
        }
        */

        }

        delete[] arrDigits;
        delete[] arrDigRevers;
        arrDigits = NULL;
        arrDigRevers = NULL;

        //cout <<endl<<"reversed number is "<< reversedNum;

        return reversedNum;
}


//function Implementation 
//Return true if number is a palindrome
bool isPalindrome(int number)
{
    if(number == reverse(number))
        {
            return true;
        }
        else
        {
            return false;
        }
}

  • похоже на конфликт имен для меня .... недвусмысленно ... 08.12.2013
  • сделать имя недвусмысленным: т. е. полностью определить имя 08.12.2013
  • откуда мне знать какое имя? И под квалификацией вы имеете в виду объявить 08.12.2013

Ответы:


1

Ответ лежит здесь:

1>implementation.obj : error LNK2005: "int __cdecl reverse(int)" (?reverse@@YAHH@Z) already defined in Driver.obj

Похоже, что они определили int reverse(int number) как в реализации.cpp, так и в Driver.cpp. Вам нужно переименовать или удалить одно из этих определений из вашего проекта.

08.12.2013
  • Ваше право спасибо. Я начал с попытки записать свои пользовательские функции в три файла: один заголовочный файл, один файл реализации и один файл драйвера. Но затем я закрыл все, кроме файла драйвера, думая, что будет проще протестировать программу в одном файле. Но, возможно, два других файла остались открытыми, хотя я думал, что закрыл их или все еще каким-то образом связаны, хотя я не включил #include заголовок в файл, который я оставил открытым. 08.12.2013
  • Но какой бы ни была причина проблемы, я просто закрыл Visual Basic, снова открыл его, открыл новый файл и вставил свой код, и теперь он работает. Еще раз спасибо за то, что указали мне в правильном направлении. 08.12.2013
  • Когда вы закрыли implementation.cpp, файл остался на диске и по-прежнему был включен в ваш проект. Вам нужно удалить файлы из настроек вашего проекта, если вы не хотите, чтобы они были включены в вашу сборку. См.: msdn.microsoft.com/en-us /библиотека/1ee8zw5t(v=vs.90).aspx 09.12.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..