תרגיל ב-C# - הצגת סטרינג - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

תרגיל ב-C# - הצגת סטרינג


moskitos

Recommended Posts

אני אמור לקרוא סטרינג עם סימני שאלה ולהציג רק את הסטרינג ויש לי בעיית Index was outside the bounds of the array.



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace TextWith
{
class Program
{
static void Main(string[] args)
{
//this program got text with '?' and print the text without the '?'


//read line of text
string line = Console.ReadLine();
string[] words = new string[100];
string word = "";


for (int i = 0; i < line.Length; i++)
{
//we have regolar character without '?'
if (line[i] != '?')
{
word += line[i];
}
}


for (int i = 0; i < line.Length; i++)
{
Console.Write(word[i]);
}


Console.ReadLine();
}
}
}

קישור לתוכן
שתף באתרים אחרים


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace TextWith
{
class Program
{
static void Main(string[] args)
{
//this program got text with '?' and print the text without the '?'


//read line of text
String line = Console.ReadLine();
String word = "";

for (int i = 0; i < line.Length; i++)
//we have regolar Character without '?'
if (line[i] != '?')
word += line[i];

Console.Write(word);
Console.ReadLine();
}
}
}

קישור לתוכן
שתף באתרים אחרים

משמעות השגיאה שקיבלת היא שאתה מנסה לגשת למקום במערך word שלא נמצא בתחום של המערך הזה.

בלולאה האחרונה שאתה אתה רץ על הקלט שקיבלת מהמשתמש (line).

מכיוון ש Line מכיל יותר תווים מ word ה i שלך חורג מהגודל המקסימלי של word.

אתה צריך לרוץ מ 0 עד word.length וכך אתה בטוח לא תחרוג מהמערך.

string זה למעשה מערך של char, זה הכל.

קישור לתוכן
שתף באתרים אחרים

כי line הוא מערך גדול יותר שמכיל גם את תווי הסימן שאלה שהשמטת במערך word (שלכן הוא קצר יותר). תהיה חריגה ברגע ש i ישמש כאינדקס מעבר לגבולות המערך word. הגדרת את הלולאה לרוץ מס' פעמים כגודל המערך line כשבפועל היית צריך להריץ אותו כגודל המערך word.

קישור לתוכן
שתף באתרים אחרים

אפשר בבקשה הסבר מה הפונקציה הזו עושה ואיך אני רושם אותה ?

בוא נניח שיש לי תרגיל שבוא אני בקלט מכניס שני סטרינגים:

הראשון זו מילה ראשונה למשל MOSHE והשנייה זה סטרינג SHFMMOSHEGFTY

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

אני מבין שאני צריך לבדוק אות אות ולהשוות את המילה MOSHE לסטרינג הארוך ולראות אם היא מופיעה אבל יש פה בעיה קטנה, אם למשל אני משווה אות אות אז אחרי האות M הראשונה אני מקבל עוד M ואז פוסל את הסטרינג למרות שהמילה בסופו של דבר כן מופיעה במלואה, איך אני יכול לבדוק שהסטרינג כן מכיל את המילה הראשונה ?

אולי אפשר להכניס את המילה MOSHE למערך ואז מהסטרינג SHFMMOSHEGFTY ליצור מערך\סטרינג מלכתכילה בגודל של המילה MOSHE ואז להשוות ?

קישור לתוכן
שתף באתרים אחרים

אפשר בבקשה הסבר מה הפונקציה הזו עושה ואיך אני רושם אותה ?

איזה פונקיצה ?! על מה אתה מדבר? איבדת אותי :s05: STRING זה לא פונקציה וכבר הסבירו לך. תמקד את השאלה שלך, או שתפתח ספר ותתחיל לקרוא.

בוא נניח שיש לי תרגיל שבוא אני בקלט מכניס שני סטרינגים:

הראשון זו מילה ראשונה למשל MOSHE והשנייה זה סטרינג SHFMMOSHEGFTY

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

אני מבין שאני צריך לבדוק אות אות ולהשוות את המילה MOSHE לסטרינג הארוך ולראות אם היא מופיעה אבל יש פה בעיה קטנה, אם למשל אני משווה אות אות אז אחרי האות M הראשונה אני מקבל עוד M ואז פוסל את הסטרינג למרות שהמילה בסופו של דבר כן מופיעה במלואה, איך אני יכול לבדוק שהסטרינג כן מכיל את המילה הראשונה ?

אולי אפשר להכניס את המילה MOSHE למערך ואז מהסטרינג SHFMMOSHEGFTY ליצור מערך\סטרינג מלכתכילה בגודל של המילה MOSHE ואז להשוות ?

אתה משתמש בשיטה:

str1.IndexOf(str2)

זה יתן לך את האינדקס של תחילת התת מחרוזת str2 במחרוזת str1. במידה וזה לא קיים השיטה תחזיר 1-.

קישור לתוכן
שתף באתרים אחרים

אין כמו ללמוד מקוד (יכולת לנסות זאת בעצמך).



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace T200
{
class Program
{
static void Main(string[] args)
{


string str1 = "string and substrings how they work and how to use IndexOf Metod";
string str2 = "and";

Console.WriteLine(str1.IndexOf(str2));

str2 = "sub";

Console.WriteLine(str1.IndexOf(str2));

str2 = "In";

if (str1.IndexOf(str2) != -1)

Console.WriteLine(str1.IndexOf(str2));

str2 = "string not found";

Console.WriteLine(str1.IndexOf(str2));

if (str1.IndexOf(str2) != -1)

Console.WriteLine(str1.IndexOf(str2));
else
Console.WriteLine("string in str1 dosn't contain substring in str2: \"{0}\"" , str2);


Console.ReadLine();

}
}
}

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...