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

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


gshhar

Recommended Posts

התרגיל:

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.

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

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

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

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


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, בכל מקרה אני קורא את השתיים הראשונים, ואח"כ אני מפעיל לולאה שקוראת מהשלישי ואילך אם ישנם.

מה לא טוב?

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

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

ארכיון

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

×
  • צור חדש...