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

Тема в разделе ".NET", создана пользователем kurzon, 14 окт 2007.

  1. kurzon

    kurzon Гость

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


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


    Код (Text):
     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();


    }

    }
    }
    }
     
  2. kurzon

    kurzon Гость

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

    Error 3 Use of unassigned local variable 'a'
    Error 4 Use of unassigned local variable 'b'
     
  3. Pasha

    Pasha Гость

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

    kurzon Гость

    Спасиба...
     
  5. kurzon

    kurzon Гость

    Код (Text):
     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 какой тег надо вставить?
     
  6. Pasha

    Pasha Гость

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

    kurzon Гость


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

    Pasha Гость

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

    kurzon Гость

    2Pasha
    Я так думаю что тут нечого не надо изменять, первая часть программы прекрасно работает, если менять чтото в первой части то надо добалять новый метод, а вторая часть надо изменить, она не работает
    Ето первая часть, она работает, можеш попробывать.
    Код (Text):
    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();

    }

    }
    }

    }
    А ето вторая и первая часть вместе
    Код (Text):
    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();


    }
    }

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


    Код (Text):
    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();
    }
    }
     
  10. Pasha

    Pasha Гость

    Для: kurzon
    Эх, считай что ты меня убедил.
    Код (Text):
    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);
    }
    }
    }
     
  11. kurzon

    kurzon Гость

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

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

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


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

    Pasha Гость

    Для: kurzon
    Да как два пальца...добавь
    Код (Text):
        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".
     
  13. kurzon

    kurzon Гость

    2Pasha Спасибо...
     
Загрузка...

Поделиться этой страницей