واضح آرشیو وب فارسی:سایت ریسک: مقایسه دو رشته با استفاده از اشاره گر در سی پلاس mb_veghary 07 آذر 1387, 16:57سلام خسته نباشید من یک مشکل دارم و آن این است که می خواهم یک پروژه بنویسم که موضوعش این است: دو رشته پویا را گرفته و آنها را از نظر کوچکی و بزرگی مقایسه کند مثلا ali و babak که babak بزرگتر است در این برنامه باید از اشاره گر استفاده شود و کلمه بزرگتر را چاپ کند. اگر دو کلمه مساوی باشند یکی را چاپ کند. 7/9/87 این برنامه را تا یکشنبه باید تحویل بدهم از بچه های این انجمن می خواهم که کمک کنند. دستتون درد نکنه. the_king 07 آذر 1387, 20:25سلام خسته نباشید من یک مشکل دارم و آن این است که می خواهم یک پروژه بنویسم که موضوعش این است: دو رشته پویا را گرفته و آنها را از نظر کوچکی و بزرگی مقایسه کند مثلا ali و babak که babak بزرگتر است در این برنامه باید از اشاره گر استفاده شود و کلمه بزرگتر را چاپ کند. اگر دو کلمه مساوی باشند یکی را چاپ کند. 7/9/87 این برنامه را تا یکشنبه باید تحویل بدهم از بچه های این انجمن می خواهم که کمک کنند. دستتون درد نکنه. یک تابع ()CompareString اختصاصی ساختم که در مقایسه دو رشته فلسفه خاص خودش رو داره. در این فلسفه رشته ای که طول اش بیشتر باشد بدون توجه به مقدار آن بزرگتر است. مثلا رشته aaaa از رشته bb بزرگتر است، چون رشته اول 4 کاراکتر و دومی 2 کاراکتر دارد. اگر طول دو رشته برابر بود رشته ای بزرگتر است که در مقایسه اولین کاراکتر های متفاوت، کد کاراکتر بزرگتر باشد. مثلا در مقایسه دو رشته book و back اولین کاراکتر های متفاوت دو رشته a و o هستند (دومین کاراکتر رشته) و چون کد کاراکتر o از کد کاراکتر a بزرگتر است پس رشته book از back بزرگتر است. با توجه به اینکه کد کاراکتر های a الی z (حرف کوچک انگلیسی) از کلیه کد کاراکتر های A الی Z (حروف بزرگ انگلیسی) بزرگتر است، بنابر این رشته ali از رشته ALI بزرگتر است و رشته art از رشته Zoo بزرگتر است (کد حرف a از کد حرف Z بزرگتر است). #include <stdio.h> #include <conio.h> char* CompareString(char* str1, char* str2) { int i,j; for (i=0;str1[i];i++); for (j=0;str2[j];j++); if (i > j) return str1; if (i < j) return str2; for (i=0;str1[i] || str2[i];i++) if (str1[i] > str2[i]) return str1; else if (str1[i] < str2[i]) return str2; return str1; } void main() { char* str1 = new char[20]; char* str2 = new char[20]; clrscr(); printf ("Please enter string #1 : "); gets(str1); printf ("Please enter string #2 : "); gets(str2); printf ("Greater string = %s ", CompareString(str1, str2)); delete[] str1; delete[] str2; getch(); } mb_veghary 09 آذر 1387, 08:31آقا دستت درد نکنه از نوشتن برنامه بالا فقط یک مشکل اینجاست که این برنامه باید دو رشته را از لحاظ الفبایی بزرگتر ردیف کند یعنی رشته بزرگتر را از لحاظ حرف بزرگتر در اول کلمه ردیف کند.(منظور کلمه بزرگتر حرف بزرگتر است) و اگر حرف اول مساوی بود به حرف دوم برود. ali , zoo === zoo ali,alireza===alireza alireza,z====z اگه برنامه بالا رو بتونی به صورت شرایط بالا بنویسی خیلی ممنون می شم. با تشکر. the_king 09 آذر 1387, 11:03تابع ()CompareString را ویرایش کردم. در نسخه جدید، رشته ای که اولین کاراکتر متفاوت آن کد بزرگتری داشته باشد، رشته بزرگتر است. یعنی بدون توجه به طول رشته ها، رشته ای بزرگتر است که در مقایسه اولین کاراکتر های متفاوت، کد کاراکتر بزرگتر باشد. مثلا رشته byte از رشته border بزرگتر است، چون کد دومین کاراکتر رشته اول (کاراکتر y) از کد دومین کاراکتر رشته دوم (کاراکتر o) بزرگتر است. در مقایسه دو رشته book و back اولین کاراکتر های متفاوت دو رشته a و o هستند (دومین کاراکتر رشته) و چون کد کاراکتر o از کد کاراکتر a بزرگتر است پس رشته book از back بزرگتر است. با توجه به اینکه کد کاراکتر های a الی z (حرف کوچک انگلیسی) از کلیه کد کاراکتر های A الی Z (حروف بزرگ انگلیسی) بزرگتر است، بنابر این رشته ali از رشته ALI بزرگتر است و رشته art از رشته Zoo بزرگتر است (کد حرف a از کد حرف Z بزرگتر است). #include <stdio.h> #include <conio.h> char* CompareString(char* str1, char* str2) { int i; for (i=0;str1[i] || str2[i];i++) if (str1[i] > str2[i]) return str1; else if (str1[i] < str2[i]) return str2; return str1; } void main() { char* str1 = new char[20]; char* str2 = new char[20]; clrscr(); printf ("Please enter string #1 : "); gets(str1); printf ("Please enter string #2 : "); gets(str2); printf ("Greater string = %s ", CompareString(str1, str2)); delete[] str1; delete[] str2; getch(); } mb_veghary 09 آذر 1387, 22:10اقا دستت درد نكنه يه دنيا ممنون
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 3690]