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

تبلیغات

تبلیغات متنی

اتاق فرار

خرید ووچر پرفکت مانی

تریدینگ ویو

کاشت ابرو

لمینت دندان

ونداد کولر

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

صرافی rkchange

دانلود سریال سووشون

دانلود فیلم

ناب مووی

رسانه حرف تو - مقایسه و اشتراک تجربه خرید

سرور اختصاصی ایران

تور دبی

دزدگیر منزل

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

قیمت فنس

armanekasbokar

armanetejarat

صندوق تضمین

پیچ و مهره

طراحی کاتالوگ فوری

دانلود کتاب صوتی

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

Future Innovate Tech

آموزشگاه آرایشگری مردانه شفیع رسالت

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

قیمت فرش

آموزش کیک پزی در تهران

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

میز جلو مبلی

هتل 5 ستاره شیراز

آراد برندینگ

رنگ استخری

سایبان ماشین

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

مبل استیل

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

شرکت حسابداری

نظرسنجی انتخابات 1403

استعداد تحلیلی

کی شاپ

خرید دانه قهوه

دانلود رمان

وکیل کرج

آمپول بیوتین بپانتین

پرس برک

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

خرید تیشرت مردانه

خرید نشادر

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

وکیل تبریز

اجاره سند

وام لوازم خانگی

نتایج انتخابات ریاست جمهوری

خرید سی پی ارزان

خرید ابزار دقیق

بهترین جراح بینی خانم

 






آمار وبسایت

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




هواشناسی

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

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
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]
[تعداد بازديد از اين مطلب: 4697]

bt

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







-


گوناگون

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


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