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

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

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

קוד C# להמרת מספר למספר עברי

מתוזמן נעוץ נעול הועבר תכנות
5 פוסטים 4 כותבים 613 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • pcinfogmachP מנותק
    pcinfogmachP מנותק
    pcinfogmach
    כתב ב נערך לאחרונה על ידי
    #1

    קוד C# להמרת מספר למספר עברי - מקווה שיהיה שימושי למישהו.

    using System;
    
    public class ClassHebrewNumbering
    {
        public static string ToHebrewNumber(int number)
        {
            if (number < 1)
            {
                throw new ArgumentOutOfRangeException("המספר צריך להיות מעל 1");
            }
    
            string hebrewNumber = "";
    
            while (number >= 400)
            {
                hebrewNumber += "ת";
                number -= 400;
            }
    
            // Handle numbers 100-390
            if (number >= 300)
            {
                hebrewNumber += "ש";
                number -= 300;
            }
            else if (number >= 200)
            {
                hebrewNumber += "ר";
                number -= 200;
            }
            else if (number >= 100)
            {
                hebrewNumber += "ק";
                number -= 100;
            }
    
            // Handle numbers 10-90
            if (number >= 10)
            {
                int tensIndex = (number / 10) - 1; // Subtract 1 to match array indexing
                hebrewNumber += Tens[tensIndex];
                number -= (tensIndex + 1) * 10; // Add 1 back for indexing
            }
    
            // Handle numbers 1-9
            if (number > 0)
            {
                hebrewNumber += Units[number - 1]; // Subtract 1 to match array indexing
            }
    
            hebrewNumber = hebrewNumber.Replace("יה", "טו");
            hebrewNumber = hebrewNumber.Replace("יו", "טז");
    
            //hebrewNumber.Replace("רעב", "ערב");
            //hebrewNumber.Replace("רעד", "עדר");
            //hebrewNumber.Replace("רע", "ער");
            //hebrewNumber.Replace("רצח", "רחצ");
            //hebrewNumber.Replace("תשמד", "תדשם");
            //hebrewNumber.Replace("שמד", "שדמ");
            //hebrewNumber.Replace("שד", "דש");
    
            return hebrewNumber;
        }
    
        private static readonly string[] Units =
       {
            "א", "ב", "ג", "ד", "ה", "ו", "ז", "ח", "ט"
        };
    
        private static readonly string[] Tens =
        {
            "י", "כ", "ל", "מ", "נ", "ס", "ע", "פ", "צ", "ק"
        };
    }
    
    

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

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

      יש אצלי קוד שכולל שני כיוונים, אבל לא מטפל במקרים מיוחדים כמו שדמ:

      public static class HebNumber
      {
          static Dictionary<int, string> HebNumbers = new Dictionary<int, String>
              {
              {400, "ת"},
              {300, "ש"},
              {200, "ר"},
              {100, "ק"},
              {90, "צ"},
              {80, "פ"},
              {70, "ע"},
              {60, "ס"},
              {50, "נ"},
              {40, "מ"},
              {30, "ל"},
              {20, "כ"},
              {19, "יט"},
              {18, "יח"},
              {17, "יז"},
              {16, "טז"},
              {15, "טו"},
              {10, "י"},
              {9, "ט"},
              {8, "ח"},
              {7, "ז"},
              {6, "ו"},
              {5, "ה"},
              {4, "ד"},
              {3, "ג"},
              {2, "ב"},
              {1, "א"},
              };
      
      
          public static int ToNumber(this string numHeb)
          {
              int last = 0;
              int total = 0;
      
              while (numHeb.Length > 0)
              {
                  var next = HebNumbers.Where(v => numHeb.EndsWith(v.Value)).OrderBy(v => v.Key).LastOrDefault();
                  if (next.Key <= last)
                      return -1;
      
                  last = next.Key;
                  total += last;
                  numHeb = numHeb.Remove(numHeb.Length - next.Value.Length);
              }
      
              return total;
          }
      
          public static string ToHebNumber(this int num)
          {
              string result = "";
              while (num > 0)
              {
                  var key = HebNumbers.SkipWhile(pair => pair.Key > num).First();
                  result += key.Value;
                  num-=key.Key;
              }
      
              return result;
          }
      
      }
      

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

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

      תגובה 1 תגובה אחרונה
      3
      • meir lamdanM מנותק
        meir lamdanM מנותק
        meir lamdan
        כתב ב נערך לאחרונה על ידי dovid
        #3
        פוסט זה נמחק!
        תגובה 1 תגובה אחרונה
        0
        • dovidD מנותק
          dovidD מנותק
          dovid ניהול
          כתב ב נערך לאחרונה על ידי dovid
          #4

          @meir-lamdan פה בפורום יש קוד הרבה יותר טוב
          https://tchumim.com/post/1158.

          הקוד שאליו הפנית ואותו תרגמת אינו טוב (למשל, הוא נכשל מעל 999), וגם הוא בכלל לא בC# למרות שהשאלה שם היא על C#.
          אני גם מתפלא למה בחרת בו ולא בקוד של התשובה שהתקבלה שיש לה 5 הצבעות (וענה אותה מישהו עם 111K מוניטין).

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

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

          תגובה 1 תגובה אחרונה
          1
          • Aharon 0A מנותק
            Aharon 0A מנותק
            Aharon 0
            כתב ב נערך לאחרונה על ידי
            #5

            עדיף במקום להכניס תווים בעברית לקוד, להשתמש ב ascii

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

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

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

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