PDA

View Full Version : مبتدی: پیدا کردن کلمات مترادف



Code-up
چهارشنبه 10 اردیبهشت 1399, 14:10 عصر
سلام

20 تا کلمه که اونارو توی buttonها داریم
هر کدوم از این کلمه‌ها یه عدد هم داره که توی عکس مشخصه. (این اعداد و کلمه‌هارو از یک فایل text میخونم و کاملا مشخصه که هر عدد با یک کلمه لینک شده)
مثلا پارچه و قماش یا به عبارتی عدد 12 و 15 هم‌معنی هستند یا برعکس، قماش و پارچه و 15 و 12.
با چه الگوریتمی میشه اینکارو انجام داد؟
چطور متوجه بشیم درست انخاب شدند و اگر دست بودند از جدول حذف بشن.


فایل تکستی که این اطلاعات نوشته شده و لود میکنم.
151655

تصویر جدول:
151654

ShayanFiroozi
چهارشنبه 10 اردیبهشت 1399, 15:15 عصر
سلام دوست عزیز ،

متاسفانه بنده سینکس VB رو فراموش کردم که کدشو براتون بنویسم اما امیدوارم شرح دادنش کمکتون کنه :

1- شما یک کلاس تعریف کنین که شامل خود کلمه ، شماره کلمه و شماره مترادفش باشه.

2- از اون کلاس یه لیست تعریف کنین که بتونیم هر بار یک عنصر(از نوع کلاسی که تعریف کردیم که شامل کلمه ، شماره کلمه و شماره مترادفش) بهش اضافه کنیم.

3- حالا هر وقت که بخوایم کل لیست رو پیمایش میکنیم و عناصر رو با هم مقایسه میکنیم و اگر کاربر صحیح انتخاب کرده بود از لیست حذفش میکنیم.

** البته این فقط برای زمانی جواب میده که هر کلمه فقط یک مترادف داشته باشه اگر هر کلمه بخواد n تا مترادف داشته باشه یکم پیچیده تر میشه.

تا حدودی با سی شارپ براتون پیاده سازی کردم که بهتون کمک میکنه روش رو درک کنین ولی زحمت تبدیلش به عهده خودتون :چشمک:


public static class cWords
{


/// <summary>
/// لیستی که کلمات ما رو نگه میدارن ، در واقع لیستی از کلاس cWord
/// </summary>
public static List<cWord> WordList = new List<cWord>();


/// <summary>
/// کلاسی که یک کلمه + کد اون کلمه + کلمه مترادف + کد کلمه مترادف رو ذخیره میکنه
/// </summary>
public class cWord
{
/// <summary>
/// خود کلمه
/// </summary>
public string Word { get; set; }


/// <summary>
/// شماره کلمه
/// </summary>
public int WordID { get; set; }


/// <summary>
/// کلمه مترادف
/// </summary>
public string WordSysnonim { get; set; }




/// <summary>
/// شماره کلمه مترادف
/// </summary>
public int WordSysnonimID { get; set; }






public cWord(string Word, int WordID, string WordSysnonim, int WordSysnonimID)
{
this.Word = Word;
this.WordID = WordID;
this.WordSysnonim = WordSysnonim;
this.WordSysnonimID = WordSysnonimID;
}






}






public static void Add_Word(string Word, int WordID, string WordSysnonim, int WordSysnonimID)
{
WordList.Add(new cWord(Word, WordID, WordSysnonim, WordSysnonimID));
}




public static void Clear_List()
{
WordList.Clear();
}




public static bool Is_Words_Sysnonims(string Word1,string Word2)
{
foreach (cWord _Word in WordList)
{
if ((_Word.Word == Word1 && _Word.WordSysnonim == Word2) || (_Word.Word == Word2 && _Word.WordSysnonim == Word1))
{
return true;
}
}


return false;
}




public static bool Is_WordsID_Sysnonims(int Word1_ID, int Word2_ID)
{
foreach (cWord _Word in WordList)
{
if ((_Word.WordID == Word1_ID && _Word.WordSysnonimID == Word2_ID) || (_Word.WordID == Word2_ID && _Word.WordSysnonimID == Word1_ID))
{
return true;
}
}


return false;
}







}