פורסם 2011 במאי 2214 שנים אני אמור לקלוט מספר ולהציג אותו בהקסדצימלי.הצלחתי לעשות את התוכנית אבל יש לי בעיה להעביר את המספרים בסוף לאותיות, דוגמא:אם אני מכניס את המספר 125 אני אמור לקבל 7D אבל אני לא המרתי את ה-13 שאני מקבל ל-D אז זה מציג לי אותו כ-713, השאלה שלי היא איך אחרי שאני קולט את כל הספרות למערך אני יכול להגיד למערך שאם למשל באינדקס i=2 יש את המספר 10 אז שיכניס לתוכו את A ?אני אמור להשתמש בסטרינג או משהו ?using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace T200{ class Program { static void Main(string[] args) { int num = int.Parse(Console.ReadLine()); int count = 0; //define array int[] hexadecimal = new int[10]; for (int i = 0; i < 10; i++) { if (num!=0) { hexadecimal[i] = num % 16; num = num / 16; count++; } } //preant all numbers for (int i = 0 ; i < count ; i++) { Console.Write(hexadecimal[count-1-i]); } Console.ReadLine(); } }}
פורסם 2011 במאי 2214 שנים אתה יכול לבנות מערך של char בגודל 16 ולהכניס לתוכו את כל התווים מ-0 עד F, כל אחד במיקום שלו... ככה שהתא במקום 5 יכיל '5' והתא במקום 13 יכיל 'D'.ואז, עבור כל ספרה בתוצאה אתה מציג את התו במערך.
פורסם 2011 במאי 2214 שנים מחבר עדיין לא למדנו את מה שאמרת אז אני מתאר לעצמי שאני אמור לפתור את זה בכלים שלמדנו בנתיים, לי הקוד יצא בסדר חוץ מהאותיות שחסרות לי אבל אין מצב ליצור איזה משתנה ולקרוא לו למשל A ואם יוצא לי במערך 10 פשוט להחליף אותו ?ואם לא איך אני יוצר מערך כמו שאמרת ?איך אני רושם את זה ?עריכה:טוב אז יצרתי לנסיון משתנה CHAR הכנסתי לתוכו את D ואחרי קליטת כל המספרים למערך אמרתי if (hexadecimal[i] == 13) { hexadecimal[i] = ch; }using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication3{ class Program { static void Main(string[] args) { int num = int.Parse(Console.ReadLine()); int count = 0; char ch = 'D'; //define array int[] hexadecimal = new int[10]; for (int i = 0; i < 10; i++) { if (num != 0) { hexadecimal[i] = num % 16; num = num / 16; count++; if (hexadecimal[i] == 13) { hexadecimal[i] = ch; } } } //preant all numbers for (int i = 0; i < count; i++) { //if (hexadecimal[i] == 13) //{ // hexadecimal[i] = ch; //} Console.Write(hexadecimal[count - 1 - i]); } Console.ReadLine(); } }}לפני שעשיתי את זה כמו שאמרתי אם הקלט שלי היה 125 אז קיבלתי 713 ועכשיו אחרי מה שעשיתי אני מקבל 768, אין לי מושג מאיזה ה-68 האלה הגיעו לי ואם בכלל מה שעשיתי מותר
פורסם 2011 במאי 2214 שנים תנסה ליצור פונקציה שמקבלת ערך מ- 0 ועד 15, ומחזירה את התו שמציין את הערך ההקסדצימלי שלו.
פורסם 2011 במאי 2214 שנים מערך חדש בעל 15 מקומותVבכל מקום תגדיר תו שיתאים לבסיס 16Vאת התוצאה של החילוק תציב במציין המערך הזה ותשלח אותו להדפסהואת כל זה אתה יכול לעשות בלולאה הראשונה ...
פורסם 2011 במאי 2314 שנים הבעיה בקוד שלך היא שהמערך של התוצאה הוא int, בעוד חלק מהתווים שאתה צריך להציג הם char...68 זה הערך המספרי של התו 'D' (ערך אסקי), ולכן זה מה שנכנס לך למערך (הקומפיילר המיר לך אוטומטית מ-CHAR ל-INT).מה שאתה צריך לעשות זה דבר כזה:אחרי שאתה יוצר את המערך של התוצאה (המערך hexadecimal), תיצור מערך נוסף מטיפוס char, ותעביר אליו את הערכים המספריים של כל ספרה.משהו כזה:for (i=0; i<16; i++) newarray[i] = hex[hexadecimal[i]];hex זה המערך שדיברתי עליו בתגובה הקודמת.ובקשר ליצירה של המערך... אתה פשוט נותן לו ערכים התחלתיים... כמו שבניסיון שלך כתבת char ch='D', תעשה אותו דבר רק עם מערך וכל התווים מ-0 עד F.
פורסם 2011 במאי 2714 שנים using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace T200{ class Program { static void Main(string[] args) { int num = int.Parse(Console.ReadLine()); int reminder = 0; string hex = ""; do { reminder = num % 16; switch (reminder) { case 10: hex += "A"; break; case 11: hex += "B"; break; case 12: hex += "C"; break; case 13: hex += "D"; break; case 14: hex += "E"; break; case 15: hex += "F"; break; default: hex += reminder; break; } num = num / 16; } while (num != 0); //preant all numbers for (int i = 0; i < hex.Length; i++) Console.Write(hex[hex.Length-1-i]); Console.ReadLine(); } }}
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.