| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 707 人关注过本帖
标题:为什么程序执行一半就不能向后执行了?求救...
只看楼主 加入收藏
细雨斜飞
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2008-5-4
收藏
 问题点数:0 回复次数:7 
为什么程序执行一半就不能向后执行了?求救...
#include <iostream>
#include <cmath>
#define pi 3.141592653
using namespace std;
void main()
{cout<<"请输入已知点A,B,C三点的坐标:"<<endl;
cout<<"(提示:输入的顺序是按照XA,XB...排的 ,请理解后输入)"<<endl;
int x[3],y[3],a,b,c,d;
for(d=0;d<=2;d++)
{cin>>x[d];}
for(d=0;d<=2;d++)
{cin>>y[d];}
cout<<endl;
double i_,j_,k_;
i_=x[0]*x[0]-2*x[0]*x[1]+x[1]*x[1]+y[0]*y[0]-2*y[0]*y[1]+y[1]*y[1];
j_=x[0]*x[0]-2*x[0]*x[2]+x[2]*x[2]+y[0]*y[0]-2*y[0]*y[2]+y[2]*y[2];0
k_=x[2]*x[2]-2*x[2]*x[1]+x[1]*x[1]+y[2]*y[2]-2*y[2]*y[1]+y[1]*y[1];
a=sqrt(i_);
b=sqrt(j_);
c=sqrt(k_);
double A,B,C;
double work_1(double m,double n,double p);    //函数申明1
A=work_1(a,b,c);           //调用函数算A角  
B=work_1(b,a,c);           //调用函数算B角
C=work_1(c,a,b);           //调用函数算C角

if(A+B==pi&&B+C==pi&&A+C==pi)                          //危险圆   
{cout<<"危险圆,错误结果!";}
else
cout<<"输入观测得水平角a_,b_,c_:"<<endl;
double a_,b_,c_;            
double work_2(double x,double y,double z);           //函数申明2   -----执行到这里, 后面的都没有执行!
double a_1,a_2,a_3,b_1,b_2,b_3,c_1,c_2,c_3;
cin>>a_1>>a_2>>a_3;
a_=work_2(a_1,a_2,a_3);   
cin>>b_1>>b_2>>b_3;
b_=work_2(b_1,b_2,b_3);
cin>>c_1>>c_2>>c_3;
c_=work_2(c_1,c_2,c_3);

double i,j,k;
double P_1,P_2,P_3;
i=1/tan(A)-1/tan(a_);j=1/tan(B)-1/tan(b_);k=1/tan(C)-1/tan(c_);
P_1=1/i;P_2=1/j;P_3=1/k;

double h,X,Y;
h=P_1+P_2+P_3;
X=P_1*x[0]/h+P_2*x[1]/h+P_3*x[2]/h;
Y=P_1*y[0]/h+P_2*y[1]/h+P_3*y[2]/h;

cout<<"点P的坐标是:("<<X<<","<<Y<<")"<<endl;
}

double work_1(double x,double y,double z)
{double w;
w=acos(y*y/2/y/z+z*z/2/y/z-x*x/2/y/z);
return w;
}

double work_2(double x,double y,double z)
{double e;
e=pi*(x+y/60+z/60/60)/180;
return e;
}
问题我标记在程序中了  请高手帮忙啊!!!
搜索更多相关主题的帖子: 程序 求救 
2008-05-04 22:10
细雨斜飞
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2008-5-4
收藏
得分:0 
怎么没人理啊
2008-05-04 22:46
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
大家对这样纯c的程序不是很感兴趣...本来c++的人就不是很多

学习需要安静。。海盗要重新来过。。
2008-05-04 22:52
细雨斜飞
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2008-5-4
收藏
得分:0 
但是~这个是C++啊  就只有#define 用了C的。。。
2008-05-04 23:22
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
c++最精华就是面向对象哦...没有类的概念,只能说是面向过程的.呵呵

学习需要安静。。海盗要重新来过。。
2008-05-05 09:44
VanHorn
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2008-1-8
收藏
得分:0 
这个程序有点小问题,语法错误:
#include "stdafx.h"


#include <iostream>
#include <cmath>
#define pi 3.141592653
using namespace std;
void main()
{
    cout<<"请输入已知点A,B,C三点的坐标:"<<endl;
    cout<<"(提示:输入的顺序是按照XA,XB...排的 ,请理解后输入)"<<endl;
    int x[3],y[3],a,b,c,d;
    for(d=0;d<=2;d++)
    {cin>>x[d];}
    for(d=0;d<=2;d++)
    {cin>>y[d];}
    cout<<endl;
    double i_,j_,k_;
    i_=x[0]*x[0]-2*x[0]*x[1]+x[1]*x[1]+y[0]*y[0]-2*y[0]*y[1]+y[1]*y[1];
    j_=x[0]*x[0]-2*x[0]*x[2]+x[2]*x[2]+y[0]*y[0]-2*y[0]*y[2]+y[2]*y[2];//源代码上这里多了个零
    k_=x[2]*x[2]-2*x[2]*x[1]+x[1]*x[1]+y[2]*y[2]-2*y[2]*y[1]+y[1]*y[1];
    a=sqrt(i_);
    b=sqrt(j_);
    c=sqrt(k_);
    double A,B,C;
    double work_1(double m,double n,double p);    //函数申明1
    A=work_1(a,b,c);           //调用函数算A角  
    B=work_1(b,a,c);           //调用函数算B角
    C=work_1(c,a,b);           //调用函数算C角
    
    if(A+B==pi&&B+C==pi&&A+C==pi)                          //危险圆   
    {cout<<"危险圆,错误结果!";}
    else
        cout<<"输入观测得水平角a_,b_,c_:"<<endl;
    double a_,b_,c_;            
    double work_2(double x,double y,double z);           //函数申明2   -----执行到这里, 后面的都没有执行!
    double a_1,a_2,a_3,b_1,b_2,b_3,c_1,c_2,c_3;
    cin>>a_1>>a_2>>a_3;
    a_=work_2(a_1,a_2,a_3);   
    cin>>b_1>>b_2>>b_3;
    b_=work_2(b_1,b_2,b_3);
    cin>>c_1>>c_2>>c_3;
    c_=work_2(c_1,c_2,c_3);
    
    double i,j,k;
    double P_1,P_2,P_3;
    i=1/tan(A)-1/tan(a_);j=1/tan(B)-1/tan(b_);k=1/tan(C)-1/tan(c_);
    P_1=1/i;P_2=1/j;P_3=1/k;
    
    double h,X,Y;
    h=P_1+P_2+P_3;
    X=P_1*x[0]/h+P_2*x[1]/h+P_3*x[2]/h;
    Y=P_1*y[0]/h+P_2*y[1]/h+P_3*y[2]/h;
    
    cout<<"点P的坐标是:("<<X<<","<<Y<<")"<<endl;
}

