Параметры обьектов

  • Автор темы kurzon
  • Дата начала
K

kurzon

#1
Как создать масив обьектов и запихнуть в параметры два значения?


Массив записей структура которого автор, год издания.


Код:
 class Bookss
{
private string author;  
public int year;
public Bookss(string a, int b) 
{	  author = a;	  year = b;  }
public void PrintInfo()
{
Console.WriteLine("Название книги :{0}, Год :{1} ", author, year);
}
}
class Teenager
{
private static Random r = new Random();
private static int GetRamdomNumber(short upperLimit)
{ return r.Next(upperLimit); }
public static string Complain()
{
string[] messages = new string[6] { "Троесент!", "Ватсон!", "Фаронов!", "Шилд!", "Агуров!", "Глинський!" };
return messages[GetRamdomNumber(5)];
}
}
class Metod
{
static public void otobrObject(params object[] lists)
{
for (int i = 0; i < lists.Length; i++)
{
if (lists[i] is Bookss)
((Bookss)lists[i]).PrintInfo();
else
Console.WriteLine(lists[i]);
}
Console.WriteLine("Нажмить на Ентер");
string stroc=Console.ReadLine();
}
}
class structions
{
public static void Main()
{
string a;
int b;
int i,j,x, size=10;

Random c = new Random();
Bookss book = new Bookss(a,b);


for (i = 0; i < size; i++)
{

a = Teenager.Complain();
b = c.Next(2007);
book = new Bookss(a, b); 
book.PrintInfo();


}

}
}
}
 
K

kurzon

#2
Я уже некоторые ошибки исправил.
Остались только две ошибки:

Error 3 Use of unassigned local variable 'a'
Error 4 Use of unassigned local variable 'b'
 
P

Pasha

#3
Для: kurzon
Ну исправь и эти две. Ты используешь переменные a и b без инициализации.
 
K

kurzon

#5
Код:
 Console.ReadLine();

for (j = 0; j < size; j++)
{
for (i = 1; i < size; i++)
{
if (book.year[i - 1] > book.year[i])
{
x = book.year[i - 1];
book.year[i - 1] = book.year[i];
book.year[i] = x;


}
}
}
Console.WriteLine("Cортованый масив");

for (i = 1; i < size; i++)
{
book.PrintInfo();
}


А в етом куске программы сместо book.year какой тег надо вставить?
 
P

Pasha

#6
Для: kurzon
В этом куске уже ничего не поможет. Потому что тут ты пытаешься сортировать пузырьком год своей книги. book - книга, book.year - год этой книги. Что ты пытаешься сделать строчкой book.year? Достать i-ю цифру года?
 
K

kurzon

#7
Для: kurzon
В этом куске уже ничего не поможет. Потому что тут ты пытаешься сортировать пузырьком год своей книги. book - книга, book.year - год этой книги. Что ты пытаешься сделать строчкой book.year? Достать i-ю цифру года?

А как достучатся до номера книги?
 
P

Pasha

#8
Для: kurzon
Вот этой строчкой ты создаешь один объект "книга".
Код:
Bookss book = new Bookss(a,b);
А тебе нужен массив "книг", насколько я понял, что-то вроде
Код:
Bookss [] books = new Bookss[5];
и тогда ты сможешь добавить/достать из него i-ю книгу:
Код:
books[i] = new Bookss(a,b);
books[i].year = 1999;
 
K

kurzon

#9
2Pasha
Я так думаю что тут нечого не надо изменять, первая часть программы прекрасно работает, если менять чтото в первой части то надо добалять новый метод, а вторая часть надо изменить, она не работает
Ето первая часть, она работает, можеш попробывать.
Код:
using System;
using System.Collections.Generic;
using System.Text;

namespace Sort_Book
{
class Bookss
{
private string author;  
public int year;
public string a;
public int b;
public Bookss(string a, int b) 
{	  author = a;	  year = b;  }
public void PrintInfo()
{
Console.WriteLine("Название книги :{0}, Год :{1} ", author, year);
}
}
class Teenager
{
private static Random r = new Random();
private static int GetRamdomNumber(short upperLimit)
{ return r.Next(upperLimit); }
public static string Complain()
{
string[] messages = new string[6] { "Троесент!", "Ватсон!", "Фаронов!", "Шилд!", "Агуров!", "Глинський!" };
return messages[GetRamdomNumber(5)];
}
}

class structions
{
public static void Main()
{
string a = "GFFGfg";
int b=2;
int i,j,x, size=10;

Random c = new Random();


Bookss book = new Bookss(a,b);


for (i = 0; i < size; i++)
{
a= Teenager.Complain();
b = c.Next(2007);

book = new Bookss(a, b);
book.PrintInfo();

}

}
}

}
А ето вторая и первая часть вместе
Код:
using System;
using System.Collections.Generic;
using System.Text;

