עבור לתוכן

צריך עזרה בתרגיל ב-C שארפ

Featured Replies

פורסם

אני אמור לכתוב תוכנית שתקבל טקסט מסויים, נק' התחלה של הטקסט ואורך ותציג אותו לדוגמא אני מכניס את המחזורת ABCDEF, נק' ההתחלה שלי היא 2 (מהאות השנייה במחרוזת) ואורך למשל 3 אז אני אמור לקבל את BCD.

יש לי שגיאת קומפילציה שאומרת The name 'text' does not exist in the current context וגם The name 'length' does not exist in the current context ואין לי מושג למה.

אגב אני אמור לכתוב את התוכנית עם שימוש במתודה.



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


namespace T223
{
class Program
{
//define method
static string SubString(string text, int StartPosition, int length)
{
string ResultText = "";


for (int i = StartPosition; i < text.Length; i++)
{
ResultText += text[i];
}


return ResultText;
}


static void Main(string[] args)
{
//read variables from user
Console.WriteLine("Enter Text: ");
int Text = int.Parse(Console.ReadLine());


Console.WriteLine("Enter Start Position: ");
int StartPosition = int.Parse(Console.ReadLine());


Console.WriteLine("Enter Length: ");
int Length = int.Parse(Console.ReadLine());


string Result = SubString(text, StartPosition, length);


Console.WriteLine(Result);


Console.ReadLine();
}
}
}

פורסם

יש חשיבות ל-case (ז"א, שהמשתנה Text הוא לא אותו משתנה כמו text, שבו ה-t הראשונה קטנה).

תחפש בקוד שלך איפה השתמשת במשתנים text ו-length, ואיך בדיוק הגדרת אותם.

פורסם
  • מחבר

במתודה הגדרתי את המשתנים ככה: string text, int StartPosition, int length

ובקריאה למתודה קראתי להם באותה הצורה כי ככה אני אמור לקרוא להם אז לא הבנתי מה לא בסדר אצלי.

פורסם

לשמות של הפרמטרים של המתודה יש חשיבות רק בתוך המתודה.

כשאתה קורא למתודה זה לא משנה מה השמות של הערכים, אלא רק המיקום שלהם (הרי אתה לא חייב להעביר בכלל משתנים עם שמות).

פורסם
  • מחבר

אז הבעיות שיש לי זה רק בגלל שקראתי למתודה עם אותם השמות כמו בהגדרת המתודה ?

פורסם

לא.

הבעיה היא שבקריאה למתודה אתה שולח לה משתנים שלא מוגדרים באותו בלוק של הפונקציה MAIN.

אתה צריך לשלוח את המשתנה Text (שהגדרת ב MAIN)ולא את text שהוא משתנה פורמלי של הפונקציה SUBSTRING שהגדרת בה.

כמו שאמרו לך, השפה היא Case Sensitive.

כנ"ל לגבי Length.

פורסם
  • מחבר

אוקיי רשמתי את המשתנים כמו שרשמתם לי ועכשיו יש לי שגיאה בשורה של הקריאה למתודה:

annot convert from int to string

פורסם

זה כי התבלבלת בשורה הזאת אני מניח:

int Text = int.Parse(Console.ReadLine());

אתה קולט מחרוזת עושה לה המרה למ INT ושומר אותה ב INT... פספוס קטן.

אמור להיות פשוט:

string Text = Console.ReadLine();

בכל מקרה, השגיאה היא כי אתה שולח לפונקציה INT במקום STRING.

פורסם
  • מחבר

כן צודק תודה רבה.

ארכיון

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

דיונים חדשים