24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 797  |  回复: 6
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

WANGGUANG123

金虫 (正式写手)


[求助] microsoft visual 2013已停止正常工作 已有2人参与

#include<iostream>
#include<fstream>
#include<math.h>
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
#define N 10
using namespace std;
double Min(double array[], int n)
{

                double min = array[1];
                if (n > 2)
                {
                        for (int i = 1; i < n; ++i)
                        {
                                if (array < min)
                                        min = array;

                        }
                }
                return min;

}
void main()
{
        //输出文件流 输出到data.txt
        ofstream outfilex,outfiley,outfilez;
        outfilex.open("x.txt";
        outfiley.open("y.txt";
        outfilez.open("z.txt";
        srand((unsigned)time(NULL));
        double  x[N], y[N], z[N];//定义1000个粒子的三个坐标数组
        double r;//半径大小
        double step, R;//步长和容限
        cout << "输入半径r:" << "  ";
        cin >> r;
        cout << endl << "输入移动步长step:" << "  ";
        cin >> step;
        cout << endl << "输入容量大小R:" << "  ";
        cin >> R;
        cout << endl;
        for (int i = 0; i < N; i++)//将每个粒子的坐标先全定义成000
        {
                x = 0; y = 0; z = 0;
        }
        int  a = 2;
        while (1)
        {
                //int hh = 0;
                x[a] = (rand() % 20000 - 10000) / 10000.0*R;//定义下一个粒子的随机坐标
                y[a] = (rand() % 20000 - 10000) / 10000.0*R;
                z[a] = (rand() % 20000 - 10000) / 10000.0*R;

                while (1)
                {
                        double distance[N];
                        for (int c = 1; c < a; c++)
                        {
                                distance[c] = (x[a] - x[c])*(x[a] - x[c]) + (y[a] - y[c])*(y[a] - y[c]) +(z[a] - z[c])*(z[a] - z[c]);//求两粒子间的距离
                        }
                        if (Min(distance,a)<4.0* r*r)//如果和之前所有粒子的距离小于球心距,则此粒子生成成功,产生下一个粒子判定
                        {
                                cout << a << "  ";       
                                cout << Min(distance, a)<<"  "<<x[a]<<" "<<y[a]<<"  "<<z[a]<<endl;
                                a++;
                                break;
                                }
                       
                       
                        else//否则在该粒子位置处随机运动给定步长,进行下一次判定
                        {
                                double theta = (rand() % 1000) / 1000.0*6.28;
                                double fy = (rand() % 1000) / 1000.0*6.28;
                                x[a] = x[a] + step*sin(theta)*cos(fy);
                                y[a] = y[a] + step*sin(theta)*sin(fy);
                                z[a] = z[a] + step*cos(theta);
                                if (abs(x[a]) >= R || abs(y[a]) >= R || abs(z[a]) >= R)
                                        break;
                        }
                }

                if (a == N+1)//到1000个粒子,退出
                        break;

        }
        system("pause";
        cout << "x y z坐标分别为" << endl;
        for (int j = 1; j < N+1 ; j++)
        {

                cout << j<< "  " << x[j] << "  " << y[j] << "  " << z[j] << endl;
                //system("pause";
                //输出到文件
                outfilex << x[j] << endl;
                outfiley << y[j] << endl;
                outfilez<<z[j] << endl;
               
        }
        //关闭输出文件流
    outfilex.close();
        outfiley.close();
        outfilez.close();
    system("pause";
}









结果能运行出来,但是在关闭运行框的时候会报错
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lvweizhong

铜虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
C/C++中,所有对长度为N的数组全体元素的操作首元素编号为0,尾元素为N-1

发自小木虫Android客户端
3楼2015-11-15 18:32:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 7 个回答

zzy滴号

金虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
代码中有两处发生了内存泄露。
1、if (a == N+1)处将N+1改为N;
2、for (int j = 1; j < N+1 ; j++)处同样将N+1改为N。
天道酬勤
2楼2015-11-15 10:48:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lvweizhong

铜虫 (著名写手)

【答案】应助回帖

引用回帖:
2楼: Originally posted by zzy滴号 at 2015-11-15 10:48:04
代码中有两处发生了内存泄露。
1、if (a == N+1)处将N+1改为N;
2、for (int j = 1; j < N+1 ; j++)处同样将N+1改为N。

这种行为叫做操作越界,不算内存泄漏……

发自小木虫Android客户端
4楼2015-11-15 18:33:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zzy滴号

金虫 (小有名气)

引用回帖:
4楼: Originally posted by lvweizhong at 2015-11-15 18:33:39
这种行为叫做操作越界,不算内存泄漏……
...

嗯!是应该叫越界。

发自小木虫Android客户端
天道酬勤
5楼2015-11-15 21:57:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 交通运输考试264分求工科调剂 +3 jike777 2026-04-02 3/150 2026-04-02 17:09 by txp1986
[考研] 283分材料与化工求调剂 +12 罗KAKA 2026-04-02 12/600 2026-04-02 16:50 by guanxin1001
[考研] 310求调剂 +17 争取九点睡 2026-03-30 17/850 2026-04-02 16:40 by guanxin1001
[考研] 材料求调剂 一志愿哈工大总分298分,前三科223分 +12 dongfang59 2026-03-27 12/600 2026-04-02 12:26 by ms629
[考研] 一志愿厦门大学材料工程专硕354找调剂!!! +7 贝呗钡钡 2026-03-30 7/350 2026-04-02 12:19 by 1753564080
[考研] 求调剂,一志愿南京师范大学计算机专硕,初试373,六级通过, +3 计算机追梦人 2026-04-01 3/150 2026-04-02 07:57 by fxue1114
[考研] 291求调剂 +20 Y-cap 2026-03-29 25/1250 2026-04-01 23:49 by 欣喜777
[考研] 285求调剂 +11 AZMK 2026-04-01 11/550 2026-04-01 22:40 by peike
[考研] 08工科275求调剂,可跨考。 +5 AaAa7420 2026-03-31 5/250 2026-04-01 15:21 by 159357hjz
[考研] 一志愿 南京航空航天大学 ,080500材料科学与工程学硕 +7 @taotao 2026-03-30 7/350 2026-04-01 14:30 by chenqifeng666
[考研] 求调剂 生物学 377分 +6 zzll03 2026-03-31 6/300 2026-03-31 17:33 by 唐沐儿
[考研] 329求调剂,一志愿西北工业大学,材料工程(085601) +6 小小机灵虫 2026-03-29 12/600 2026-03-31 16:58 by 记事本2026
[考研] 313求调剂 +6 卖个关子吧 2026-03-31 6/300 2026-03-31 10:58 by Jaylen.
[考研] 269求调剂 +4 我想读研11 2026-03-31 4/200 2026-03-31 10:04 by cal0306
[考研] 085600材料与化工调剂 +16 kikiki7 2026-03-30 16/800 2026-03-31 10:03 by 氯化亚硝酰
[考研] 293分求调剂,外语为俄语 +5 加一一九 2026-03-31 5/250 2026-03-31 09:39 by zhshch
[考研] 抱歉 +4 田洪有 2026-03-30 4/200 2026-03-30 21:26 by mumin1990
[考研] 材料专硕 085600求调剂 +7 BBQ233 2026-03-30 7/350 2026-03-30 17:44 by oooqiao
[考研] 312,生物学求调剂 +3 小译同学abc 2026-03-28 3/150 2026-03-28 15:32 by 落睿可思
[考研] 调剂 +3 李嘉图·S·路 2026-03-27 3/150 2026-03-27 11:19 by wangjy2002
信息提示
请填处理意见