PDA

View Full Version : سوال: یه مشکل توی برنامه ای به زبان C دارم!



Narges-s
جمعه 29 خرداد 1388, 02:16 صبح
سلام. من یه برنامه به زبان C نوشتم که نمیدونم مشکلش کجاست . کلا کامپایلر یه ارور عجیب میده! :لبخند:


برنامه ای بنویسید که عناصر آرایه ی 4*4 را توسط یک تابع از ورودی خوانده ، سپس مجموع عناصر هر سطر را توسط تابعی محاسبه کرده و در خروجی چاپ کند.


اینم سورس برنامه ای که من نوشتم :



#include <stdio.h>
#include <conio.h>
void Minput(int[4][4]);
int Msum(int f[4][4], int);
int main()
{
clrscr();
int m[4][4],i,n;
Minput(m);
printf("Shomareye satr ra vared konid: ");
scanf("%d",&i);
n=Msum(m,i);
printf("Majmooe satre %d = %d ",i,n);
getch();
return 0;
}
void Minput(int f[4][4])
{
int i,j;
for(i=1;i<=4;i++)
for(j=1;j<=4;j++)
{
printf("Adade Khaneye [%d][%d] Ra Vared Kon: ",i,j);
scanf("%d",&f[i][j]);
}
}
int Msum(int f[4][4], int i)
{
int sum,a;
sum=0;
for(a=1;a>=4;a++)
sum+=(f[i][a]);
return sum;
}




پیشاپیش ممنون از راهنماییتون :خجالت:

erfan_goohooli
جمعه 29 خرداد 1388, 04:11 صبح
با سلام خدمت شما برنامه نویس عزیز.
این برنامه یه مشکل اساسی داره و یه اشکال دستوریه کوچولو.
اشکال دستوریه کوچولوش توی خط سوم تابع Msum هست که باید به جای a>=4 از a<4 استفاده کنی اما این دلیل خطای آدرس سیستم نیست.
این رو برای همیشه به خاطر بسپار: توی خانواده زبان c آرایه ها از عدد صفر شروع می شن تا یکی کمتر از تعداد عناصر آرایه. دلیل خطای سیستم همینه که شما تمام حلقه های for رو به جای صفر از یک شروع کردی و به جای اینکه i<4 بنویسی نوشتی i<=4. این هم جواب درستش

#include<stdio.h>
#include<conio.h>
void Minput(int[4][4]);
int Msum(int f[4][4], int);
int main()
{
clrscr();
int m[4][4],i,n;
Minput(m);
printf("Shomareye satr ra vared konid: ");
scanf("%d",&i);
n=Msum(m,i);
printf("Majmooe satre %d = %d ",i,n);
getch();
return 0;
}
void Minput(int f[4][4])
{
int i,j;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{
printf("Adade Khaneye [%d][%d] Ra Vared Kon: ",i,j);
scanf("%d",&f[i][j]);
}
}
int Msum(int f[4][4], int i)
{
int sum=0,a;
for(a=0;a<4;a++)
sum+=(f[i][a]);
return sum;
}