أنا عندي ملفين نصيين وابغى من الماتلاب يقرأ لي السطر الأ ول من الملف الأول والسطر الأول من الملف الثاني ويعمل مقارنه اذا كان هذا السطر يساوي هذا أكمل القراءه وإذا لم يكونا متساااويين أخرج من جمله التكرار وأنا سويت كذا
fid1 = fopen('John_Doe_2007-08-20.txt');
fid2 = fopen('FK_2008-01-16.txt');
tline1 = fgetl(fid1);
tline2 = fgetl(fid2);
while ischar(tline1)
disp(tline1);
tline1 = fgetl(fid1);
while ischar(tline2)
disp(tline2);
tline2 = fgetl(fid2);
if tline1==tline2
return
text=strcat('The max matching percentage is 100% ');
msgbox(text);
else
text=strcat('nooooo matching at all ');
msgbox(text);
end
end
end
وجربت معاها break و continue لكن ماطلعت لي الصح
وإذا وضعت القراءه للملفين داخل while وحده يخرج لي بعد كل سطر يقراه الرسااله فيخرج لي كم هاااااائل من الرسائل…
clear
clc
fid1 = fopen('John_Doe_2007-08-20.txt');
fid2 = fopen('FK_2008-01-16.txt');
d=1;
i=1;
while d(i)==1
i=i+1;
tline1 = fgetl(fid1);
tline2 = fgetl(fid2);
d(i)=strcmp(tline1,tline2);
if d(i)==1
disp(tline1)
if tline1=='.'
disp('The max matching percentage is 100% ')
break
else
end
elseif d(i)==0
l=length(d);
if l==2
disp('nooooo matching at all ')
else
disp(['the no matching condition occurs in the line number ' num2str(l-1)])
end
else
end
end
جرب كده وان شاء الله يكون اللي انت عاوزه ولو ليك اي استفسار في الكود اتفضل
الله يعطييييييييك الف الف عافيه ايجيبت لكن ماطلع معي نتيجه وحطيتها بm file يطلع لي
warning found>>>>
The variable ‘d appears to change size on every loop treation (within ascript) . consider preallocating for speed’’
[SIZE=4][COLOR=Black]السطور 1 .و 2 ناقلهم من الكود بتاعك
السطور 3 و 4 دول بعرف فيهم قيم هستخدمها جوه اللوب ودي طريقه متعارف عليها خاصه في ال while لوب عشان تحدد امتي هتبدا وامتي هتقف
بالنسبه لل i فبردو دي طريقه متعارف عليها لعمل counter يلف بحيث مع كل لفه يزود قيمه ال i واحد زي مهو واضح في السطر 6
السطر 7 و 8 من الكود بتاعك و هو بيقرا السطر الاول من الملف وعن اعاده ادخال نفس الامر يقرا السطر التاني وهكذا
السطر التاسع الامر ده بيستخدم عند مقارنه string مع بعضهم والناتج بيبقي 1 عند التماثل و 0 عند الاختلاف
السطر 10 ده شرط اظهار الناتج ان يكون السطر في الملفيين متماثل
السطر 11 من الكود بتاعك وهو اظهار السطر المتماثل
السطر ال 12 ده شرط انتهاء الملف ان يكون الملفين متماثلين في اخر سطر ويكون اخر سطر هو . للدلاله علي انتهاء الكتابه
السطر 13 هو اظهار كمال التماثل في حال تحقق الشرطين السابقين
السطر ال 14 لايقاف قراءه باقي السطور في حال تحقق الشروط السابقه
السطر 17 هو شرط ان يكون السطور غير متماثله وده ممكن يحدث اما في بدايه البرنامج كما في السطر 19 او بصفه عامه كما في السطر 21
السطر 18 يقيس عدد السطور التي تم قرائتها قبل حدوث عدم التماثل
السطر 20 ده ناتج عدم التماثل منذ البدايه
السطر 22 ده لتحديد عدم التماثل حدث في السطر رقم كام
الله يعطيك ألف ألف عاافيه ويوفقك ويوصلك مبتغاك من غير ضراء ولا فتنه
الف شكر على الشرح الوافي…
بغيت أسأل عن طريقه أخرى وهي هل يمكن أني أقارن بين الملف الأول والثاني ثم يخرج لي نتيجه التطابق على هيئه نسبه مئوية؟؟
يعني يقول لي نسبه التطابق 77% …أو 2% بالميه وهكذا وعند عدم وجود أي تطابق يقول نووو ماتش وعند التطابق التام يقول 100%
الله يعطيك ألف ألف عاافيه ويوفقك ويوصلك مبتغاك من غير ضراء ولا فتنه
الف شكر على الشرح الوافي…
بغيت أسأل عن طريقه أخرى وهي هل يمكن أني أقارن بين الملف الأول والثاني ثم يخرج لي نتيجه التطابق على هيئه نسبه مئوية؟؟
يعني يقول لي نسبه التطابق 77% …أو 2% بالميه وهكذا وعند عدم وجود أي تطابق يقول نووو ماتش وعند التطابق التام يقول 100%
والله يجازيك عني كل خييير ويرزقك من حيث لاتحتسب
وأيضا بالنسبه للمقارنه الأولى أريد وضعها في function تدخل لي بمتغيرات عباره عن الملف الأول والثاني
ثم يقوم بقراتهما لكن يخرج لي مشكله…
function matchings(file1,file2)
clear
clc
fid1 = fopen(file1);
fid2 = fopen(file2);
d=1;
i=1;
while d(i)==1
والمشكله هي
Error in ==> matchings at 8
fid1 = fopen(file1);
أتمنى المساعده وجزاكم الله كل خير وبركات
بغيت أسأل عن طريقه أخرى وهي هل يمكن أني أقارن بين الملف الأول والثاني ثم يخرج لي نتيجه التطابق على هيئه نسبه مئوية؟؟
يعني يقول لي نسبه التطابق 77% …أو 2% بالميه وهكذا وعند عدم وجود أي تطابق يقول نووو ماتش وعند التطابق التام يقول 100%
والله يجازيك عني كل خييير ويرزقك من حيث لاتحتسب
مثل هذي الطريقه
percent_match = max_percent(1,1)*100/minuNum1;
%if function is called in GUI mode, popup out the message box
%for final result
if nargin == 3
text=strcat('The max matching percentage is ',num2str(percent_match),'%');
msgbox(text);
end;
الاضافه هي معرفه عدد سطور الملف الاول قبل بدايه المقارنه وبعد ذلك اتمام نفس الكود السابق
clear
clc
file1=('John_Doe_2007-08-20.txt');
file2=('FK_2008-01-16.txt');
fid = fopen(file1,'rt');
nLines = 0;
while (fgets(fid) ~= -1),
nLines = nLines+1;
end
% fclose(fid);
fid1 = fopen(file1);
fid2 = fopen(file2);
d=1;
i=1;
while d(i)==1
i=i+1;
tline1 = fgetl(fid1);
tline2 = fgetl(fid2);
d(i)=strcmp(tline1,tline2);
if d(i)==1
disp(tline1)
if tline1=='.'
disp('....................................')
disp('The max matching percentage is 100% ')
disp('....................................')
break
else
end
elseif d(i)==0
l=length(d);
if l==2
disp('.......................')
disp('nooooo matching at all ')
disp('.......................')
else
disp('.....................................................')
disp(['the no matching condition occurs in the line number ' num2str(l-1)])
disp('.....................................................')
disp(['the matching percentage is ' num2str(round(100*(l-2)/(nLines) )) ' %' ])
disp('................................')
end
else
end
end
function matchings(file1,file2)
fid = fopen(file1,'rt');
nLines = 0;
while (fgets(fid) ~= -1),
nLines = nLines+1;
end
% fclose(fid);
fid1 = fopen(file1);
fid2 = fopen(file2);
d=1;
i=1;
while d(i)==1
i=i+1;
tline1 = fgetl(fid1);
tline2 = fgetl(fid2);
d(i)=strcmp(tline1,tline2);
if d(i)==1
disp(tline1)
if tline1=='.'
disp('....................................')
disp('The max matching percentage is 100% ')
disp('....................................')
break
else
end
elseif d(i)==0
l=length(d);
if l==2
disp('.......................')
disp('nooooo matching at all ')
disp('.......................')
else
disp('.....................................................')
disp(['the no matching condition occurs in the line number ' num2str(l-1)])
disp('.....................................................')
disp(['the matching percentage is ' num2str(round(100*(l-2)/(nLines) )) ' %' ])
disp('................................')
end
else
end
end
end
[RIGHT][SIZE=4]ويكتب الامر في Matlab command window هكذا