找回密码
 欢迎注册
查看: 7589|回复: 2

[求助] 程序不运行,为什么

[复制链接]
发表于 2009-4-18 05:49:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
我自己编写了一个MFC应用程序 ,界面很简单,有4个edit,edit1输入目标数,比如39,edit2输入扫描起点,比如5。点击按钮,寻找比5大的39的素因子。如果找到了,edit3与edit4给予提示。其中edit3显示0,edit4显示“结束了”;实际上,edit3是edit1与edit2取模得到的。edit4是简单的判断与显示,对程序没什么本质作用。程序首先有一些头文件,
#include <iostream.h>
#include <string.h>//&#191;éò&#212;ê1ó&#195;stringààDí

#include "../Include/HugeCalc.h"        // 1&#171;12&#189;ó&#191;ú
#include "../Include/HugeInt.h"        // 10&#189;&#248;&#214;&#198;&#207;μí3
#include "../Include/HugeIntX.h"        // 16&#189;&#248;&#214;&#198;&#207;μí3

#pragma message( "automatic link to ../Lib/HugeCalc.lib" )
#pragma comment( lib, "../Lib/HugeCalc.lib" )

#if 1
        #define _Test_HI
        #define integer CHugeInt
#else
        #define _Test_HX
        #define integer CHugeIntX
#endif
而后对按钮进行遍写代码如下:
void my2::OnButton1()
{
        // TODO: Add your control notification handler code here
//读取edit2的数,找到下一个素数,在edit2中显示
CString str;
GetDlgItemText(IDC_EDIT2,str);
        CHugeInt hugePrime((UINT32) 1 );
        hugePrime=str;
        hugePrime.NextPrime(hugePrime);
GetDlgItem(IDC_EDIT2)->SetWindowText((LPCTSTR)hugePrime);

        // 读取edit1,edit2的数,求出模,在edit3中显示
        CString str1,str2;
    CHugeInt testnumber1((UINT32) 1 );
    CHugeInt testnumber2((UINT32) 1 );
        CHugeInt testnumber3((UINT32) 1 );
    GetDlgItemText(IDC_EDIT1,str1);
        testnumber1=str1;
    GetDlgItemText(IDC_EDIT2,str2);
        testnumber1=str1;
    testnumber2=str2;
        testnumber3=testnumber1%testnumber2;
    GetDlgItem(IDC_EDIT3)->SetWindowText((LPCTSTR)testnumber3);       
CString strtest;
GetDlgItemText(IDC_EDIT3,strtest);
        // 判断edit3是否为0,是就结束,不是就重复
if (strtest=="0") {GetDlgItem(IDC_EDIT4)->SetWindowText("结束了");} else {OnButton1();};

       
}

以上程序编译运行成功!
但是计算比较小的数据还可以,如果计算大数就自动关闭了,不知道怎样解决,谢谢!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-4-18 18:41:05 | 显示全部楼层
我没有运行你的程序,
但仅从阅读你的代码就发现了症结所在,
应该是的算法问题,因为你在最后采用了递归,
当递归层数过深时,耗尽了程序的栈空间而自动关闭。

所以,解决方法是改进你的算法,
尽可能消除递归。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-4-19 03:49:22 | 显示全部楼层
谢谢,学习中,
求改进算法
不反复查询与测试,如何解决问题?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-11-23 16:05 , Processed in 0.024819 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表