namespace Sort_Book
{
class Bookss
{
private string author;  
public int year;
public string a;
public int b;
public Bookss(string a, int b) 
{	  author = a;	  year = b;  }
public void PrintInfo()
{
Console.WriteLine("Название книги :{0}, Год :{1} ", author, year);
}
}
class Teenager
{
private static Random r = new Random();
private static int GetRamdomNumber(short upperLimit)
{ return r.Next(upperLimit); }
public static string Complain()
{
string[] messages = new string[6] { "Троесент!", "Ватсон!", "Фаронов!", "Шилд!", "Агуров!", "Глинський!" };
return messages[GetRamdomNumber(5)];
}
}

class structions
{
public static void Main()
{
string a = "GFFGfg";
int b=2;
int i,j,x, size=10;

Random c = new Random();


Bookss book = new Bookss(a,b);


for (i = 0; i < size; i++)
{
a= Teenager.Complain();
b = c.Next(2007);

book = new Bookss(a, b);
book.PrintInfo();

}

/* 
Console.ReadLine();

for (j = 0; j < size; j++)
{
for (i = 1; i < size; i++)
{
if (book[i - 1] > book.year[i])
{
x = book.year[i - 1];
book.year[i - 1] = book.year[i];
book.year[i] = x;


}
}
}
Console.WriteLine("Cортованый масив");

for (i = 1; i < size; i++)
{
book.PrintInfo();
}
*/
Console.ReadLine();


}
}

}
Если надо изменять первую часть то надо добавить:


Код:
class Metod
{
static public void otobrObject(params object[] lists)
{
for (int i = 0; i < lists.Length; i++)
{
if (lists[i] is Bookss)
((Bookss)lists[i]).PrintInfo();
else
Console.WriteLine(lists[i]);
}
Console.WriteLine("Нажмить на Ентер");
string stroc=Console.ReadLine();
}
}
 
P

Pasha

#10
Для: kurzon
Эх, считай что ты меня убедил.
Код:
using System;

namespace Sort_Book
{
struct Book
{
public Book(string author, int year)
{
this._year = year;
this._author = author;
}

private int _year;

public int Year
{
get { return this._year; }
set { this._year = value; }
}

private string _author;

public string Author
{
get { return this._author; }
set { this._author = value; }
}

public override string ToString()
{
return String.Format("Название книги :{0}, Год :{1}", Author, Year);
}
}

class Teenager
{
private static Random random = new Random();
private static readonly string[] messages = new string[6]
{ 
"Троесент!", 
"Ватсон!", 
"Фаронов!", 
"Шилд!", 
"Агуров!", 
"Глинський!" 
};

public static string Complain()
{
return messages[random.Next(messages.Length)];
}
}

class Program
{
static void PrintBookTitles(Book[] books)
{
foreach (Book book in books)
{
Console.WriteLine(book);
}
}

static void Main(string[] args)
{
Book[] books = new Book[10];
Random random = new Random();

for (int i = 0; i < books.Length; i++)
{
books[i] = new Book(Teenager.Complain(), random.Next(2007));
}

PrintBookTitles(books);

Array.Sort(books, 
delegate(Book a, Book b)
{
return a.Year.CompareTo(b.Year);
});

Console.WriteLine("После сортировки:");

PrintBookTitles(books);
}
}
}
 
K

kurzon

#11
2Pasha большое спасиба.

Не катит задача, надо методом пузырьком?

Мене задали методом сортировка пузырьком ...


Былобы сдорово, если оно сортувала методом пузырьком?
 
P

Pasha

#12
Для: kurzon
Да как два пальца...добавь
Код:
	static class BubbleSort
{
public static void Sort<T>(T[] array, Comparison<T> comparison)
{
for (int i = array.Length - 1; i > 0; i--)
{
for (int j = 0; j < i; j++)
{
if (comparison(array[j], array[j + 1]) > 0)
{
T temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
}
и замени "Array.Sort" на "BubbleSort.Sort".