PDA

View Full Version : مبتدی: اشکال



h_zamani
چهارشنبه 04 آذر 1388, 23:34 عصر
سلام..من چند تا اشکال تو این دو تا برنامم داشتم..مشکل اولین برنامم اینه که نمیدونم چطور باید به کامپایلر بفهمونم عدد n ای که در متد mylinearsearch هست همون n ای هست که در متد void Main از کابر میگیریم..اینم برنامش:


staticvoid Main(string[] args)
{
int n;
Console.Write("how many number:");
n = Convert.ToInt32(Console.ReadLine());int[] myarray;
myarray = newint[n];for (int i = 1; i <= n; ++i)
{
Console.WriteLine("enter number:");
int a = Convert.ToInt32(Console.ReadLine());}
Console.WriteLine("Enter number for searching:");
int k = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("the i of{0} in the unsorted listL{1}",k,mylinearsearch(myarray,k));}
publicstaticint mylinearsearch(int [] myarray,int k)
{

for (int i=1;i<=n;++i)

if(myarray[i]==k)

return i;
return -1;
}

مشکل این یکی هم نمیدونم چیه که بعد از گرفتن آخرین مقدار آرایه یهو ارور میده:

static void Main(string[] args)
{
byte n;
float[] scores;
float sum = 0, avg, min, max;
Console.Write("how many number:");
n = Convert.ToByte(Console.ReadLine());
scores = new float[n];
Console.WriteLine("enter the scores between 0 until 20");
for (byte i = 1; i <= n; ++i)
{
Console.Write("enter the score of student({0}):", i);
scores[i] = Convert.ToSingle(Console.ReadLine());
sum += scores[i];
}
avg = sum / n;
max = min = scores[0];
for (int i = 0; i <= n; ++i)
{
if (scores[i] < min)
min = scores[i];
else
if (scores[i] > max)
max = scores[i];
}
Console.WriteLine("sum:{0}\naverag:{1}\nmim:{2}\nmax:{3}", sum, avg, min, max);
Console.ReadKey();
}

reza_stb2002
پنج شنبه 05 آذر 1388, 00:01 صبح
سلام
اگر شما n را به عنوان یه ورودی تابع اضافه کنی مشکل حل میشه اینجوری



Console.WriteLine("the i of{0} in the unsorted listL{1}", k, mylinearsearch(myarray, k,n));
}
public static int mylinearsearch(int[] myarray, int k,int n)
{

for (int i = 1; i <= n; ++i)

if (myarray[i] == k)

return i;
return -1;
}


برنامه بالا یه مشکل دیگه داره

for (int i = 1; i <= n; ++i)

if (myarray[i] == k)آدرس آرایه از صفر تا یکی کمتر از طول آرایه میباشد وبه اینصورت اصلاح میشود

for (int i = 0; i <= n-1; ++i)

if (myarray[i] == k -------------------------------------------------------------
مشکل برنامه دوم
همون مسئله آدرس آرایه هست و به این صورت اصلاح میشه

for (byte i = 0; i <= n-1; ++i)
{
Console.Write("enter the score of student({0}):", i);
scores[i] = Convert.ToSingle(Console.ReadLine());
sum += scores[i];
}
avg = sum / n;
max = min = scores[0];
for (int i = 0; i <= n-1; ++i)
{
if (scores[i] < min)
min = scores[i];
else
if (scores[i] > max)
max = scores[i];
}در پناه مولا باشید
یا حق

sky_in_iran
پنج شنبه 05 آذر 1388, 00:12 صبح
سلام دوست عزيز
براي مشكل اول دوست خوبمون گفت در مورد مشكل دوم بازم همونجور كه دوستمون گفت هستش آرايه ها در C#‎ از ايندكس 0 شرو ميشن شما تو دوجا بايد تغيير بدي يعني تو شرط for اينم درستش تو كد خودشما


publicstaticvoid Main(string[] args)
{
byte n;
float[] scores;
float sum = 0, avg, min, max;
Console.Write("how many number:");
n = Convert.ToByte(Console.ReadLine());
scores = newfloat[n];
Console.WriteLine("enter the scores between 0 until 20");
for (byte i = 0; i < n; ++i)
{
Console.Write("enter the score of student({0}):", i);
scores[i] = Convert.ToSingle(Console.ReadLine());
sum += scores[i];
}
avg = sum / n;
max = min = scores[0];
for (int i = 0; i < n; ++i)
{
if (scores[i] < min)
min = scores[i];
else
if (scores[i] > max)
max = scores[i];
}
Console.WriteLine("sum:{0}\naverag:{1}\nmim:{2}\nmax:{3}", sum, avg, min, max);
Console.ReadKey();
}

sky_in_iran
پنج شنبه 05 آذر 1388, 00:19 صبح
البته راه حل براي انجام اين كار زياده جوابي كه من يا دوستان ميدن براي رفع خطايه كد اگر تازه شروع به كار كردي اين و خوب خوب خوب به ذهن بسپار اولين راه بهترين راه نيست و تنها ترين راهم نيست

hamidsolat
پنج شنبه 05 آذر 1388, 00:21 صبح
برای مشکل اول دو راه داری یا باید n با یه پارامتر دیگه به mylinearsearch بفرستی یا توی حلقهfor بگی myarray.Length
مشکل دوم اینه به جای i++باید بگی ++i
ضمنا در اخر برنامه ات Console.Read(); رو بنویس تا بعد از اجرا، پنجره بسته نشه تا بتونی خروجی رو ببینی
من برنامه اول رو برات درست کردم
static void Main(string[] args)
{
int n;
Console.Write("how many number:");
n = Convert.ToInt32(Console.ReadLine());
int[] myarray;
myarray = new int[n];
for (int i = 0; i < n; i++)
{
Console.WriteLine("enter number:");
myarray[i] = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine("Enter number for searching:");
int k = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("the i of {0} in the unsorted listL{1} ", k, mylinearsearch(myarray, k));
Console.Read();
}
public static int mylinearsearch(int[] myarray, int k)
{

for (int i = 1; i <= myarray.Length; i++)

if (myarray[i] == k)
return i;
return -1;
}