PDA

View Full Version : سوال: حذف کردن کاراکتر های تکراری از یک فایل متنی



sara_mp
سه شنبه 21 دی 1389, 08:42 صبح
سلام
چه جور میشه اطلاعات یه فایل متنی رو تو یه آرایه ذخیره کرد بعد عناصر تکراری رو از اون حذف کرد بعد تویه فایل دیگه ذخیره کرد اگه راهنمایی کنید ممنون میشم . خیلی ضروریه کمک کنید .:ناراحت:

Arcsinos
سه شنبه 21 دی 1389, 11:05 صبح
فایل متنیت شامل چیست ؟ فقط متن ؟ اگه فقط متنه و با اعداد و اینها سرو کار نداری یه آرایه از نوع char تعریف کن و تعداد خانه های آرایه هم بستگی به مقدار فایل متنیت داره ، یا اگه خواستی میتونی از string استفاده کنی . برای تعریف یه فایل به عنوان ورودی میتونی از این کد استفاده کنی .

string input;
ifstream ifile;
ifile.open("c:\matn.txt");
ifile>>input;

بعد از اینکه کارهای لازم رو روی رشته ات انجام دادی میتونی با این کد اون رو ذخیره کنی :

ofstream ofile;
ofile.open("c:\matn.txt");
ofile<<string;
GoodLuck

sara_mp
سه شنبه 21 دی 1389, 12:42 عصر
ممنون از راهنماییتون
ولی بیشتر مشکل من تو حذف کاراکتر های تکراری از آرایه است اینم بگم که فایل متنی من فقط شامل متنه و یه نکته دیگه این که برنامه به زبان c است.

Arcsinos
سه شنبه 21 دی 1389, 13:26 عصر
منظورتون اینه که وقتی ورودی aaabbabbba بود خروجی بشه ab ؟

sara_mp
سه شنبه 21 دی 1389, 15:47 عصر
آره منظورم همینه.

quiet_programmer
سه شنبه 21 دی 1389, 17:10 عصر
سلام به همه.

برای اینکار یه روش ساده لوحانه وجود داره که برات مینیویسم. پیچیدگی این الگوریتم n*n که زیاد به صرفه نیست ولی کارتو راه میندازه. البته الگوریتمهای دیگه ای هم وجود داره که اپتیمال تر از این کده.

فرض میکنیم کاراکترهای شما در آرایه با نام List قرار داره و نتیجه در آرایه EList قرار میگیره


int Index=0;
char Find=0;
for(int i=0;i<n;i++)
{
Find=0;
for(int p=0;p<Index;p++)
if(List[i]==EList[p])
Find=1;
if !(Find)
EList[Index++]=List[i];
}
for(int i=0;i<Index;i++)
printf("%c",EList[i]);