עבור לתוכן

שאלה ב-C#

Featured Replies

פורסם

כן סליחה, זה בגלל ה - הפלוס-שווה שרשמתי.

תערוך ל-

line = line + " ";

פורסם
  • מחבר

אחלה הרבה תודה יש רק בעיה שאם אני מכניס טקסט למשל test ty, ttt

אז התוצאה מתקבלת בסדר אבל יש רווח בין שורה לשורה:

test

ty

ttt

אבל אני רוצה כבר לנסות ולהתגבר על זה לבד.

הרבה תודה !

פורסם

רמז: תערוך את משפט ה- else שלך ל- else if ותוסיף תנאי. שמחתי לעזור. בהצלחה.

פורסם
  • מחבר

לא ממש הבנתי מה הבעיה שלי, אם אני מוסים IF ELSE הוא לא מדפיס לי כלום



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


namespace PrintWordWordFromText
{
class Program
{
static void Main(string[] args)
{
//read text from user
Console.Write("Enter Text: ");
string line = Console.ReadLine();


//define array
string[] Words = new string[100];


//define temp
string temp = "";


int WordIndex = 0;


line = line + " ";


while (line.Length != 0)
{
for (int i = 0; i < line.Length; i++)
{
//we have a regular character - part of a word
if (line[i] != ' ' & line[i] != ' ' & line[i] != ',' & line[i] != '.' & line[i] != '$')
{
temp += line[i];
}
//special characters
else if (line[i] == ' ' || line[i] == ' ' || line[i] == ',' || line[i] == '.' || line[i] == '$')
{

}
else
{
Words[WordIndex] = temp;
WordIndex++;
temp = "";
}
}


line = Console.ReadLine();
}


for (int i = 0; i < WordIndex; i++)
{
Console.WriteLine(Words[i]);
}


Console.ReadLine();
}
}
}

פורסם

תסתכל על התשובה שרשמתי הפתרון לכך נמצא שם. או שלחלופין אתה יכול לנסות להבין מה קורה.

זה מדפיס לך שורות ריקות כי ברגע שיש לך אחד מהתווים המיוחדים פעמים רצוף למשל: ., (נקודה ופסיק)

אז האלגוריתם יכנס פעמים רצופות אל משפט ה - ELSE בפעם הראשונה זה יהיה עם תוכן במשתנה TEMP ובפעם השניה הוא יהיה מאופס ולכן תיכנס שורה ריקה אל תוך המערך ולאחר מכן גם תודפס כשורה ריקה. אותו הדבר יקרה גם אם הקלט יתחיל באחד מהתווים המיוחדים.

עם נסתכל על הדוגמא שרשמת: test ty, ttt

זה קרה בגלל הרווח הכפול לאחר test ובגלל הפסיק רווח לאחר ה- ty.

עכשיו, בתקווה שהבעיה יותר ברורה, נסה שנית לפתור אותה.

פורסם
  • מחבר

ניסיתי לשים ב-if else פקודת break ככה שאם יבוא לי תו מיוחד הוא ישר יקפוץ למעלה ויבדוק את התו הבא אבל זה לא קורה ואני לא מבין למה, אולי בגלל ה-else שיש בהמשך ?

פורסם

כבר רשמתי לך איפה התשובה נמצאת למה אתה ממשיך לשאול את אותה שאלה?!

פורסם
  • מחבר

כי אני לא מבין את זה ! (חשבתי שכן)

פורסם

לא מבין מה?? את התשובה??

הלוגיקה שאתה מנסה לפתור בה את הבעיה היא לא נכונה. אז למה אתה לא מסתכל בפתרון ומנסה להבין משם מה קורה :facepalm: .

בשביל מה כתבתי אותו עם אתה אפילו לא טורח להסתכל בו :nixweiss: .

פורסם
  • מחבר

ניסיתי אבל לא ממש הלך לי, אני עובד עם דיבגינג ועובר שורה שורה ורואה מה קורה אבל לא מסתדר לי הפתרון

פורסם

או בוי...

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

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


namespace PrintWordWordFromText
{
class Program
{
static void Main(string[] args)
{
do
{
//read text from user
String line = "", eof ="", temp = "";
Console.Write("Enter Text: ");
while (true)
if ((eof = Console.ReadLine()) != "")
line += eof + " ";
else
break;


string[] Words = new string[100];
int wordsIndex = 0;

for (int i = 0; i < line.Length; i++)
{
//We have a regular Character - part of a word


if (line[i] != ' ' & line[i] != ',' & line[i] != '.' & line[i] != '$')
temp += line[i];
else if (temp != "")
{
Words[wordsIndex] = temp;
wordsIndex++;
temp = "";
}
}

Console.WriteLine("You have enterd the following words:");
for (int i = 0; i < wordsIndex; i++)
Console.WriteLine(Words[i]);

} while (true);

}
}
}

פורסם
  • מחבר

אוקיי תודה רבה רק עכשיו ראיתי שהטעות שלי הייתה שבמקום temp שמתי line

ארכיון

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

דיונים חדשים