PDA

View Full Version : سوال: خطا های عجیب



salahshor
دوشنبه 03 اسفند 1388, 16:48 عصر
سلام دوستان
من سه تا آرایه رو مقدار دهی کردم و حالا می خوام اون ها رو چاپ کنم
که ارور invalid indirection میده.
وقتی ghesmate 1 و ghesmate 2 (قسمت توضیحات) رو میذارم دیگه ارور نمیده ولی آرایه ی سوم دیگه چاپ نمیشه
ممنون میشم توضیح بدید

void main()
{
int x,y,i,j,w,z;
// int g,h,v,b; //ghesmat 1
y=5;
for(i=0;i<3;i++)
{
x=10;
for(j=0;j<3;j++)
{
gotoxy(x,y);
cout<<a[i][j];
x+=2;
}
y+=2;
}
z=25;
for(i=0;i<3;i++)
{
w=10;
for(j=0;j<3;j++)
{
gotoxy(w,z);
cout<<b[i][j];
w+=2;
}
z+=2;
}
/* b=15; //ghesmate 2...
for(g=0;g<3;g++)
{
v=15;
for(h=0;h<3;h++)
{
gotoxy(v,b);
cout<<c[g][h];
v+=2;
}
b+=2;
}*/ //...ghesmate 2
}

simul8or
دوشنبه 03 اسفند 1388, 17:22 عصر
برای نوشن کد از تگ کد استفاده کنید تا دچار بهم ریختگی نشود.
اگر ممکن است سوالتان را با جزییات بیشتر و با استفاده از تگ کد مجددا در همین تاپیک مطرح کنید.

clover
دوشنبه 03 اسفند 1388, 20:17 عصر
به همین علت هست که گفته می شود برای نام شناسه ها از اسامی با معنی استفاده کنید.
شما یک آرایه سراسری با نام b تعریف کرده اید، بعد در تابع main هم یک متغیر با همین نام تعریف کرده اید. با این کار، نه تنها پیغام خطایی به شما داده نمی شود بلکه آرایه b که به صورت سراسری تعریف شده است در تابع main مخفی می شود. در واقع در خط :

cout<<b[i][j];
شما دارید متغیر b تعریف شده در تابع main را با اندیس به کار می برید که غیر مجاز است.
کافیست برای آرایه و متغیر از نام های مجزا استفاده کنید.

#include <conio.h>
#include <iostream.h>

int a[3][3] = {2,5,7,3,4,5,6,7,8};
int b[3][3] = {4,7,5,9,3,4,6,8,9};
int c[3][3] = {4,5,8,3,4,9,8,7,4};

void main()
{
int x,y,i,j,w,z;
int g,h,v,d; //ghesmat 1
y=5;
for(i=0;i<3;i++)
{
x=10;
for(j=0;j<3;j++)
{
gotoxy(x,y);
cout<<a[i][j];
x+=2;
}
y+=2;
}
z=25;

for(i=0;i<3;i++)
{
w=10;
for(j=0;j<3;j++)
{
gotoxy(w,z);
cout<<b[i][j];
w+=2;
}
z+=2;
}
d=15; //ghesmate 2...
for(g=0;g<3;g++)
{
v=15;
for(h=0;h<3;h++)
{
gotoxy(v,d);
cout<<c[g][h];
v+=2;
}
d+=2;
}
getch();
}
موفق باشید

salahshor
سه شنبه 04 اسفند 1388, 09:26 صبح
سلام
خیلی خیلی ممنونم مشکلم حل شد
ولی یک مشکل دیگه داشتم
می خوام یک آرایه رو به صورت تصادفی مقدار دهی کنم طوری که اعداد در بازه [s,s*s] با شند . و اینطور نوشتم
درست کار می کنه اما مقدار صفر رو هم توی ارایه میریزه
ممنون می شم کمک کنید



randomize();
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
l=random(s*s+1);
if(l<s || l==0)
continue;
a[i][j]=l;
}
}

#target
سه شنبه 04 اسفند 1388, 10:54 صبح
کد شما با توجه به دستور if ممکنه تمام خانه ها رو آدرس نده
برای اینکار




if ((l < s) || (i == 0))
{
j--;
continue;
}