עבור לתוכן

עזרה בתרגיל ב-C# - נתקעתי

Featured Replies

פורסם

התרגיל:

Read n and then n numbers. Check if the n numbers make an Arithmetic Series (i.e., the difference between every 2 consecutive numbers is equal). If so, print “Yes”. Otherwise, print “No”.

מה שעשיתי ונתקעתי:

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


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


Console.Write("Enter Number: ");


string stN = Console.ReadLine();
int N = int.Parse(stN);


string stNum1 = Console.ReadLine();
int Num1 = int.Parse(stNum1);


string stNum2 = Console.ReadLine();
int Num2 = int.Parse(stNum1);

int count = 0;
int dif = Num2-Num1;
int difT = dif;


while (count<N)
{
Num2 = Num1;
stNum2 = Console.ReadLine();
Num2 = int.Parse(stNum1);
dif = Num2 - Num1;
count++;
}


Console.ReadLine();
return;
}
}
}











פורסם

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

נ.ב. אין צורך לשים return בסוף ה-main.

פורסם

למה באג בקריאה?

אני מבין שאני צריך לקרוא את NUM2 כי לפני זה אני הופך את NUM2 ל-NUM1

בכל מקרה לא ממש הולך לי בהמשך, ניסיתי ליצור משתנה קראתי לו קבוע והשוואתי אותו בהתחלה ל-DIF אבל אחרי הלולאה איך שאני עושה IF קבוע = DIF אני מקבל שגיאה הוא אומר לי משהו עם POOL ואנ לא מבין מה זה.

פורסם

אבל אתה לא "הופך" את NUM2 ל-NUM1, אתה עושה

NUM2 = NUM1;

כלומר אתה לוקח את הערך שהיה בתוך NUM1 ושם אותו בתוך NUM2, לא להיפך.

חוץ מזה יש לך גם באג בקריאה לתוך NUM2 בלולאה.

אם אתה כותב קוד ומקבל שגיאה אז תגיד איזה קוד כתבת ומה השגיאה במדויק.

פורסם

יש טעות אחרי הקלט של stNum2. אתה מציב שם את הקלט בnum1 בטעות.

חוץ מזה שים לב ששני המספרים הראשונים אתה מקבל לפני תחילת הלולאה, אז הלולאה מתחילה בעצם במספר השלישי, אז תציב בcount 2 ולא 0.

חוץ מזה לא התנית כלום במידה וההבדלים שונים.

פורסם

אותה טעות מופיעה גם בתוך הלולאה, אולי לזה שניצל התכון.

אתה מכניס לnum2 את stNum1, ואת מה שהמשתמש כותב הכנסת לstNum2.

בהצלחה!

פורסם

הנה קוד שעשיתי עובד עם תיקונים והוספות.

לא כל השינויים נצרכים, חלק זה פשוט צורת עבודה שלי:


Console.Write("Enter Number: ");




String stN = Console.ReadLine();
int N = int.Parse(stN);




String stNum1 = Console.ReadLine();
int Num1 = int.Parse(stNum1);




String stNum2 = Console.ReadLine();
int Num2 = int.Parse(stNum2);



int dif = Num2 - Num1;
int difT;
int count =2;

while (count < N)
{
Num1 = Num2;
difT = dif;


stNum2 = Console.ReadLine();
Num2 = int.Parse(stNum2);
dif = Num2 - Num1;
if (dif != difT)
{
break;
}
count++;
}




Console.WriteLine(count==N ? "Yes!" : "No!");
Console.ReadLine();
return;


לא כ"כ "חינוכי" לעשות עבודה במקום השני, אבל לא התאפקתי - גם אני לומד c#.

בהצלחה.

פורסם

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

פורסם

למה? אני מקבל מספר מהמשתמש ומכניס לN, בכל מקרה אני קורא את השתיים הראשונים, ואח"כ אני מפעיל לולאה שקוראת מהשלישי ואילך אם ישנם.

מה לא טוב?

פורסם

תודה על התגובות אני אנסה לבד ואכתוב כאן אם יהיו בעיות.

פורסם

למה? אני מקבל מספר מהמשתמש ומכניס לN, בכל מקרה אני קורא את השתיים הראשונים, ואח"כ אני מפעיל לולאה שקוראת מהשלישי ואילך אם ישנם.

מה לא טוב?

צודק, טעות שלי. הטעות היא רק של פותח הת'רד.

פורסם

אגב מה זה הדבר הזה שאני מקבל בתמונה ?

אני מקבל את זה אם אני לוחץ על משהו באמצע ההרצה של התוכנית

http://i55.tinypic.com/mlr2x0.png

פורסם

תקרא מה השגיאה אומרת: Input String was not in correct format.

דהיינו, הקלט שהזנת לא בפורמט הנכון (כלומר לא ניתן להמירו למספר).

פורסם

הבנתי תודה.

ארכיון

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

דיונים חדשים