24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 800  |  回复: 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的回帖

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的回帖
查看全部 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

铜虫 (著名写手)

【答案】应助回帖

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

发自小木虫Android客户端
3楼2015-11-15 18:32:41
已阅   回复此楼   关注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的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿北京科技大学材料工程085601,求调剂 +11 cdyw 2026-04-02 11/550 2026-04-02 23:06 by 马儿快快地跑
[考研] 295求调剂 +6 愿旅途永远坦然 2026-04-02 6/300 2026-04-02 21:57 by macy2011
[考研] 085601一志愿北理325分求调剂 +4 找调剂,, 2026-04-02 4/200 2026-04-02 21:29 by dongzh2009
[考研] 085600,材料与化工321分求调剂 +11 大馋小子 2026-03-28 11/550 2026-04-02 15:59 by yunlongyang
[考研] 一志愿北京科技大学材料学硕328分求调剂 +6 1段时间 2026-03-31 7/350 2026-04-02 13:57 by 3041
[考研] 材料求调剂 一志愿哈工大总分298分,前三科223分 +12 dongfang59 2026-03-27 12/600 2026-04-02 12:26 by ms629
[考研] 279求调剂 +6 学而思兮知 2026-04-01 6/300 2026-04-02 09:16 by vgtyfty
[考研] 070300化学279求调剂 +15 哈哈哈^_^ 2026-03-31 17/850 2026-04-01 21:37 by 给你你注意休息
[考研] 求调剂 +4 图鉴212 2026-03-30 5/250 2026-04-01 15:32 by 图鉴212
[考研] 求调剂 +5 零八# 2026-03-27 5/250 2026-04-01 14:40 by yulian1987
[硕博家园] 考研调剂 +5 骆驼男人 2026-04-01 5/250 2026-04-01 14:28 by syjjj0321
[考研] 311求调剂一志愿合肥工业大学 +14 秋二十二 2026-03-30 14/700 2026-04-01 11:45 by chemdavid
[考研] 08工科,295,接受跨专业调剂 +6 lmnlzy 2026-03-31 6/300 2026-04-01 11:02 by 逆水乘风
[考研] 322求调剂 +8 三水sss 2026-04-01 8/400 2026-04-01 10:19 by 唐沐儿
[考研] 0855机械初试280求调剂 +3 kazenotori 2026-03-31 3/150 2026-04-01 10:08 by JourneyLucky
[考研] 0856求调剂 +9 楒桉 2026-03-28 9/450 2026-03-31 19:06 by 暮泽12
[考研] 求收留 +8 1943443204 2026-03-28 8/400 2026-03-31 15:00 by -迷了路啊路
[考研] 266求调剂 +3 哇呼哼呼哼 2026-03-29 3/150 2026-03-31 10:06 by cal0306
[考研] 332求92调剂 +8 蕉蕉123 2026-03-28 8/400 2026-03-29 10:46 by 周梓丹
[考研] 本科新能源科学与工程,一志愿华理能动285求调剂 +7 AZMK 2026-03-28 11/550 2026-03-28 21:01 by xxxsssccc
信息提示
请填处理意见