0

请记住,我对 C++ 几乎是全新的,这只是我必须为我的课程做的一个程序。我想我明白我会怎么做。我只是不确定将什么作为我的 while 循环的控制条件。我应该能够转换给定的任何八进制数,那么如何知道我何时处于第一个数字并且应该停止?我正在使用增加的 %10 单位(又名 %10、%100、%1000)将数字从右向左移动,但我怎么知道什么时候应该停止这样做?就像数字 112 一样,我需要执行 %10、%100 和 %100,但不能超过。

#include <iostream>
#include <cmath>
using namespace std;

int main ()
{
  cout <<"Please enter the octal number to be converted: " <<
  int octal;
  cin >> octal;

   int remainder = 0;
   int modular = 10;

  int conversionToDecimal = 0; 
  while(modular < ***********)
  remainder = octal%modular;
  if (remainder < 10)
  {
   conversionToDecimal = conversionToDecimal + (remainder *(int)pow(8.0,count));
    count = 0;
    modular = modular*10;
  }
  else
  {
    remainder = remainder/10;
    count++;
  }

显然程序并不完整,这只是我发现问题时得到的代码。我把*放在我需要代码帮助的地方。非常感谢!简而言之,我应该如何控制我的循环,这样我就不会离开八进制数的前面?

4

1 回答 1

1

您可以使用与将数字转换为十进制数字字符串相同的方法:每个索引都有一个数字的数组。对于每次迭代,您取 10 的模,并存储该数字,然后除以 10。当数字为零时(在循环结束时),您就完成了。

然后一次从数组中取出一个数字,并将您的“总数”乘以 8,添加当前数字。当你没有更多的数字时,你就完成了。

我将留给你编写实际代码来执行此操作 - 毕竟,你是学习编程的人 - 我已经这样做了 30 多年。

于 2013-02-13T01:32:26.807 回答