View Full Version : سوال: کار با فایل
mortezahei
شنبه 23 دی 1391, 12:40 عصر
کدی می خوام که دو متن را از کاربر بگیرد (فایل) و کلمات مشابه بکار رفته در آن ها را مشخص کنه.
لطفاً کمکم کنید.
mortezahei
چهارشنبه 27 دی 1391, 12:20 عصر
واقعاً کسی نیست کمکم کنه؟:متفکر::متفکر::متفکر:
saied_hacker
چهارشنبه 27 دی 1391, 12:28 عصر
چرا منتها کد میخاد که کسی نمی نویسه :)
حالا مشکلت خوندنه فایله یا پیدا کردن کلمات ؟ شایدم هردو
mortezahei
پنج شنبه 28 دی 1391, 12:42 عصر
چرا منتها کد میخاد که کسی نمی نویسه :)
حالا مشکلت خوندنه فایله یا پیدا کردن کلمات ؟ شایدم هردو
پیدا کردن کلماته
همه کد می نویسن به ما که رسید نمی نویسن!!!!!!!!!!!!!!
omidshaman
پنج شنبه 28 دی 1391, 13:39 عصر
همه کد می نویسن به ما که رسید نمی نویسن!!!!!!!!!!!!!!
همه کار اشتباهی می کنن
کل 2 تا فایل رو بزار داخل یک وکترو بعد مقایسشون کن کار سختی نیست...(البته کارهای بهتری هم میشه کرد)
برای مثال این کد برای خوندن یکیشون و پیدا کردن یک string مشخص
#include<iostream>
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
vector <string> readTest;
ifstream testFile ( "example.txt" );
int i=1;
while(!testFile.eof())
{
readTest.resize(i);
testFile>>readTest[i-1];
i++;
}
if (find(readTest.begin(), readTest.end(), "abc") != readTest.end())
{
cout<<"peida shod";
}
}
یا می تونی از search استفاده کنی که خوب اون یکم پیچیده تره
http://www.cplusplus.com/reference/algorithm/search/
omidshaman
پنج شنبه 28 دی 1391, 13:53 عصر
مثال برای search
#include <iostream>
#include <fstream>
#include <iterator>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
ifstream f("example.txt");
string s("abs");
istreambuf_iterator<char> eof;
if(eof == search(istreambuf_iterator<char>(f), eof, s.begin(), s.end()) )
cout << "peida nashod";
else
cout << "peida shod";
}
danial pepsi
پنج شنبه 28 دی 1391, 18:04 عصر
[QUOTE=omidshaman;1678753]هکرد)
[PHP]>
;
ifstream testFile ( "example.txt" );
این دستوری که این قسمت استفاده کردیم منظور چیه؟:متفکر:
while(!testFile.eof())
{
همینطور این قسمت؟:لبخند:
if (find(readTest.begin(), readTest.end(), "abc") != readTest.end())
اگه این قسمتشم بگید که خدا پدرتونو بیامرزه !!!!!:چشمک:
آخه اینا دقیقا مشکلهاییکه من چند وقته باهاش درگیررم:گریه:
omidshaman
جمعه 29 دی 1391, 13:51 عصر
;
ifstream testFile ( "example.txt" );
این دستوری که این قسمت استفاده کردیم منظور چیه
شما که گفتین فقط تو پیدا کردن کلمات مشکل دارین!
این دستور برای باز کردن فایل و خوندن اطلاعات ازشه(فقط خوندن)
این جوری هم میشه
ifstream testFile;
testFile.open ("example.txt", ifstream::in);
while(!testFile.eof())
منظور از Eof یعنی End of file یعنی اخر فایل یعنی تا وقتی که به اخر فایل نرسیدیم این کارا رو انجام بده
if (find(readTest.begin(), readTest.end(), "abc") != readTest.end())
خوب این فانکشن find که تو هدر الگوریتم وجود داره باید ورودی هاش یک iterator ّباشه به اول container (که این جا وکتوره) و یکی به اخر
ایتریتور هم یک شی ایه که به یک "محدوده" خاص اشاره می کنه مثل پوینتر ولی با یک سری تفاوتا
قسمت !=readTest.end() هم برای اینه که find یک ایتریتور بر می گردونه حالا اگر چیزی پیدا نکنه اون ایتریتور اخر کانتینره یعنی readTest.end()
و اگر اخرش برگرده یعنی چیزی پیدا نکرده
danial pepsi
جمعه 29 دی 1391, 17:27 عصر
ممنونم.توی قسمت find اگه از فانکشن دیگه ای استفاده کنیم امکانش هست؟
و یکی هم این iterator منظور چیه؟:متفکر:
ببخشید دیگه زیر دیپلمی باشه :لبخند:
omidshaman
جمعه 29 دی 1391, 19:49 عصر
iterator همون طوری که گفتم یک وسیلست برای دسترسی به اطلاعات کانتینر حالا می خواد list باشه وکتور باشه یا هر چیز دیگه... که خوب هم دسترسیش به اطلاعات سریعتره وهم امن تر
و توابع موجود توی algorithm هم اکثرشون ورودیشون iteratorه
iterator هم چند مدل داریم بعضیاشون فقط امکان دسترسی یک طرفه رو میدن بعضیا دو طرفه بعضیا راندوم و 2 تا هم مخصوص istream و ostream
پوینتر هم یک جور iterator که امکان دسترسی دوطرفه و راندوم اطلاعات رو داره(منظور از دو طرفه یعنی مثلا ++a,a--)
.توی قسمت find اگه از فانکشن دیگه ای استفاده کنیم امکانش هست؟
اره خوب شما هر چی می خوای استفاده کن ولی فکر نمی کنم راهی ساده تر وسریع تر از استفاده مستقیم از find ّبتونی پیدا کنی...
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.