cc120341
cc120341
采纳率100%
2021-04-14 05:34

能不能帮我写一下下面这个文件

100
已采纳

//
//      Base Converter
//
//   Integer number base converter (binary to base 36)
//
// * NOTE: User defined identifiers are shown surrounded by < >.
//   DO NOT TYPE THE < > as part of the names.
// * Do not deviate from the algorithm. Follow the run example in the
//   accompanying pdf description of the algorithm. Make sure your output
//   looks like the example.
//
// PROGRAM STARTS BELOW THIS LINE ------------------------------------------

// FILL IN THE CODE that includes all the necessary headers
// (up to one extra without penalty) and namespaces

// FILL IN THE CODE with the prototypes of any function used by
// main and defined after main.

int main()
{
//  FILL IN A STATEMENT that writes to the console the prompt
//      "Enter base to change from: ". See pdf instructions for an example.
//  FILL IN A STATEMENT to define an integer variable called <baseFrom>
//  FILL IN A STATEMENT that reads <baseFrom> from the console
    
//  FILL IN A STATEMENT that writes to the console the prompt
//      "Enter base to change to: ". See pdf instructions for an example.
//  FILL IN A STATEMENT to define an integer variable called <baseTo>
//  FILL IN A STATEMENT that reads <baseTo> from the console
    
//  FILL IN THE CODE that defines a string variable called <fileName> and
//      initializes it to "converterText.txt"
//  FILL IN A STATEMENT that defines a string variable called <number>
    
//  FILL IN THE CODE for a loop that repeats as long as <number> is not "0"
//   the loop contains the following statements (1-7):
//      1. FILL IN A STATEMENT that writes to the console the prompt
//          "Enter number (0 to exit): ". See pdf instructions for an example.
//      2. FILL IN A STATEMENT that reads <number> from the console
//      3. FILL IN A STATEMENT that defines an input file stream object called
//          <input>
//      4. FILL IN A STATEMENT that calls the function <overwriteFileAndReopen>
//          with arguments <input>, <fileName>, and <number>
//      5. FILL IN A STATEMENT that defines an integer called <n>
//      6. FILL IN A STATEMENT that defines an integer called <decimal> and
//          initializes it with the return value resulting from calling the
//          function <stream2unsigned> with arguments <input>, <n>, and <baseFrom>
//      7. FILL IN A STATEMENT that calls the function <unsigned2string> with
//          arguments <decimal> and <baseTo> and writes the return value to the
//          console preceded by "--> ". See pdf instructions for an example.

}



//  FILL IN THE CODE that defines the header to a void function called
//   <overwriteFileAndReopen>. It takes the following three parameters:
//      an input file stream object called <ifst> passed by reference,
//      a string called <fileName>,
//      and a string called <text>
//   The body of the function contains the following statements:
//      1. FILL IN A STATEMENT to close <ifst>
//      2. FILL IN THE CODE to define an output file stream object called
//          <oFile> and used it to open the file given in <fileName>
//      3. FILL IN A STATEMENT to write the contents of <text> to the file
//      4. FILL IN A STATEMENT that closes <oFile>
//      5. FILL IN A STATEMENT to open the file indicated by <fileName>
//          using the <ifst> object
//      7. FILL IN THE CODE to check if <ifst> failed to open. If it did,
//          it executes the following two statements:
//          A. FILL IN A STATEMENT that write to the console the message
//              "Error reading ", followed by <fileName>
//          B. FILL IN A STATEMENT to end immediately the program execution

//  FILL IN THE CODE that defines the header to a function called <head> that
//   returns a character. It takes one parameter, an input file stream object
//   called <ifst> passed by reference.
//   The body of the function contains the following statements:
//      1. FILL IN THE CODE that if <ifst> failed to open, it returns '\0'
//      2. FILL IN A STATEMENT that defines a character called <sc>
//      3. FILL IN A STATEMENT that reads a single character into <sc> from the file
//      4. FILL IN A STATEMENT that returns the value of <sc>

//  FILL IN THE CODE that defines the header to a function called <char2digit> that
//   returns a positive integer. It takes one parameter of character type named <a>
//   The body of the function contains the following statements:
//      1. FILL IN THE CODE that if <a> is between  '0' and '9', inclusive,
//          it returns a - '0'
//      2. FILL IN THE CODE that if <a> is between  'a' and 'z', inclusive,
//          it returns a - 'a' + 10
//      3. FILL IN THE CODE that if <a> is between  'A' and 'Z', inclusive,
//          it returns a - 'A' + 10
//      4. FILL IN THE CODE that returns 0 if none of the above conditions are
//          satisfied

