تور لحظه آخری
امروز : یکشنبه ، 11 آذر 1403    احادیث و روایات:  امام علی (ع):نـادانى، مايـه مرگ زندگان و دوام بدبختى است.
سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون شرکت ها

تبلیغات

تبلیغات متنی

صرافی ارکی چنج

صرافی rkchange

سایبان ماشین

دزدگیر منزل

تشریفات روناک

اجاره سند در شیراز

قیمت فنس

armanekasbokar

armanetejarat

صندوق تضمین

Future Innovate Tech

پی جو مشاغل برتر شیراز

آراد برندینگ

خرید یخچال خارجی

موسسه خیریه

واردات از چین

حمية السكري النوع الثاني

ناب مووی

دانلود فیلم

بانک کتاب

دریافت دیه موتورسیکلت از بیمه

طراحی سایت تهران سایت

irspeedy

درج اگهی ویژه

تعمیرات مک بوک

دانلود فیلم هندی

قیمت فرش

درب فریم لس

زانوبند زاپیامکس

روغن بهران بردبار ۳۲۰

قیمت سرور اچ پی

خرید بلیط هواپیما

بلیط اتوبوس پایانه

قیمت سرور dl380 g10

تعمیرات پکیج کرج

لیست قیمت گوشی شیائومی

خرید فالوور

پوستر آنلاین

بهترین وکیل کرج

بهترین وکیل تهران

خرید اکانت تریدینگ ویو

خرید از چین

خرید از چین

تجهیزات کافی شاپ

ساختمان پزشکان

محصولات فوراور

خرید سرور اچ پی ماهان شبکه

دوربین سیمکارتی چرخشی

همکاری آی نو و گزینه دو

کاشت ابرو طبیعی و‌ سریع

الک آزمایشگاهی

الک آزمایشگاهی

خرید سرور مجازی

قیمت بالابر هیدرولیکی

قیمت بالابر هیدرولیکی

قیمت بالابر هیدرولیکی

لوله و اتصالات آذین

قرص گلوریا

نمایندگی دوو در کرج

خرید نهال سیب

وکیل ایرانی در استانبول

وکیل ایرانی در استانبول

وکیل ایرانی در استانبول

رفع تاری و تشخیص پلاک

پرگابالین

دوره آموزش باریستا

مهاجرت به آلمان

بهترین قالیشویی تهران

بورس کارتریج پرینتر در تهران

تشریفات روناک

 






آمار وبسایت

 تعداد کل بازدیدها : 1836428887




هواشناسی

نرخ طلا سکه و  ارز

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
archive  refresh

پر کردن آرایه دو بعدی -


