PDA

View Full Version : مشکل با ارایه ها



mtnam1372
یک شنبه 10 اردیبهشت 1391, 10:19 صبح
سلام
من یه کلاس تعریف کردم واسه مشخصات دانشجو بعد ازش یه اریه تعریف کردم و توی یه فور ارایه ها مقدار دهی میشن
اما وقتی میخوام تو یه فور دیگه یکی از متد های اون کلاس رو برای تک تک ارایه ها صدا بزنم میگه نمیشناسم چیکار کنم
کد گویاست کافیه تو ویژوال کپی بشه


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

namespace ConsoleApplication3
{
class mtnam1
{
public string names;
public string minterm;
public string panterm;
public string takalef;
public void aa (){
double t, m, p, nah;
Console.WriteLine(names);
t = Convert.ToDouble(takalef);
m = Convert.ToDouble(minterm);
p = Convert.ToDouble(panterm);
nah = (t * 2) + (m * 3) + (p * 5);
nah = nah / 10;
nah = nah / 5;

Console.WriteLine("nomre nahaee={0}", nah);
}





}



class Program
{
static void Main()
{
s5:
double panterms = 0;
meno:
Console.WriteLine("1.Enter student informations.");
Console.WriteLine("2.Calculating student scores.");
Console.WriteLine("3.Avarage calculating class.");
Console.WriteLine("4.Class grade.");
Console.WriteLine("5.Return menu.");
Console.WriteLine(" 6.Quit.");
string switc = Console.ReadLine();
switch (switc)
{
case "1":
goto s1;
case "3":
goto s3;
case "4":
goto s4;
case "5":
Console.Clear();
goto s5;
case "s2":

goto s2;


}
s1:
mtnam1[] a = new mtnam1[11];
for (int i = 0; i < 10; i++)
{



a[i] = new mtnam1();
Console.WriteLine(" Enter nami and famile");
a[i].names = Console.ReadLine();
Console.WriteLine(" Enter meyanterm");
a[i].minterm = Console.ReadLine();
Console.WriteLine(" panterm");
a[i].panterm = Console.ReadLine();
panterms += Convert.ToDouble(a[i].panterm);
Console.WriteLine(" takalef");
a[i].takalef = Console.ReadLine();



}
Console.ReadLine();

Console.Clear();
goto meno;

s3:
Console.WriteLine("Avarage calculating class={0}", panterms / 10);
Console.WriteLine("enter any key to back meno");


Console.ReadKey();
Console.Clear();
goto meno;
s4:
int avreg = Convert.ToInt32(panterms / 10);
if (avreg >= 17 && avreg <= 20)
Console.WriteLine("Class grade=A");
if (avreg >= 14 && avreg < 17)
Console.WriteLine("Class grade=B");
if (avreg >= 10 && avreg < 14)
Console.WriteLine("Class grade=C");

Console.WriteLine("enter any key to back meno");


Console.ReadKey();
Console.Clear();
goto meno;


s2:
for (int i = 0; i < 1; i++)
{
a[i].aa();
}




}


}
}

esiprogrammer
یک شنبه 10 اردیبهشت 1391, 10:44 صبح
مشکل شما اینه که از goto استفاده کردید و چون ممکنه مستقیما به swtich دومی برید و در اونجا هنوز آرایه a مقداردهی نشده و null است و درنتیجه کامپایلر اجازه نمیده.
البته سعی کنید از goto استفاده نکنید بهتره که متد بزارید.

اما برای اینکه موفقتا مشکلتون حل بشه خط
mtnam1[] a = new mtnam1[11];

رو ببرید بالای دستور Switch

mtnam1372
یک شنبه 10 اردیبهشت 1391, 10:54 صبح
مشکل شما اینه که از goto استفاده کردید و چون ممکنه مستقیما به swtich دومی برید و در اونجا هنوز آرایه a مقداردهی نشده و null است و درنتیجه کامپایلر اجازه نمیده.
البته سعی کنید از goto استفاده نکنید بهتره که متد بزارید.

اما برای اینکه موفقتا مشکلتون حل بشه خط
mtnam1[] a = new mtnam1[11];

رو ببرید بالای دستور Switch



ربطی نداره قربون چشات خودت تست کن

Mahmoud.Afrad
یک شنبه 10 اردیبهشت 1391, 18:10 عصر
چرا ربط نداره. شما حتی امتحان هم نکردید ببینید جواب میده یا نه در صورتی که جواب هم میده.
دلیلش هم اینه که شما در یکی از کیس ها آرایه ای رو تعریف کردید و میخواهید خارج از اون ناحیه ازش استفاده کنید در صورتی که در ناحیه دیگه تعریف نشده است.