//  FILL IN THE CODE that defines the header to a function called <digit2char> that
//   returns a character. It takes one parameter of positive integer type called <a>
//   The body of the function contains the following statements:
//      1. FILL IN THE CODE that if <a> is between numbers 0 and 9, inclusive,
//          it returns a + '0'
//      2. FILL IN THE CODE that if <a> is between numbers 10 and 36, inclusive,
//          it returns a - 10 + 'A'
//      3. FILL IN THE CODE that returns 0 if none of the above conditions are
//          satisfied

//  FILL IN THE CODE that defines the header to a function called <stream2unsigned>
//   that returns a positive integer. It takes the following three parameters:
//      an input file stream object called <ifst> passed by reference,
//      a positive integer called <fact> passed by reference,
//      and a positive integer called <base>
//   The body of the function contains the following statements:
//      1. FILL IN THE CODE that if <ifst> failed to open or <base> is greater
//          than 36, it returns 0
//      2. FILL IN A STATEMENT that sets <fact> to 1
//      3. FILL IN A STATEMENT that defines a character called <sc> and initializes
//          it to the return value of calling the function <head> with argument
//          <ifst>
//      4. FILL IN THE CODE that if <sc> is '\0' or '\n', it returns 0
//      5. FILL IN A STATEMENT that defines a positive integer called <sum> and
//          initializes it to the return value of calling the function
//          <stream2unsigned> with arguments <ifst>, <fact>, and <base>
//      6. FILL IN A STATEMENT that defines a positive integer called <dec>.
//          Initialize <dec> to the result of calling <char2digit> with argument <sc>
//          times <fact> plus <sum>
//          (that is, something like <dec> equal to char2digit * <fact> + <sum>)
//      7. FILL IN A STATEMENT that sets <fact> to itself times <base>
//      8. FILL IN A STATEMENT that returns <dec>

