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

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

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

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

מתוזמן נעוץ נעול הועבר תכנות
5 פוסטים 4 כותבים 730 צפיות 4 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • 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

            שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.

            נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.

            בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗

            הרשמה התחברות
            תגובה
            • תגובה כנושא
            התחברו כדי לפרסם תגובה
            • מהישן לחדש
            • מהחדש לישן
            • הכי הרבה הצבעות


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

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

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