2013-06-13 4 views
1

Все, что я пытаюсь сделать, это вызвать простую функцию из другой функции, почему я получаю ошибки для каждого раза, когда я вызываю addRomanDigit в функции convert_to_Roman? Программа не завершена. Я просто пытаюсь закончить первую функцию.Использование незаявленного идентификатора 'FunctionName' C++ Xcode

// 
// RomanCalculator.cpp 
// HelloWorld 
// 
// Created by Feroze on 6/13/13. 
// Copyright (c) 2013 Feroze Shahpurwala. All rights reserved. 
// 

#include <iostream> 
#include <iomanip> 
#include <string> 
#include <fstream> 

using namespace std; 


string convert_to_Roman(int value) 
{ 
    string retVal; 
    /* if (value < 0) 
    { 
     retVal ="-"; 
     value = -value; 
    } */ 

    retVal = addRomanDigit(retVal, value/1000, 'M'); // ERROR HERE and for one below 'Use of undeclared identifier 'addRomanDigit' 
    value = value % 1000; 
    retVal = addRomanDigit(retVal, value/500, 'D'); 
    value = value % 500; 
    retVal = addRomanDigit(retVal, value/100, 'C'); 
    value = value % 100; 
    retVal = addRomanDigit(retVal, value/50, 'L'); 
    value = value % 50; 
    retVal = addRomanDigit(retVal, value/10, 'X'); 
    value = value % 10; 
    retVal = addRomanDigit(retVal, value/5, 'V'); 
    value = value % 5; 
    retVal = addRomanDigit(retVal, value,  'I'); 

    return retVal; 
} 


string addRomanDigit(string starting, int num, char digit) 
{ 
    string retval = starting; 
    for (int i=0; i < num; i++) 
     retval += digit; 
    return retval; 
} 


int convert_from_Roman(int x) 
{ 
    return 0; 
} 

int calc_romans(/*figure out the calling sequence*/) 
{ 
    // fill in your code 
    // We will be discussing the string class in more detail in 
    // subsequent chapters. The following snippet illustrates a few 
    // features we will encounter : 

    // string str = "abcdefg"; 
    // for (int i=0; i < str.length(); i++) 
    // { 
    //  char c = str[i]; // pull of characters one at a time from the string 
    // } 

} 


void print_Result(/* figure out the calling sequence */) 
{ 
    // fill in your code 
} 

// Note the call by reference parameters: 
void get_Data(ifstream & infile, string & operand1, string & operand2, char & oper, bool & badInput) 
{ 
    // Read in operand1, operand2, oper 
    // Check to see if an error condition has occurred. 
    // Set badInput for any error, but main will only print out an error condition 
    // if the reason for the error is something other than 
    // hitting an end of file(out of data) condition. 

    // 
} 

// I would rather have you leave main alone and just make your function calls above match 
// the calling sequence required by main below: 

int main() 
{ 
    ifstream infile; 
    infile.open("roman.txt"); 
    if (!infile) 
    { 
     cout << "Can't open roman.txt" << endl; 
     return -1; 
    } 

    while(!infile.eof()) 
    { 
     string operand1, operand2; 
     char oper; 
     bool badInput; 
     get_Data(infile, operand1, operand2, oper, badInput); 

     if (badInput) 
     { 
      if (!infile.eof()) // Check to see if we are the end of the file 
       cout << "Skipping Bad input"<<endl; // Must be a bad input 
     } 
     else 
     { 
      int value1 = convert_from_Roman(operand1); 
      int value2 = convert_from_Roman(operand2); 
      cout << "The first operand is " << operand1 << 
      "(" << value1 << ")"<<endl; 
      cout << "The second operand is " << operand2 << 
      "(" << value2 << ")"<<endl; 
      cout <<"The operator is " << oper << endl; 
      int answer = calc_romans(value1, value2, oper); 
      print_Result(operand1, operand2, convert_to_Roman(answer), answer); 
      cout << endl; 
     } 
    } 

} 

ответ

6

Вы должны либо положить декларации функции addRomanDigit перед тем convert_to_Roman

string addRomanDigit(string starting, int num, char digit); 
string convert_to_Roman(int value) 
{ 
    //... function body 
} 

или просто переместить определение функции addRomanDigit до convert_to_Roman.

2

Вам необходимо объявить функцию, прежде чем вы сможете ее использовать. Добавьте эту строку перед определением convert_to_Roman():

string addRomanDigit(string starting, int num, char digit); 

В качестве альтернативы, переместить все определение addRomanDigit() до того convert_to_Roman()

 Смежные вопросы

  • Нет связанных вопросов^_^