Loops 而循环工作不正常
在下面的程序中,当程序进入while循环时,它停止工作。当我尝试在没有循环的情况下分配值时,效果很好。 有人能告诉我问题出在哪里吗? 我正在使用VisualStudio2010Loops 而循环工作不正常,loops,while-loop,Loops,While Loop,在下面的程序中,当程序进入while循环时,它停止工作。当我尝试在没有循环的情况下分配值时,效果很好。 有人能告诉我问题出在哪里吗? 我正在使用VisualStudio2010 #include <stdio.h> #include<iostream.h> #include <conio.h> using namespace std; int random(int min,int max); struct pts { int x; int
#include <stdio.h>
#include<iostream.h>
#include <conio.h>
using namespace std;
int random(int min,int max);
struct pts
{
int x;
int y;
};
int main()
{
struct pts *p;
int w = 600,h=400;
int nmax,kmax,k=0,n=0;
while(k<5)
{
p[0].x = random(0,h-1);
p[1].y = random(0,w-1);
cout << p[0].x << " " << p[1].y << "\n";
k++;
}
getch();
return 0;
}
int random(int min,int max)
{
int n=0;
n=(rand()%(max-min+1))+min;
return n;
}
#包括
#包括
#包括
使用名称空间std;
int随机(int最小值,int最大值);
结构pts
{
int x;
int-y;
};
int main()
{
结构pts*p;
int w=600,h=400;
int nmax,kmax,k=0,n=0;
while(kwhilewhile
循环本身工作正常。只是您正在破坏内存。您的问题在于:
struct pts *p;
p[0].x = whatever;
无需将p
设置为有效内存块。换句话说,您使用的是统一化指针,因此行为未定义,因此所有下注均无效
由于您(当前)似乎只在使用p[0]
和p[1]
,您可能可以更改:
struct pts *p;
致:
当然,如果您想要可变结构,可以使用:
struct pts *p = new pts[500];
当然,用你想要的尺寸替换500
您可能还想考虑升级到一个更新近的编译器,<代码> IoStudio.H和 CONIO.H./COD>是过时的。
下面是一个完整的程序,演示如何执行此操作,至少在您决定在循环中更“理智”地存储内容之前:
#include <iostream>
#include <stdlib.h>
struct pts
{
int x;
int y;
};
int random(int min,int max)
{
int n=0;
n=(rand()%(max-min+1))+min;
return n;
}
int main()
{
struct pts p[2];
int w = 600,h=400;
int k=0;
while(k<5)
{
p[0].x = random(0,h-1);
p[1].y = random(0,w-1);
std::cout << p[0].x << " " << p[1].y << "\n";
k++;
}
return 0;
}
(事实上,我可能总是给出那个序列,因为你不会调用srand
设置种子-你的号码可能和我的号码不同,但每次都会给你相同的序列)
如果希望从更好的基线开始,请参阅:
#include <iostream>
#include <stdlib.h>
#include <time.h>
struct pts { int x; int y; };
int random (int min, int max) {
return (rand() % (max - min + 1)) + min;
}
int main (void) {
pts *p = new pts[5];
int w = 600, h = 400;
int k = 0;
srand (time (0));
while (k < 5) {
p[k].x = random (0, h - 1);
p[k].y = random (0, w - 1);
std::cout << p[k].x << " " << p[k].y << "\n";
k++;
}
delete[] p;
return 0;
}
#包括
#包括
#包括
结构pts{intx;inty;};
int随机(int最小值,int最大值){
返回值(rand()%(max-min+1))+min;
}
内部主(空){
pts*p=新pts[5];
int w=600,h=400;
int k=0;
srand(时间(0));
而(k<5){
p[k].x=random(0,h-1);
p[k].y=random(0,w-1);
std::cout如果我想在p中有一些'k'值,我应该全部初始化吗?我只是按照你说的做了。它给出了第一个值,但没有给出其余的4(5的循环)。
183 286
377 115
193 535
186 492
249 421
#include <iostream>
#include <stdlib.h>
#include <time.h>
struct pts { int x; int y; };
int random (int min, int max) {
return (rand() % (max - min + 1)) + min;
}
int main (void) {
pts *p = new pts[5];
int w = 600, h = 400;
int k = 0;
srand (time (0));
while (k < 5) {
p[k].x = random (0, h - 1);
p[k].y = random (0, w - 1);
std::cout << p[k].x << " " << p[k].y << "\n";
k++;
}
delete[] p;
return 0;
}