PDA

View Full Version : استفاده از فایلا و آرایه با طول متغیر



near_86
جمعه 07 اردیبهشت 1386, 17:03 عصر
:گریه: سلام دوستان
من دارم برنامه ای می نویسم و می خوام اون برنامه 1 فایل متنی در درایو c با عنوان k.txt را بخواند :عصبانی++:
اطلاعات این فایل به صورت d ( 1,3 )=5; هستند، می خوام تمام این اطلاعاتو که برنامه می خونه در یک آرایه با طول متغیر ودو بعدی ذخیره کنم

و فقط اطلاعات به صورت زیر ذخیره شوند
a[1][3]=5

زبان برنامه نویسی c or c++
نمی دونم چه کار کنم :گریه:

emad_67
شنبه 08 اردیبهشت 1386, 10:29 صبح
این برنامه رو برات نوشتم میتونی از آدرس زیر دانلود کنی
ضمنا فایل متنی k رو هم قبل از اجرا تو درایو c کپی کن

http://toppc.persiangig.com/download/source/file.zip
----------------------------------------------------------------
http://toppc.persiangig.com

near_86
شنبه 08 اردیبهشت 1386, 14:06 عصر
ببینید من فقط کمک می خوام
برنامه من طراحی 1 ماشین dfa (نظریه اعداد)

این سوالی که نوشتم
قسمتی از برنامه ی من هست
من با فایلا وآرایه های پاسکال کار کردم
ولی با سی نه

به همین دلیل کمک خواستم

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

توسعه نویس
سه شنبه 11 اردیبهشت 1386, 20:41 عصر
اساسا این مشکل من هم هست.
چطوری میتونیم در C++ متغییر دینامیکی تعریف کرد؟

emad_67
چهارشنبه 12 اردیبهشت 1386, 08:16 صبح
برای گرفتن حافظه به صورت داینامیک می تونید از دستور new استفاده کنید مثلا فرض کنید می خواهید یه آرایه داینامیک به طول n ایجاد کنید برای این کار می نویسید:


int *a=new int [n]

این دستور به اندازه n خونه حافظه ا نوع int حافظه گرفته و آدرس اول ای خونه ها رو در متغییر a که از نوع اشارگر تعریف شده ذخیره می کنه
از این روش میشه برای تخصیص حافظه برای آزایه های کاراکتری متغییر های تعریف شده توسط کاربر هم استفاده کرد

near_86
چهارشنبه 12 اردیبهشت 1386, 17:07 عصر
برای تعریف آرایه 2 بعدی
int *a=new int [n][m[

درسته؟؟؟؟؟؟؟
اگه درسته
چطور میشه اونو با -1 پر کرد

برای خوندن از 1 فایل در cیا c++ از چه دستوری استفاده کنم
می خوام این خطو بخونم
d(0,0)=8
توی برنامه دوستمون emad_67 دیدم که چنین چیزی خونده شده بود
اما سر در نیوردم
میشه کمکم کنید

emad_67
چهارشنبه 12 اردیبهشت 1386, 19:02 عصر
برای ساخت آرایه داینامیک دو بعدی باید بنویسی:


int **a=new int *[n];
for(int i=1;i<=n;i++)
a[i]=new int [i];

تو c++ برای خوندن فایل باید بنویسی


ifstream file("filename",ios::in);

که میاد file رو به عنوان شی از نوع کلاس ifstream (کلاس فایل وروردی) ایجاد میکند که در ادامه فایلی با اسم filename را برای خوانده شدن در برنامه باز می کند
که می توان عبارت بالا را به صورت


iftream file;
file.open("filename",ios::in);

نوشت
در برنامه ای که من نوشتم میاد عبارت d(0,0)=8 را از فایل خوانده و در یک آرایه کاراکتری ذخیره میکند و مقدار هایی که عددی هستند را با دستور atoi از char به int تبدیل می کند و در آرایه دخیره می کند