PDA

View Full Version : مشکل با توابع در c



mojdeh,k
چهارشنبه 08 اسفند 1386, 10:41 صبح
من در کار با توابع در c مشکل دارم ء مثلا در برنامه ی پایین میخوام ء MTT1 &MTT2 رو چاپ کنمء باید printf رو توی خود تابع بنویسم یا main اصلی برنامه ؟امتحان کردم ولی جواب نگرفتم.... لطفا کمکم کنید


main(){
//make arrey for each unit//
MT[1]=2,MT[2]=2,MT[3]=1,MT[4]=1,MT[5]=1,MT[6]=1,MT[7]=1;
for(i=1;i<=s;i++)//s=numbers of units//
int MTT[3][4];
if(MT[i]==2)
MTT1(m,n);
else
if(MT[i]==1)
MTT2(o,p);}
//fill arrey1//
int MTT1(int m,int n) {
n=3,m=4;
int MTT[3][4];
for(i=1;i<=s;i++)
for(n=1;n<=3;n++)
for(m=1;m<=4;m++)
if (n==1)
MTT[1][1]=1,MTT[1][2]=1,MTT[1][3]=0,MTT[1][4]=0;
else
if(n==2)
MTT[1][1]=0,MTT[1][2]=1,MTT[1][3]=1,MTT[1][4]=0;
else
if(n==3)
MTT[1][1]=0,MTT[1][2]=0,MTT[1][3]=1,MTT[1][4]=1; return 0;}
//fill arrey2//
int MTT2(int o,int p){
o=4,p=4;
int MTT[4][4];
for(i=1;i<=s;i++)
for(o=1;o<=4;o++)
for(p=1;p<=4;p++)
if(n==1)
MTT[1][1]=1,MTT[1][2]=0,MTT[1][3]=0,MTT[1][4]=0;
else
if(n==2)
MTT[1][1]=0,MTT[1][2]=1,MTT[1][3]=0,MTT[1][4]=0;
else
if(n==3)
MTT[1][1]=0,MTT[1][2]=0,MTT[1][3]=1,MTT[1][4]=0;
else
if(n==4)
MTT[1][1]=0,MTT[1][2]=0,MTT[1][3]=0,MTT[1][4]=0;return 0; }

saeid.yavary
چهارشنبه 08 اسفند 1386, 11:21 صبح
سلام
اسم توابع رو قبل از main باید بیاری
بعد هم فرق نمی کنه که printf رو توی خود تابع بنویسی یا main اصلی برنامه
در ضمن اگه ممکن برنامه رو کامل بذار!

mojdeh,k
چهارشنبه 08 اسفند 1386, 12:07 عصر
در واقع باید این رو در جواب ببینم:



MTT1
1100
0110
0011


MTT2
1000
0100
0010
0001

اینم برنامه ی کامل اش :



#include<stdio.h>
#include<conio.h>
int MTT1(int n,int m);
int MTT2(int o,int p);
int i=0;
int s=7;
int MT[7];
int m,n,o,p;
//If maintanance time was 2, made a 2*4 arrey else made 4*4 arrey//
main(){
//make arrey for each unit//
MT[1]=2,MT[2]=2,MT[3]=1,MT[4]=1,MT[5]=1,MT[6]=1,MT[7]=1;
for(i=1;i<=s;i++)//s=numbers of units//
int MTT[3][4];
if(MT[i]==2)
MTT1(m,n);
else
if(MT[i]==1)
MTT2(o,p);}
//fill arrey1//
int MTT1(int m,int n) {
n=3,m=4;
int MTT[3][4];
for(i=1;i<=s;i++)
for(n=1;n<=3;n++)
for(m=1;m<=4;m++)
if (n==10)
MTT[1][1]=1,MTT[1][2]=1,MTT[1][3]=0,MTT[1][4]=0;
else
if(n==2)
MTT[1][1]=0,MTT[1][2]=1,MTT[1][3]=1,MTT[1][4]=0;
else
if(n==3)
MTT[1][1]=0,MTT[1][2]=0,MTT[1][3]=1,MTT[1][4]=1; return 0;}
//fill arrey2//
int MTT2(int o,int p){
o=4,p=4;
int MTT[4][4];
for(i=1;i<=s;i++)
for(o=1;o<=4;o++)
for(p=1;p<=4;p++)
if(n==1)
MTT[1][1]=1,MTT[1][2]=0,MTT[1][3]=0,MTT[1][4]=0;
else
if(n==2)
MTT[1][1]=0,MTT[1][2]=1,MTT[1][3]=0,MTT[1][4]=0;
else
if(n==3)
MTT[1][1]=0,MTT[1][2]=0,MTT[1][3]=1,MTT[1][4]=0;
else
if(n==4)
MTT[1][1]=0,MTT[1][2]=0,MTT[1][3]=0,MTT[1][4]=0;return 0; }

saeid.yavary
چهارشنبه 08 اسفند 1386, 12:54 عصر
سلام
فکر کنم برای تابع اولی این کد اشتباه باشه!

if (n==10)

به جای ان باید بنویسی

if (n==1)
برای تابع دوم هم به جای کد

if(n==1)
if(n==2)
if(n==3)
if(n==4)

این کد رو بذار

if(o==1)
if(o==2)
if(o==3)
if(o==4)

بعد می تونی از print اخر هر تابع استفاده کنی

MOHSEN8000
چهارشنبه 08 اسفند 1386, 21:10 عصر
این برنامه قراره چه کاری رو انجام بده؟ یکم روشن تر توضیح بده بگو که هر متغیر چه کار می کنه.(حد اقل چند تاشو بگو) از دستور printf هم اگه توی خود تابع استفاده کنی بهتره. چون معمولا باید تا حد ممکن تابع main رو خلاصه کنی.

mojdeh,k
پنج شنبه 09 اسفند 1386, 11:30 صبح
از راهنمایی هاتون ممنونم.

MOHSEN8000
پنج شنبه 09 اسفند 1386, 15:03 عصر
برنامه ای که شما نوشتید یه اشکال کوچیک که داشت این بود که مقدار دهی شما از طریق تغییر دادن SOURCE CODE بود که مثلا برای دسترسی شما به داده هاتون و یا تغییر دادن اون ها باید مستقیما مقدار اون ها رو عوض می کردید. اگه دسترسی به داده هاتون رو از طریق برنامه عملی کنید خیلی بهتره . ضمنا بهتره که وقتی با اعداد باینری در یک ماتریس سر و کار دارید ، اول همه ماتریس رو مثلا 0 بگذارید و بعد عناصری رو که می خواهید عوض کرده و تبدیل به 1 کنید. در مورد دستور PRINTF هم بهتره که اصلا برای چاپ خروجی ها خودتون یه تابع تعریف کنید که شامل همین دستور PRINTF باشه. من یه قسمت هایی از این برنامه رو نوشتم. امیدوارم به دردتون بخوره. اگه خروجی اون رو توی یه فایل بریزید کارتون راحت تر میشه.

mojdeh,k
پنج شنبه 09 اسفند 1386, 15:43 عصر
من تقریبا متوجه اشتباهم شدم برنامه ای که میخوام بنویسم رو تو قسمت کنترل آرایه ها توضیح دادم. البته اون قسمت کوچیکی از برنامست. مشکل من بیشتر به ای خاطر است که میخوام به ژن هام به راحتی دسترسی داشته باشم.