double work_1(double x,double y,double z)
{
    double w;
    w=acos(y*y/2/y/z+z*z/2/y/z-x*x/2/y/z);
    return w;
}

double work_2(double x,double y,double z)
{
    double e;
    e=pi*(x+y/60+z/60/60)/180;
    return e;
}


其他没什么问题。
楼主应该看看程序再说,你没有输入完毕,所以程序不能执行,其实不是在你帖子里那行停下的,是在cin语句停下的。





我测试的结果:
请输入已知点A,B,C三点的坐标:
(提示:输入的顺序是按照XA,XB...排的 ,请理解后输入)
12 34 56
34 56 78

输入观测得水平角a_,b_,c_:
13 23 45    //这里要输入三次三组。否则程序一直在这里等待。
45 67 88
45 67 89
点P的坐标是:(34,56)
Press any key to continue

[[it] 本帖最后由 VanHorn 于 2008-5-5 09:55 编辑 [/it]]

我用VC++6我怕谁?
2008-05-05 09:52
细雨斜飞
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2008-5-4
收藏
得分:0 
谢谢VanHorn  问题已经解决  。。。
2008-05-05 13:44
细雨斜飞
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2008-5-4
收藏
得分:0 
#include <iostream>
#include <cmath>
#define pi 3.141592653
using namespace std;
void main()
{
    cout<<"请输入已知点A,B,C三点的坐标:"<<endl;
    cout<<"(提示:输入的顺序是按照XA,XB...排的 ,请理解后输入)"<<endl;
    int x[3],y[3],a,b,c,d;  // 这里的int 不能改为double  什么原因啊?
    for(d=0;d<=2;d++)
    {cin>>x[d];}
    for(d=0;d<=2;d++)
    {cin>>y[d];}
    cout<<endl;
    double i_,j_,k_;
    i_=x[0]*x[0]-2*x[0]*x[1]+x[1]*x[1]+y[0]*y[0]-2*y[0]*y[1]+y[1]*y[1];
    j_=x[0]*x[0]-2*x[0]*x[2]+x[2]*x[2]+y[0]*y[0]-2*y[0]*y[2]+y[2]*y[2];//源代码上这里多了个零
    k_=x[2]*x[2]-2*x[2]*x[1]+x[1]*x[1]+y[2]*y[2]-2*y[2]*y[1]+y[1]*y[1];
    a=sqrt(i_);
    b=sqrt(j_);
    c=sqrt(k_);
    double A,B,C;
    double work_1(double m,double n,double p);    //函数申明1
    A=work_1(a,b,c);           //调用函数算A角  
    B=work_1(b,a,c);           //调用函数算B角
    C=work_1(c,a,b);           //调用函数算C角
   
    if(A+B==pi&&B+C==pi&&A+C==pi)                          //危险圆   
    {cout<<"危险圆,错误结果!";}
    else
        cout<<"输入观测得水平角a_,b_,c_:"<<endl;
    double a_,b_,c_;            
    double work_2(double x,double y,double z);           //函数申明2   -----执行到这里, 后面的都没有执行!
    double a_1,a_2,a_3,b_1,b_2,b_3,c_1,c_2,c_3;
    cin>>a_1>>a_2>>a_3;
    a_=work_2(a_1,a_2,a_3);   
    cin>>b_1>>b_2>>b_3;
    b_=work_2(b_1,b_2,b_3);
    cin>>c_1>>c_2>>c_3;
    c_=work_2(c_1,c_2,c_3);
   
    double i,j,k;
    double P_1,P_2,P_3;
    i=1/tan(A)-1/tan(a_);j=1/tan(B)-1/tan(b_);k=1/tan(C)-1/tan(c_);
    P_1=1/i;P_2=1/j;P_3=1/k;
   
    double h,X,Y;
    h=P_1+P_2+P_3;
    X=P_1*x[0]/h+P_2*x[1]/h+P_3*x[2]/h;
    Y=P_1*y[0]/h+P_2*y[1]/h+P_3*y[2]/h;
   
    cout<<"点P的坐标是:("<<X<<","<<Y<<")"<<endl;
}

double work_1(double x,double y,double z)
{
    double w;
    w=acos(y*y/2/y/z+z*z/2/y/z-x*x/2/y/z);
    return w;
}

double work_2(double x,double y,double z)
{
    double e;
    e=pi*(x+y/60+z/60/60)/180;
    return e;
}
 又有一问题。。。已经在程序中间标明 请大家帮忙了 谢谢
2008-05-05 13:56
快速回复:为什么程序执行一半就不能向后执行了?求救...
数据加载中...
 
   



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

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