| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 519 人关注过本帖
标题:帮忙看下逻辑错误
只看楼主 加入收藏
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:606
专家分:2499
注 册:2009-4-8
结帖率:95.65%
收藏
已结贴  问题点数:20 回复次数:2 
帮忙看下逻辑错误
这个程序里的思想是:
结果 += 进位;
进位 = 结果 / 进制(我写的是100进制)
#include<vector>
#include<iostream>
using namespace std;
int main()
{
    int b = 0;//进位
    vector<unsigned int> arr;//用来存放结果
    arr.push_back(1);
    cout << "请入所要求阶乘的数" << endl;
    int x;
    cin >> x;
    bool count = false;//用来判断最高位进行乘法后是否有进位
    for (int i = 1, j = 0; i <= x; ++i)
    {
        for (int temp = 0; temp <= j; ++temp)
        {
            arr [temp] *= i;
            arr [temp] += b;
            if (arr[temp] > 99)
            {
                b = arr[temp] / 100;
                arr [temp] %= 100;
                if(temp == j) count = true;
            }
        }
        if(count)//最后一次是否有进位
        {
            while (b)
            {
                arr.push_back(b % 100);
                b /= 100;
                ++j;
            }
            count = false;
        }
    }
    //输出结果
    cout << arr [j--];
    for (; j >= 0; --j)
    {
        if(arr[j] > 9)//保证每部分都以两位数输出
            cout << arr[j];
        else
            cout << 0 << arr[j];
    }
    cout << endl;
    return 0;
}

我想里面有个逻辑错误,因为和我以前写的一个求出来的结果不一样。找不出来是哪里错了…高手给帮忙看看。
搜索更多相关主题的帖子: 逻辑 
2009-11-19 22:47
flyingcloude
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:6
帖 子:598
专家分:1512
注 册:2008-1-13
收藏
得分:20 
调试也是学习中必不可少的一部分,你可以试着去单步跟踪,看看变量变化是否都正确

你能学会你想学会的任何东西,这不是你能不能学会的问题,而是你想不想学的问题
2009-11-19 23:44
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:606
专家分:2499
注 册:2009-4-8
收藏
得分:0 
arr [temp] *= i;
arr [temp] += b;
补上一句
b = 0;

迭代的是人,递归的是神。
2009-11-22 19:45
快速回复:帮忙看下逻辑错误
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026764 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved