דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. בקשת עזרה עם קוד בc#

בקשת עזרה עם קוד בc#

מתוזמן נעוץ נעול הועבר תכנות
14 פוסטים 3 כותבים 211 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • dovidD מחובר
    dovidD מחובר
    dovid ניהול
    כתב ב נערך לאחרונה על ידי
    #2

    @pcinfogmach אתה לא מספר סיפור אלא מביא קוד, והקוד לא מספר פה כלום.
    התלונה שלך גם מאוד באויר, למה שלא תיתן קלט ותגיד מה הפלט שאתה רוצה?

    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

    בכל נושא אפשר ליצור קשר dovid@tchumim.com

    pcinfogmachP 2 תגובות תגובה אחרונה
    1
    • pcinfogmachP מנותק
      pcinfogmachP מנותק
      pcinfogmach
      השיב לdovid ב נערך לאחרונה על ידי pcinfogmach
      #3

      @dovid
      המטרה של הקוד היא לסנן ספרים שלא נמצאים ברשימת הספרים שב -
      Properties.Settings.Default.searchBookList
      (זהו חלק מהפרוייקט שלי ליצור תכנת חיפוש בקבצי טקסט ואני רוצה לתת למשתמש לבחור היכן לחפש והיכן לא אז יש לי קוד אחר שנותן למשתמש לבחור איזה ספרים וזה יוצר את הרשימה ושומר אותה בsettings כדי שיהיה זמין גם לפעם הבאה)

      הקוד עצמו בנוי בצורה כזו:
      הרשימה בעצם היא string עם שמות ספרים מופרדים על ידי פסיק
      הקוד קורא את הsrting וממיר אותו לרשימה (בהתחלה השתמשתי בlist אבל ראיתי שכותבים ש lookup יותר מהיר)
      ואז הוא בודק את המשתנה filePath האם הוא קיים בתוך הרשימה או לא (כך זה נותן אפשרות לסנן כל filepath האם ייכלל בתוך החיפוש או לא)

      למעשה מה שקורה הוא שמתוך רשימה של נגיד 11 ספרים שיש מתוכם 8 שאמורים לחזור כנכונים הbool מחזיר למעשה רק 4 או חמש נכונים ואני תוהה האם הבעיה בקוד או בפרט אחר בתוכנה.

      גמ"ח מידע מחשבים ואופיס

      תגובה 1 תגובה אחרונה
      0
      • pcinfogmachP מנותק
        pcinfogmachP מנותק
        pcinfogmach
        השיב לdovid ב נערך לאחרונה על ידי
        #4

        @dovid כתב בבקשת עזרה עם קוד בc#:

        למה שלא תיתן קלט ותגיד מה הפלט שאתה רוצה?

        הקלט לדוגמא הוא:
        filepath = בראשית אור החיים.
        Properties.Settings.Default.searchBookList=בראשית עם ניקוד, בראשית רמב"ן
        במקרה זה הbool אמור להגיד לי שfilepath לא נמצא ברשימה

        משא"כ אם הfilepath היה "בראשית עם ניקוד" או "בראשית רמב"ן"
        הbool אמור להגיד לי שהוא כן קיים ברשימה

        מה שקורה בפועל שהוא מחזיר לי ש"בראשית עם ניקוד" קיים אבל לא "בראשית רמב"ן"

        גמ"ח מידע מחשבים ואופיס

        י תגובה 1 תגובה אחרונה
        0
        • י מנותק
          י מנותק
          יוסף בן שמעון
          השיב לpcinfogmach ב נערך לאחרונה על ידי
          #5

          @pcinfogmach אתה יכול לאשר שזה קורה רק במחרוזת שמכילה מרכאות?

          pcinfogmachP תגובה 1 תגובה אחרונה
          1
          • pcinfogmachP מנותק
            pcinfogmachP מנותק
            pcinfogmach
            השיב ליוסף בן שמעון ב נערך לאחרונה על ידי pcinfogmach
            #6

            תודה לכל העונים כנראה שהבעיה היא אחרת ממה שחשבתי כי עכשיו עשיתי בדיקה עם linqpad והכל עבד כשורה מצו"ב קוד הבדיקה אשב על זה קצת

            static void Main(string[] args)
            {
            	// Manually define a comma-separated string
            	string searchBookList = "בראשית - עם ניקוד,בראשית - עם טעמים,בראשית - ללא ניקוד,בראשית - רש''י,בראשית - רש''י (ב),בראשית - שפתי חכמים,בראשית - רמב''ן,בראשית - תרגום יונתן,בראשית - אור החיים,בראשית - אבן עזרא,בראשית - בעל הטורים,בראשית - תרגום אונקלוס,בראשית - ספורנו,בראשית - כלי יקר,בראשית - דעת זקנים,מדרש רבה - חומש בראשית,מדרש תנחומא - בראשית,ילקוט שמעוני - בראשית,חק לישראל - בראשית,חק לישראל - בראשית  (ט)"; // Replace with your list of book names
            
            	// Split the comma-separated string into a lookup of book names
            	ILookup<string, string> bookNamesFilter = searchBookList.Split(',')
            		.ToLookup(bookName => bookName);
            
            	// Assuming filePaths is a list of file paths
                    List<string> filePaths = new List<string>
                    {
                        "בראשית - עם ניקוד",
            "בראשית - עם טעמים",
            "בראשית - ללא ניקוד",
            "בראשית - רש''י",
            "בראשית - רש''י (ב)",
            "בראשית - שפתי חכמים",
            "בראשית - רמב''ן",
            "בראשית - תרגום יונתן",
            "בראשית - אור החיים",
            "בראשית - אבן עזרא",
            "בראשית - בעל הטורים",
            "בראשית - תרגום אונקלוס",
            "בראשית - ספורנו",
            "בראשית - כלי יקר",
            "בראשית - דעת זקנים",
            "מדרש רבה - חומש בראשית",
            "מדרש תנחומא - בראשית",
            "ילקוט שמעוני - בראשית",
            "חק לישראל - בראשית",
            "חק לישראל - בראשית  (ט)",
            "שמות  -עם ניקוד",
            "שמות  -עם טעמים",
            "שמות  - ללא ניקוד",
            "שמות - רש''י",
            "שמות - רש''י (ב)",
            "שמות - שפתי חכמים",
            "שמות - רמב''ן",
            "שמות - תרגום יונתן",
            "שמות - אור החיים",
            "שמות - אבן עזרא",
            "שמות - בעל הטורים",
            "שמות - תרגום אונקלוס",
            "שמות - ספורנו",
            "שמות - כלי יקר",
            "שמות - דעת זקנים",
            "מדרש רבה - חומש שמות",
            "מדרש תנחומא - שמות",
            "ילקוט שמעוני - שמות",
            "חק לישראל - שמות",
            "חק לישראל - שמות  (ט)",
            
                        // Add more file paths as needed
                    };
            
            	foreach (string filePath in filePaths)
                    {
            		bool containsBook = bookNamesFilter
            			.Any(group => group.Any(bookName => filePath.Contains(group.Key)));
            
            		if (containsBook)
            		{
            			Console.WriteLine($"File '{filePath}' contains at least one of the book names.");
            		}
            	}
            }
            

            גמ"ח מידע מחשבים ואופיס

            תגובה 1 תגובה אחרונה
            0
            • dovidD מחובר
              dovidD מחובר
              dovid ניהול
              כתב ב נערך לאחרונה על ידי
              #7

              מה פתאום להביא את כל הקוד?? גם ככה הבאת מידי... גם שינית את הקוד משני המקרים וגם יש שמה הרבה הבלים של נסיונות, חבל, למה לא לכתוב פה מה צריך.
              אתה לא יכול לומר "יש לי טקסט A ואני רוצה לבדוק אם הוא אחד מהאלמנטים שמופיעים בB עם פסיק ביניהם"?
              לפי מה שהבנתי ממך, אתה צריך לכתוב קוד כזה:

               bool exsist = Properties.Settings.Default.searchBookList.Split(',').Any(x => x == filepath);
              

              Lookup עושה משהו אחר מlist (הוא מקבץ פריטים לפי ערכם או לפי פרמטר נבחר) והוא לא יותר מהר ממנה, ושניהם מיותרים לצורך שלך.

              הקוד שלך נראה כמו של אחד שלא שמע על המושג פונקציה/פרוצדורה מימיו, וזה מאוד מקשה עליך לעבוד.
              אתה צריך להתרגל לחלק את הקוד לפיסות קטנות, שעל כל פיסה יש תפקיד מוגדר וסגור. את שיתוף המידע בין הפיסות עושים או עם שדות/מאפיינים משותפים במחלקה (OOP).

              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

              בכל נושא אפשר ליצור קשר dovid@tchumim.com

              pcinfogmachP תגובה 1 תגובה אחרונה
              1
              • dovidD מחובר
                dovidD מחובר
                dovid ניהול
                כתב ב נערך לאחרונה על ידי dovid
                #8

                רק כעת אני מבין מהקוד מהlinqpad מה אתה מתכוון יותר מהיר, כי אתה בודק על פני הרבה ערכים ולא רק אחד.
                מה שיותר מהיר זה אכן Dictionarry אבל במקרה שלך שזה רק מפתחות ללא ערכים אז משתמשים בhashSet.
                ניכר שאתה משתמש הרבה עם בינה מלאכותית..

                מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                בכל נושא אפשר ליצור קשר dovid@tchumim.com

                תגובה 1 תגובה אחרונה
                2
                • dovidD מחובר
                  dovidD מחובר
                  dovid ניהול
                  כתב ב נערך לאחרונה על ידי dovid
                  #9

                  הנה קוד עם HashSet:

                  static void Main(string[] args)
                  {
                      string searchBookList = "בראשית - עם ניקוד,בראשית - עם טעמים,בראשית - ללא ניקוד,בראשית - רש''י,בראשית - רש''י (ב),בראשית - שפתי חכמים,בראשית - רמב''ן,בראשית - תרגום יונתן,בראשית - אור החיים,בראשית - אבן עזרא,בראשית - בעל הטורים,בראשית - תרגום אונקלוס,בראשית - ספורנו,בראשית - כלי יקר,בראשית - דעת זקנים,מדרש רבה - חומש בראשית,מדרש תנחומא - בראשית,ילקוט שמעוני - בראשית,חק לישראל - בראשית,חק לישראל - בראשית  (ט)"; // Replace with your list of book names
                      var bookNamesFilter =  searchBookList?.Split(',').ToHashSet();
                  
                      var filePaths = new List<string>
                          {
                              "בראשית - עם ניקוד",
                  "בראשית - עם טעמים",
                  "בראשית - ללא ניקוד",
                  "בראשית - רש''י",
                  "בראשית - רש''י (ב)",
                  "בראשית - שפתי חכמים"
                          };
                  
                      if(bookNamesFilter != null)
                          foreach (string filePath in filePaths)
                          {
                              if (bookNamesFilter.Contains(filePath))
                                  Console.WriteLine($"File '{filePath}' contains at least one of the book names.");
                          }
                  }
                  

                  מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                  בכל נושא אפשר ליצור קשר dovid@tchumim.com

                  pcinfogmachP תגובה 1 תגובה אחרונה
                  1
                  • pcinfogmachP מנותק
                    pcinfogmachP מנותק
                    pcinfogmach
                    השיב לdovid ב נערך לאחרונה על ידי
                    #10

                    @dovid כתב בבקשת עזרה עם קוד בc#:

                    if (searchBookList.Contains(filePath))

                    לא הבנתי שורה זו כי כאן חזרת לstring המקורי לכאורה אז היכן אני משתמש בhashset

                    גמ"ח מידע מחשבים ואופיס

                    תגובה 1 תגובה אחרונה
                    1
                    • dovidD מחובר
                      dovidD מחובר
                      dovid ניהול
                      כתב ב נערך לאחרונה על ידי dovid
                      #11

                      צודק, טעיתי, תחליף את המילה searchBookList בbookNamesFilter.

                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

                      תגובה 1 תגובה אחרונה
                      1
                      • dovidD מחובר
                        dovidD מחובר
                        dovid ניהול
                        כתב ב נערך לאחרונה על ידי
                        #12

                        גם שני שורות מעל יש להחליף כנ"ל.

                        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                        בכל נושא אפשר ליצור קשר dovid@tchumim.com

                        תגובה 1 תגובה אחרונה
                        1
                        • pcinfogmachP מנותק
                          pcinfogmachP מנותק
                          pcinfogmach
                          השיב לdovid ב נערך לאחרונה על ידי
                          #13

                          @dovid כתב בבקשת עזרה עם קוד בc#:

                          הקוד שלך נראה כמו של אחד שלא שמע על המושג פונקציה/פרוצדורה מימיו, וזה מאוד מקשה עליך לעבוד.
                          אתה צריך להתרגל לחלק את הקוד לפיסות קטנות, שעל כל פיסה יש תפקיד מוגדר וסגור. את שיתוף המידע בין הפיסות עושים או עם שדות/מאפיינים משותפים במחלקה (OOP).

                          תודה על ההערה אני מכיר את המושג פשוט התעצלתי אתה צודק. במאה אחוז.

                          אגב שאלה האם פיצול קוד ארוך להרבה חלקים עלול להאט את הקוד (כי למעשה עכשיו יש קצת יותר שורות בקוד מאם אילו הכל היה בתוך קוד אחד)

                          גמ"ח מידע מחשבים ואופיס

                          תגובה 1 תגובה אחרונה
                          1
                          • dovidD מחובר
                            dovidD מחובר
                            dovid ניהול
                            כתב ב נערך לאחרונה על ידי
                            #14

                            עלות הזמן לא נמדדת בשורות.
                            לקריאה לפונקציה יש עלות מקרוסקופית תיאורטית, תשאיר את זה למדעני טילים.
                            בתכלס מי שמשתמש עם פונקציות הקוד שלו מהיר יותר כי כפועל יוצא הוא פשוט כותב קוד טוב יותר 🙂

                            מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                            בכל נושא אפשר ליצור קשר dovid@tchumim.com

                            תגובה 1 תגובה אחרונה
                            6

                            בא תתחבר לדף היומי!
                            • התחברות

                            • אין לך חשבון עדיין? הרשמה

                            • התחברו או הירשמו כדי לחפש.
                            • פוסט ראשון
                              פוסט אחרון
                            0
                            • דף הבית
                            • קטגוריות
                            • פוסטים אחרונים
                            • משתמשים
                            • חיפוש
                            • חוקי הפורום