واضح آرشیو وب فارسی:سایت ریسک: پر کردن آرایه دو بعدی para 2x 31 خرداد 1388, 13:38سلام به دوستان من با زبان C (Turbo C) کار می کنم آقا من دخلم اومده ، فقط می خوام یه آرایه دوبعدی رو از اطلاعات کاربر پر کنم ، ولی نمی خوام این کار رو تویه تابع main انجام بدم ، می خوام تویه یه تابع دیگه باشه حالا می دونم که باید آرایه رو بصورت اشاره گر تویه main تعریف کنم ، بعد اونو بفرسم به تابع تا اون تابع مقدار ها رو بگیره بریزه تویه این آرایه این تیکه کد من هست ، لطفا اشکال هاشو بگیرین یا مثال بدین خلاصه یه کمکی بکنین : فعلا هم بصورت خیلی ساده اونو نوشتم تا روش کار بیاد دستم ، یعنی فقط یه عنصر این آرایه پر میشه #include <stdio.h> #include <stdlib.h> #include <conio.h> void getdata(int *); void main() { int *num_row[10][10]; clrscr(); getdata(&num_row); printf(" %d ",num_row); getch(); } void getdata(int *num_row) { scanf("%d",num_row[0][0]); printf(" %d ",*num_row); } the_king 31 خرداد 1388, 18:59لطفا این موارد رو در نظر بگیرید : 1) اگر شما یک آرایه را بصورت *int به یک تابع ارسال کنید، تبدیل به یک آرایه تک بعدی خواهد شد و برای دسترسی به یک اندیسی همانند [2][3] ناچار به محاسبه اندیس تک بعدی 2 + 10 * 3 خواهید بود. اگر آرایه دو بعدی تان تعداد ستون های ثابتی دارد، آنرا در مشخصات تابع وارد کنید تا چنین مشکلی نداشته باشید : void getdata(int [][10]); 2) نام هر آرایه ای خود یک اشاره گر است، مثلا در تعریف [int a[10 خود a یک اشاره گر است که به اولین خانه آرایه اشاره می کند، اگر شما * را به ابتدای آن اضافه کنید، بجای یک آرایه شامل تعدادی int یک آرایه شامل تعدادی اشاره گر خواهید ساخت، چیزی که قطعا مقصود شما نیست. int *num_row[10][10]; 3) همانگونه که در مورد 2 اشاره گردید، نام آرایه خود یک اشاره گر است، به همین دلیل برای ارسال آن به یک تابع نیازی به ایجاد اشاره گر دیگری نیست، مخصوصا که نتیجه اش پیچیده و نامفهوم است. مثلا کد زیر در واقع آدرس اشاره گری که به مقدار اشاره گری که به اولین اندیس آرایه اشاره می کند را به عنوان پارامتر ارسال می کند : getdata(&num_row); 4) محتویات یک آرایه بایستی اندیس به اندیس چاپ شوند، قابلیتی وجود ندارد که اینکار را بصورت خودکار انجام دهد، همچنین برای نمایش مقدار یک اندیس از آرایه بایستی اندیس ها مشخص شوند مثلا [0][0] کد زیر در واقع مقدار اشاره گر یعنی آدرس حافظه ای که اولین اندیس آرایه در آن ذخیره شده را چاپ می کند، نه مقدار اندیس را : printf(" %d ",num_row); 5) برای دریافت یک اندیس آرایه توسط scanf به آدرس آن اندیس نیاز دارید، پس & پیش از نام آرایه فراموش نشود : scanf("%d",num_row[0][0]); کد را بدین نحو ویرایش کردم : #include <stdio.h> #include <stdlib.h> #include <conio.h> void getdata(int [][10]); void main() { int num_row[10][10]; clrscr(); getdata(num_row); printf(" %d ",num_row[0][0]); getch(); } void getdata(int num_row[][10]) { scanf("%d", &num_row[0][0]); printf(" %d ", num_row[0][0]); } para 2x 31 خرداد 1388, 19:32آقا واقعا دمت گرم خیلی چیز یاد گرفتم البته مورد 4و5 رو سوتی داده بودم تو سورس اصلی خودم رعایت کرده بودم ولی واقعا دس خوش flashMASTER 31 خرداد 1388, 20:43//fill array and print it from func #include <stdio.h> #include <conio.h> const int size=3; void getdata(int m1[][size],int); void printdata(int m1[][size],int); int main() { int i,j; clrscr(); int m1[size][size]={0}; getdata(m1,size); printf(" ------------------------- "); printdata(m1, size); getch(); return 0; } void getdata(int m1[][size],int size) { int i,j; for (i=0;i<size;i++) for (j=0;j<size;j++) { printf("m1[%d][%d] =",i,j); scanf("%d",&m1[i][j]); } } void printdata(int m1[][size],int size) { int i,j; for (i=0;i<size;i++) { for (j=0;j<size;j++) printf("%-3d",m1[i][j]); printf(" "); } } para 2x 01 تير 1388, 18:59سلام عذر می خوام ، وقتی می خوام عدد های اعشاری وارد کنم ، برنامه به هم می خوره آرایه رو هم که float یا double تعریف می کنم بازم اصلا اینبار برنامه بالا نمیاد چی کار کنم ؟ flashMASTER 01 تير 1388, 19:32نوع آرایه اعشاری //fill array and print it from func //float #include <stdio.h> #include <conio.h> const int size=3; void getdata(float m1[][size],int); void printdata(float m1[][size],int); int main() { int i,j; // clrscr(); float m1[size][size]={0}; getdata(m1,size); printf(" ------------------------- "); printdata(m1, size); getch(); return 0; } void getdata(float m1[][size],int size) { int i,j; for (i=0;i<size;i++) for (j=0;j<size;j++) { printf("m1[%d][%d] =",i,j); scanf("%f",&m1[i][j]); } } void printdata(float m1[][size],int size) { int i,j; for (i=0;i<size;i++) { for (j=0;j<size;j++) printf("%-7.2f",m1[i][j]); printf(" "); } } para 2x 01 تير 1388, 22:57بازم ممنون حتما یه جایی اشتبا کرده بودم flashMASTER 01 تير 1388, 23:36اگر نمونه سوال زبان سی یا سی پلاس پلاس داری در تاپیک زیر قرار بده لطفا para 2x 02 تير 1388, 07:41بازم سلام آقا ببخشید من وقتی همه چیز رو تبدیل می کنم به float یعنی نوع ارایه ارسال به تابع ، ورودی و خروجی رو برنامه یه پیغام میده " Ab Normal Termin Program " و بعد برنامه تویه حلقه بی پایان میوفته من از Turbo C 2استفاده می کنم ، شاید کامپایلر هامون متفاوته ، چرا ماله من اینجوری ؟ به نظرتون چی کار کنم ؟ the_king 02 تير 1388, 07:55بازم سلام آقا ببخشید من وقتی همه چیز رو تبدیل می کنم به float یعنی نوع ارایه ارسال به تابع ، ورودی و خروجی رو برنامه یه پیغام میده " ab normal termin program " و بعد برنامه تویه حلقه بی پایان میوفته من از turbo c 2استفاده می کنم ، شاید کامپایلر هامون متفاوته ، چرا ماله من اینجوری ؟ به نظرتون چی کار کنم ؟ لطفا یک نمونه از کدی که با این مشکل مواجه میشه رو قرار بدهید. avayedeltangi 02 تير 1388, 08:58بازم سلام آقا ببخشید من وقتی همه چیز رو تبدیل می کنم به float یعنی نوع ارایه ارسال به تابع ، ورودی و خروجی رو برنامه یه پیغام میده " ab normal termin program " و بعد برنامه تویه حلقه بی پایان میوفته من از turbo c 2استفاده می کنم ، شاید کامپایلر هامون متفاوته ، چرا ماله من اینجوری ؟ به نظرتون چی کار کنم ؟ سلام ی چک کلی کن تو برنامه ای که نوشتی ببین فاصله ای اضافی یا کارکتری اضافی تو برنامه نگذاشتی بعضی مواقع به خاطر فاصله های اضافی برنامه دچار مشکل می شه :-? para 2x 02 تير 1388, 09:29اینم کد کوچیک شدش : #include <stdio.h> #include <stdlib.h> #include <conio.h> void getdata(float [][10]); void main() { float num_row[10][10]; clrscr(); getdata(num_row); printf(" %f ",num_row[0][0]); getch(); } void getdata(float num_row[][10]) { scanf("%f", &num_row[0][0]); printf(" %f ", num_row[0][0]); } تویه این حالت توربو اصلا اون رو اجرا نمی کنه فایل exe ای که ازش می سازم ، تا روش کلیک می کنم ، می پره بیرون از برنامه thx para 2x 02 تير 1388, 09:32والا فاصله اضافی فک نمی کنم ، نه نیس ولی یه چیزی برام واضحه اونم اینکه تا scanf تا از d% تبدیلش کردم به f% این مشکل پیش اومد یعنی با d% کار می کنه ، ولی خوب می دونین که مشکلی ... flashMASTER 02 تير 1388, 10:13بفرما کد تست شده در توربو سی نسخه 3 --------- Turbo c v3.0 نکته : بعد اول آرایه را مقدار دهی کن [10][10] //fill array and print it from func //float #include "stdio.h" #include "conio.h" const int size=3; void getdata(float m1[3][3],int); void printdata(float m1[3][3],int); int main() { int i,j; float m1[3][3]={0}; // clrscr(); getdata(m1,size); printf(" ------------------------- "); printdata(m1, size); getch(); return 0; } void getdata(float m1[3][3],int size) { int i,j; for (i=0;i<size;i++) for (j=0;j<size;j++) { printf("m1[%d][%d] =",i,j); scanf("%f",&m1[i][j]); } } void printdata(float m1[3][3],int size) { int i,j; for (i=0;i<size;i++) { for (j=0;j<size;j++) printf("%-7.2f",m1[i][j]); printf(" "); } } the_king 02 تير 1388, 10:51دلیل اش می تونه این باشه که کامپایلر تون کمی خنگه و متوجه نیاز برنامه به لینک کردن توابع ممیز اعشاری scanf نشده، به همین جهت لازمه که روی وجود scanf در برنامه کمی بیشتر تاکید کنید : #include <stdio.h> #include <stdlib.h> #include <conio.h> extern unsigned _floatconvert; #pragma extref _floatconvert void getdata(float [][10]); void main() { float num_row[10][10]; float f; clrscr(); f = 1; if (f > 2) scanf("%f", &f); getdata(num_row); printf(" %f ",num_row[0][0]); getch(); } void getdata(float num_row[][10]) { scanf("%f", &num_row[0][0]); printf(" %f ", num_row[0][0]); } para 2x 02 تير 1388, 11:09فرما کد تست شده در توربو سی نسخه 3 --------- Turbo c v3.0 نکته : بعد اول آرایه را مقدار دهی کن [10][10] راس می گی دوست من جایی برا دانلود Turbo C3 سراغ داری ؟ flashMASTER 02 تير 1388, 12:08Searrch in gooooooooooooooooooooogle borland c++ download or c compiler or دانلود توربو سی para 2x 02 تير 1388, 13:51با عرض پوزش ، با turbo C 3 هم نمیشه این یه تیکه از کد منه قسمت اول تابع main تعریف توابع و متغیر هست قسمت دوم تابعی که قراره متغیر رو پر کنه وقتی این رو اجرا می کنم ، همون بک گراند سیاه توربو سی و با دوتا اینتر هم از برنامه میاد بیرون para 2x 03 تير 1388, 08:36دوستان اگه میشه یه نگاه دیگه ای بندازین ، شاید یه چیزی به ذهنتون رسید یه کمکی شد!!! flashMASTER 03 تير 1388, 08:44برنامه را کامل آپلود کن تا اشکالشو رفع کنیم para 2x 03 تير 1388, 11:47سلام راستش اون مشکل حل شد جاله براتون بگم ، که تنها کاری که کردم این بود که آرایه رو از 100 *100 تبدیل کردم به 99*99 نمی دونم چرا با 100تا و بالاتر مشکل داشت راستش برنامه رو اگه بذارم کسی متوجه نمیشه ،(برنامه تسطیح اراضی هست ) حالا می ذارم para 2x 03 تير 1388, 19:34بازم سلام واقعا ببخشید بچه ها ، تویه این برنامه قرار هست روی اون آرایه دو بعدی که پر از اطلاعات هست کار بشه یه مسئله ای هست که اونو نمی فهمم و اونم اینه که وقتی آرایه مربعی باشه ، یهو وسط برنامه می پره بیرون و ادامه برنامه از یه جایی دیگه انجام نمیشه چرا ؟ یه چیزه دیگخ اونم اینکه اون سایز آرایه ها بودااا ، حالا هرچی آرایه بیشتر تعریف می کنم اون سایز کمتر میشه ، مثه اینکه یه مقدار ثابت داره تقسیم میشه و هرچی تعداد آرایه ها بیشتر میشه ، باید سایزشون کوچکتر بشه !؟!!




این صفحه را در گوگل محبوب کنید

[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 4710]

bt

اضافه شدن مطلب/حذف مطلب







-


گوناگون

پربازدیدترینها
طراحی وب>


صفحه اول | تمام مطالب | RSS | ارتباط با ما
1390© تمامی حقوق این سایت متعلق به سایت واضح می باشد.
این سایت در ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ثبت شده است و پیرو قوانین جمهوری اسلامی ایران می باشد. لطفا در صورت برخورد با مطالب و صفحات خلاف قوانین در سایت آن را به ما اطلاع دهید
پایگاه خبری واضح کاری از شرکت طراحی سایت اینتن