פורסם 2011 במאי 2914 שנים תתי מחרוזות הפוכות: פתח ויישם בשלבים אלגוריתם הקולט מחרוזות עד לקליטת המחרוזתת the end כל מחרוזת מכילה תת מחרוזות המופרדות בתו 0 עבור כל מחרוזת יש לבנות מחרוזזת חדשה , כך שבכל תת מחרוזת שלה יופיעו התווים בסדר הפוך לסדר הופעתם בתת מחרוזת של המחרוזת המקורית ולהציג אותה כפלט למשל b0$%y0ggg0 תציג b0y%$0ggg0 class Program {public static string nana(string mila){int ziro = 0;int ziro2 = mila.IndexOf("0");string word = mila.Substring(0, ziro);string word2 = word;while (ziro2 != -1){for (int i = ziro; i < word.Length - 1; i++){word[i] = word2[i + word2.Length - 2 - i];}ziro = ziro2 + 1;ziro2 = mila.IndexOf("0", ziro + 1);word = mila.Substring(ziro, ziro2);word2 = word;}}static void Main(string[] args){Console.WriteLine("klot mah");string mila = Console.ReadLine();while (mila == "the end"){Console.WriteLine("ha mahrozet hahafoha hi: {0}", nana(mila));Console.WriteLine("klot mah");mila = Console.ReadLine();}}}} הבעיה פה זה שיש eror בקטע הזה: word[i] = word2[i + word2.Length - 2 - i]; ויש לי עוד שאלה יש איזה תרגיל שהסתבכתי אייתו לגמרי : כתוב אלגוריתם המקבל כקלט מחרוזת שאורכה לפחות 8 תתווים , ומציג כפלט את מספרר תתי המחרוזות הקיימות במחרוזת שאורכן 2-6 תווים ומקימות את התנאי של הפעולה מסעיף א' (מספר הAים שווה למספר הBים) לדוגמא עבור הקלט:abcbbaadaaabbb מספר תתי המחרוזת הוא 8.. ab,bbaa,aabb,aaabbb,cbbaa,cbbaad תודה רבה מראש לכל העוזרים
פורסם 2011 במאי 2914 שנים אין יותר מדי הגיון בקוד שלך... קודם כל, מה המשמעות של המשתנים ziro ו-ziro2? תני להם שמות אינפורמטיביים.השורה הזו:string word = mila.Substring(0, ziro);מוציאה תת-מחרוזת בגודל 0 מתוך mila, כלומר היא פשוט שקולה לדבר כזה:string word = "";השורה שציינת כבעייתית - מה היא אמורה לעשות? בחישוב של האינדקס את מוסיפה את i ואחר כך מחסירה אותו, ככה שבתכל'ס מה שיושב בתוך הסוגריים המרובעים הוא מספר קבוע (word2.Length - 2) שאינו תלוי ב-i.חוץ מזה, לא כל כך ברור מה הדרישה של התרגיל.
פורסם 2011 במאי 2914 שנים מחבר הדוגמא לא יצאה כל כך טוב אל תתייחסו אליה..הכוונה היא עבור הקלט :abc0def0יתקבל הפלט:cba0fed0המשתנה ziro הוא המקום הראשון במחרוזת הגדולה .. שישתנה בהמשךהמשתנה ziro2 הוא המקום הראשון בו מופיע המספר 0 , לאחר מכן אני כאילו גוזרת את התת מחרוזות בין הziro לziro2השורה הבעייתית היא בעצם זאת שאמורה להפוך את התת מחרוזת ולאחר מכןן אני מחפשת את ה0 הבא בתור שהוא יוצר תת מחרוזת חדשה בין ה0 הראשון ל0 השני וכך הלאה
פורסם 2011 במאי 2914 שנים מחבר הערה שאני מקבלת הייאError 1 Property or indexer 'string.this[int]' cannot be assigned to -- it is read
פורסם 2011 במאי 2914 שנים מחבר Indexofsubstringreplaceinsertremoveequalscomparetoאלה הפונקציות היחידת שמותר לי להשתממש ..
פורסם 2011 במאי 2914 שנים הדוגמא לא יצאה כל כך טוב אל תתייחסו אליה..הכוונה היא עבור הקלט :abc0def0יתקבל הפלט:cba0fed0 נדמה שהדוגמה הראשונית היתה יותר טובה ולה גם מתאים התיאור המילולי של הבעיה. "כך שבכל תת מחרוזת שלה יופיעו התווים בסדר הפוך לסדר הופעתם בתת מחרוזת של המחרוזת המקורית ולהציג אותה כפלט"מה שאני מבין זה שיש להציג בסדר הפוך רק את התת מחרוזות שמוגבלות בין שנים אפסים במחרוזת המקורית ואת השאר להשאיר בסדר המקורי דהיינו abc0fed0 כמו בדוגמא שרשמת למעלה b0$%y0ggg0 תציג b0y%$0ggg0 .
פורסם 2011 במאי 2914 שנים פיתרון לתרגיל הראשון כפי שהבנתי אותו ^ . מקרי הקצה נבדקו. את מוזמנת לערוך את התשובה במידה ותהיה מעוניינת להתאים אותה לדוגמא החדשה שהבאת. using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication5{ class Program { public static String nana(String mila) { //variable declaration: tempStr is the new string to bulid into, zeroidx1 holds fire '0' char occurence string tempStr = ""; int zeroIdx1 = mila.IndexOf('0'); //check if no zero or only one is present if so do nothing if (mila.IndexOf('0') == -1 || mila.IndexOf('0', zeroIdx1 + 1) == -1) return mila; //copy first part till first zero in appreance inclusive the zero himself else tempStr = mila.Substring(0, zeroIdx1 + 1); // variable to hold closing zero, zeroIdx1 is reseted int zeroIdx2 = 0; zeroIdx1 = 0; // keep track of last 0 idx int lastIdx = 0; //main loop to reverse the order of substring between two zeros while ((zeroIdx1 = mila.IndexOf('0',zeroIdx1)) != -1) { // initialized zeroIdx2 to hold second 0 index zeroIdx2 = mila.IndexOf('0', zeroIdx1 + 1); // if zeroidex1 isn't the closing 0 if (zeroIdx2 != -1) // reverse the order of substring between two zeros for (int i=zeroIdx2 - 1; i >= zeroIdx1; i--) tempStr += mila[i]; //incerment to get the next 0 in string lastIdx = zeroIdx1; zeroIdx1++; } // copy trailing letters after last closing zero if ((lastIdx + 1) != mila.Length) tempStr += mila.Substring(lastIdx+1); // return to calling function return tempStr; } static void Main(string[] args) { Console.WriteLine("klot mila: (type \"the end\" to exit)"); String mila = Console.ReadLine(); while (mila != "the end") { Console.WriteLine("ha mahrozet hahafoha hi: {0}", nana(mila)); Console.WriteLine("klot mila"); mila = Console.ReadLine(); } } }}using System;לדוגמא עבור הקלט:abcbbaadaaabbb מספר תתי המחרוזת הוא 8.. ab,bbaa,aabb,aaabbb,cbbaa,cbbaad[/q][/q][/q][/q]לא ברור לי מה נדרש בתרגיל. פתרון נוסף ואחר לתרגיל הראשון הפעם לדוגמא השניה שהבאת - פתרון רקרוסי. using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication5{ class Program { public static String recursivefucn(String str) { string tmpStr = ""; if (str.IndexOf('0') != -1) { for (int i = str.IndexOf('0') - 1; i >= 0; i--) { tmpStr += str[i]; } tmpStr += "0"; } else for (int i = str.Length - 1; i >= 0; i--) tmpStr += str[i]; if (tmpStr.Length == str.Length) return tmpStr; tmpStr += recursivefucn(str.Substring(str.IndexOf('0') + 1)); return tmpStr; } static void Main(string[] args) { Console.WriteLine("klot mila: (type \"the end\" to exit)"); String mila = Console.ReadLine(); while (mila != "the end") { Console.WriteLine("ha mahrozet hahafoha hi: {0}", recursivefucn(mila)); Console.WriteLine("klot mila"); mila = Console.ReadLine(); } } }}using System;
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.