//  FILL IN THE CODE that defines the header to a function called <unsigned2string>
//   that returns a string. It takes two parameters:
//      a positive integer called <numb>,
//      and a positive integer called <base>
//   The body of the function contains the following statements:
//      1. FILL IN THE CODE that if <numb> is not zero, it returns the sum of the
//          return value of calling the function <unsigned2string> with arguments
//          <numb> / <base> and <base>, and the function <digit2char> with argument
//          <numb> % <base>
//      2. FILL IN THE CODE that that returns "0"
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答

  • klinymao _mervyn 23天前
    //
    //      Base Converter
    //
    //   Integer number base converter (binary to base 36)
    //
    // * NOTE: User defined identifiers are shown surrounded by < >.
    //   DO NOT TYPE THE < > as part of the names.
    // * Do not deviate from the algorithm. Follow the run example in the
    //   accompanying pdf description of the algorithm. Make sure your output
    //   looks like the example.
    //
    // PROGRAM STARTS BELOW THIS LINE ------------------------------------------
    
    // FILL IN THE CODE that includes all the necessary headers
    // (up to one extra without penalty) and namespaces
    #include <iostream>
    #include <string>
    #include <fstream>
    
    // FILL IN THE CODE with the prototypes of any function used by
    // main and defined after main.
    void overwriteFileAndReopen(std::ifstream& ifst, std::string fileName, std::string text);
    unsigned int stream2unsigned(std::ifstream& ifst, unsigned int& fact, unsigned int base);
    std::string unsigned2string(unsigned int numb, unsigned int base);
    
    int main()
    {
    //  FILL IN A STATEMENT that writes to the console the prompt
    //      "Enter base to change from: ". See pdf instructions for an example.
    	std::cout << "Enter base to change from:";
    //  FILL IN A STATEMENT to define an integer variable called <baseFrom>
    	int baseFrom;
    //  FILL IN A STATEMENT that reads <baseFrom> from the console
    	std::cin >> baseFrom;
    
    //  FILL IN A STATEMENT that writes to the console the prompt
    //      "Enter base to change to: ". See pdf instructions for an example.
    	std::cout << "Enter base to change to:";
    //  FILL IN A STATEMENT to define an integer variable called <baseTo>
    	int baseTo;
    //  FILL IN A STATEMENT that reads <baseTo> from the console
    	std::cin >> baseTo;
        
    //  FILL IN THE CODE that defines a string variable called <fileName> and
    //      initializes it to "converterText.txt"
    	std::string fileName = "converterText.txt";
    //  FILL IN A STATEMENT that defines a string variable called <number>
    	std::string number;
    //  FILL IN THE CODE for a loop that repeats as long as <number> is not "0"
    //   the loop contains the following statements (1-7):
    	while (number != "0")
    	{
    		//      1. FILL IN A STATEMENT that writes to the console the prompt
    		//          "Enter number (0 to exit): ". See pdf instructions for an example.
    		std::cout << "Enter number (0 to exit): ";
    		//      2. FILL IN A STATEMENT that reads <number> from the console
    		std::cin >> number;
    		//      3. FILL IN A STATEMENT that defines an input file stream object called
    		//          <input>
    		std::ifstream input;
    		//      4. FILL IN A STATEMENT that calls the function <overwriteFileAndReopen>
    		//          with arguments <input>, <fileName>, and <number>
    		overwriteFileAndReopen(input, fileName, number);
    		//      5. FILL IN A STATEMENT that defines an integer called <n>
    		unsigned int n;
    		//      6. FILL IN A STATEMENT that defines an integer called <decimal> and
    		//          initializes it with the return value resulting from calling the
    		//          function <stream2unsigned> with arguments <input>, <n>, and <baseFrom>
    		unsigned int decimal = stream2unsigned(input, n, baseFrom);
    		//      7. FILL IN A STATEMENT that calls the function <unsigned2string> with
    		//          arguments <decimal> and <baseTo> and writes the return value to the
    		//          console preceded by "--> ". See pdf instructions for an example.
    		std::cout << "-->" << unsigned2string(decimal, baseTo) << std::endl;
    	}
    }
    
    
    
    //  FILL IN THE CODE that defines the header to a void function called
    //   <overwriteFileAndReopen>. It takes the following three parameters:
    //      an input file stream object called <ifst> passed by reference,
    //      a string called <fileName>,
    //      and a string called <text>
    void overwriteFileAndReopen(std::ifstream& ifst, std::string fileName, std::string text)
    {
    	//   The body of the function contains the following statements:
    	//      1. FILL IN A STATEMENT to close <ifst>
    	ifst.close();
    	//      2. FILL IN THE CODE to define an output file stream object called
    	//          <oFile> and used it to open the file given in <fileName>
    	std::ofstream oFile(fileName);
    	//      3. FILL IN A STATEMENT to write the contents of <text> to the file
    	oFile << text;
    	//      4. FILL IN A STATEMENT that closes <oFile>
    	oFile.close();
    	//      5. FILL IN A STATEMENT to open the file indicated by <fileName>
    	//          using the <ifst> object
    	ifst.open(fileName);
    	//      7. FILL IN THE CODE to check if <ifst> failed to open. If it did,
    	//          it executes the following two statements:
    	if (!ifst.is_open())
    	{
    		//          A. FILL IN A STATEMENT that write to the console the message
    		//              "Error reading ", followed by <fileName>
    		std::cout << "Error reading " << fileName;
    		//          B. FILL IN A STATEMENT to end immediately the program execution
    		exit(-1);
    	}
    }
    //  FILL IN THE CODE that defines the header to a function called <head> that
    //   returns a character. It takes one parameter, an input file stream object
    //   called <ifst> passed by reference.
    char head(std::ifstream& ifst)
    {
    	//   The body of the function contains the following statements:
    	//      1. FILL IN THE CODE that if <ifst> failed to open, it returns '\0'
    	if (!ifst.is_open())
    	{
    		return '\0';
    	}
    	//      2. FILL IN A STATEMENT that defines a character called <sc>
    	char sc = '\0';
    	//      3. FILL IN A STATEMENT that reads a single character into <sc> from the file
    	ifst.read(&sc, 1);
    	//      4. FILL IN A STATEMENT that returns the value of <sc>
    	return sc;
    }
    
    //  FILL IN THE CODE that defines the header to a function called <char2digit> that
    //   returns a positive integer. It takes one parameter of character type named <a>
    unsigned int char2digit(char a)
    {
    	//   The body of the function contains the following statements:
    	//      1. FILL IN THE CODE that if <a> is between  '0' and '9', inclusive,
    	//          it returns a - '0'
    	if (a >= '0' && a<= '9')
    	{
    		return a - '0';
    	}
    	//      2. FILL IN THE CODE that if <a> is between  'a' and 'z', inclusive,
    	//          it returns a - 'a' + 10
    	if (a >= 'a' && a <= 'z')
    	{
    		return a - 'a' + 10;
    	}
    	//      3. FILL IN THE CODE that if <a> is between  'A' and 'Z', inclusive,
    	//          it returns a - 'A' + 10
    	if (a >= 'A' && a <= 'Z')
    	{
    		return a - 'A' + 10;
    	}
    	//      4. FILL IN THE CODE that returns 0 if none of the above conditions are
    	//          satisfied
    	return 0;
    }
    //  FILL IN THE CODE that defines the header to a function called <digit2char> that
    //   returns a character. It takes one parameter of positive integer type called <a>
    char digit2char(unsigned int a)
    {
    	//   The body of the function contains the following statements:
    	//      1. FILL IN THE CODE that if <a> is between numbers 0 and 9, inclusive,
    	//          it returns a + '0'
    	if (a >= 0 && a <= 9)
    	{
    		return a + '0';
    	}
    	//      2. FILL IN THE CODE that if <a> is between numbers 10 and 36, inclusive,
    	//          it returns a - 10 + 'A'
    	if (a >= 10 && a <= 36)
    	{
    		return a - 10 + 'A';
    	}
    	//      3. FILL IN THE CODE that returns 0 if none of the above conditions are
    	//          satisfied
    	return 0;
    }
    
    //  FILL IN THE CODE that defines the header to a function called <stream2unsigned>
    //   that returns a positive integer. It takes the following three parameters:
    //      an input file stream object called <ifst> passed by reference,
    //      a positive integer called <fact> passed by reference,
    //      and a positive integer called <base>
    unsigned int stream2unsigned(std::ifstream& ifst, unsigned int& fact, unsigned int base)
    {
    	//   The body of the function contains the following statements:
    	//      1. FILL IN THE CODE that if <ifst> failed to open or <base> is greater
    	//          than 36, it returns 0
    	if (!ifst.is_open() || base > 36)
    	{
    		return 0;
    	}
    	//      2. FILL IN A STATEMENT that sets <fact> to 1
    	fact = 1;
    	//      3. FILL IN A STATEMENT that defines a character called <sc> and initializes
    	//          it to the return value of calling the function <head> with argument
    	//          <ifst>
    	char sc = head(ifst);
    	//      4. FILL IN THE CODE that if <sc> is '\0' or '\n', it returns 0
    	if (sc == '\0' || sc == '\n')
    	{
    		return 0;
    	}
    	//      5. FILL IN A STATEMENT that defines a positive integer called <sum> and
    	//          initializes it to the return value of calling the function
    	//          <stream2unsigned> with arguments <ifst>, <fact>, and <base>
    	unsigned int sum = stream2unsigned(ifst, fact, base);
    	//      6. FILL IN A STATEMENT that defines a positive integer called <dec>.
    	//          Initialize <dec> to the result of calling <char2digit> with argument <sc>
    	//          times <fact> plus <sum>
    	//          (that is, something like <dec> equal to char2digit * <fact> + <sum>)
    	unsigned int dec = char2digit(sc) * fact + sum;
    	//      7. FILL IN A STATEMENT that sets <fact> to itself times <base>
    	fact *= base;
    	//      8. FILL IN A STATEMENT that returns <dec>
    	return dec;
    }
    //  FILL IN THE CODE that defines the header to a function called <unsigned2string>
    //   that returns a string. It takes two parameters:
    //      a positive integer called <numb>,
    //      and a positive integer called <base>
    std::string unsigned2string(unsigned int numb, unsigned int base)
    {
    	//   The body of the function contains the following statements:
    	//      1. FILL IN THE CODE that if <numb> is not zero, it returns the sum of the
    	//          return value of calling the function <unsigned2string> with arguments
    	//          <numb> / <base> and <base>, and the function <digit2char> with argument
    	//          <numb> % <base>
    	if (numb != 0)
    	{
    		return unsigned2string(numb / base, base) + digit2char(numb % base);
    	}
    	//      2. FILL IN THE CODE that that returns "0"
    	return "0";
    }
    点赞 6 评论 复制链接分享
  • technologist_12 技术专家团 - 九宝老师 23天前

    何意?

    点赞 评论 复制链接分享
  • it_xiangqiang it_xiangqiang 11天前

    C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html
    C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

    点赞 评论 复制链接分享
  • weixin_42640861 UniLi 21天前

    。。。C++的程序注释里写的很清楚,完全可以照着打

    程序就是2转36进制转换,自己写都可以,2进制权重转换挺容易的

    前面的@_mervyn 已经把程序按照注释写出来了

    点赞 评论 复制链接分享
  • weixin_45023492 weixin_45023492 22天前

    这不已经是傻瓜式编程了么,每一步都告诉你写什么了

    点赞 评论 复制链接分享

相关推荐