Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

С#: "Масив в структурах"

6.5K
13 октября 2007 года
kurzon
87 / / 28.09.2007
Условие:

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

Я сделал ету программу, с двума масивами, а надо сделать с структурами(где два масива)?

Вот моя последняя бетта-версия ( by http://forum.codenet.ru/showpost.php?p=215016&postcount=3 )


Работоспособная программа.

Код:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication6
{
    class Program
    {
        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)];
            }
        }
        static void Main(string[] args)
        {
            int i, x,  size = 10;
            string y;
            string[] b = new string[100];
            int[] d = new int[100];
            Console.WriteLine("Генерация масива");
            Random a = new Random();
            Random c = new Random();
            for (i = 0; i < size; i++)
            {
                b = Teenager.Complain();
                d = c.Next(2007);
                Console.WriteLine("Название книги :" + b + " Год : " + d);
            }
            Console.ReadLine();
           
                        for (j = 0; j < size; j++)
                        {
                            for (i = 1; i < size; i++)
                            {
                                if (d[i - 1] > d)
                                {
                                    x = d[i - 1];
                                    d[i - 1] = d;
                                    d = x;
                                    y = b[i - 1];
                                    b[i - 1] = b;
                                    b = y;
                                 }
                             }
                        }
             
            Console.WriteLine("Cортованый масив");
            for (i = 1; i < size; i++)
            {
                Console.WriteLine(" Название книги :" + b + " Год  : " + d);
            }
            Console.ReadLine();
        }
    }
}


Вот я сам сделал, но ошибки ктото может исправить?

Код:
using System;
using System.Collections.Generic;
using System.Text;
namespace Struct
{
   
    struct Books
    {
        public string[] autor;
        public int[] god;
        public Books(string[] a, int[] b)
        {
            autor=a;
            god=b;
        }
    }
    struct 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 = new string[6];
             int[] b;
            int i,j,x, size=10;
           
            Random c = new Random();
            for (i = 0; i < size; i++)
            {
                a = Teenager.Complain();
                b = c.Next(2007);
                Books book = new Books(a, b);
                Console.WriteLine("Название книги :" + book.autor + " Год : " + book.god);
               
            }
             Console.ReadLine();
           
             for (j = 0; j < size; j++)
             {
                 for (i = 1; i < size; i++)
                 {
                     if (book.autor[i - 1] > book.autor)
                      {
                          x = book.autor[i - 1];
                          book.autor[i - 1] = book.autor;
                          book.autor = x;
                                   
                       }
                  }
              }
                        Console.WriteLine("Cортованый масив");
              for (i = 1; i < size; i++)
              {
                    Console.WriteLine(" Название книги :" + book.autor + " Год  : " + book.god);
              }
              Console.ReadLine();
        }
    }
}
10K
13 октября 2007 года
FAngel
77 / / 13.09.2006
Слушай, а ты хоть что нить по программированию читал? У тебя ошибки сооовсем детские:eek: .
Вот, например:
 
Код:
if (book.autor[i - 1] > book.autor)
                    {
                        x = book.autor[i - 1];
                        book.autor[i - 1] = book.autor;
                        book.autor = x;

                    }

Ты как хочешь получить число (х) от строки(string)?
Или вот:
Код:
for (i = 0; i < size; i++)
            {
                a = Teenager.Complain();
                b = c.Next(2007);
                Books book = new Books(a, b);
                Console.WriteLine("Название книги :" + book.autor + " Год : " + book.god);
               
            }
             Console.ReadLine();
           
             for (j = 0; j < size; j++)
             {
                 for (i = 1; i < size; i++)
                 {
                     if (book.autor[i - 1] > book.autor)
                      {
                          x = book.autor[i - 1];
                          book.autor[i - 1] = book.autor;
                          book.autor = x;
                                   
                       }
                  }
              }

Про область видимости слышал?
Ты определяеш book в теле цыкла. А это значит, что после выхода из цыкла обьект класа будет уничтожен, ну а ты пытаешся обратиться к нему за телом цыкла, там где он уже умер(по моему тут поможет лишь экстарсенс, ну типа вызывает душу умершего и т.д.)
В общем, почитай книги, ну скажем, я начинал с Эндрю Троелсена "С# и платформа .Net" Кроме того полезен Бьярн Страустрап (тут хоть и про С++, но все же тебе будет полезно). А если тебе просто нужна програмка, то лучше обратись к кому нибудь, пусть он тебе напишет(много врядли возьмут). В общем, помучайся, это слишком фундаментальные вопросы, чтобы в них не розбираться:) Удачи.
6.5K
13 октября 2007 года
kurzon
87 / / 28.09.2007
Я уже переделал, не работает?

Код:
using System;
using System.Collections.Generic;
using System.Text;

namespace Struct
{
   
    struct Bookss
    {
         private string _author;  
         public string Author  
         { get {return _author; } }  
        private int _year;  
        public int year;
        public void book(string author, int year)
        {       _author = author;       _year = year;   }
    }
    struct 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;
             int b;
            int i,j,x, size=10;
           
            Random c = new Random();

            Bookss Books = new Bookss();
           
            for (i = 0; i < size; i++)
            {
                a = Teenager.Complain();
                b = c.Next(2007);
                Books.Add(new book(a, b));
                Console.WriteLine("Название книги :" + book.author + " Год : " + book.year);
               
            }
           
             Console.ReadLine();
           
             for (j = 0; j < size; j++)
             {
                 for (i = 1; i < size; i++)
                 {
                     if (book.year[i - 1] > book.year)
                      {
                          x = book.year[i - 1];
                          book.year[i - 1] = book.year;
                          book.year = x;

                                   

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

              for (i = 1; i < size; i++)
              {
                  Console.WriteLine(" Название книги :" + book.author + " Год  : " + Books.year);
              }
              Console.ReadLine();
        }
    }

}

Может ктото исправит ошыбки?
10K
13 октября 2007 года
FAngel
77 / / 13.09.2006
Слусай, ну ты смешной:D . Надеюсь это срочно и времени на розбирательство с языком, которого ты невидел ни разу, нет.
Во-первых:
 
Код:
struct Bookss
    {
         private string _author;  
         public string Author  
         { get {return _author; } }  
        private int _year;  
        public int year;[\b]
        public void book(string author, int year)
        {       _author = author;       _year = year;   }
    }

year - это еще одна переменная, а не свойство, как Author (нужны сет и гет методы).
Далее.
 
Код:
Bookss Books = new Bookss();

если добавить к слову Book буковку s, переменная от этого массивом не станет (к сожалению только в фильмах кампы понимают английский язык:) )
Да, и метод Add у твоей структуры от этого тоже не выростет :)(хотя жаль)
Потом, область видимости ограничивается скобками(фигурными такими { и } )поэтому сделай свои Books хотя-бы публик членом класа, так будет лучше :). Ну и
 
Код:
if (book.year[i - 1] > book.year)
                      {
                          x = book.year[i - 1];
                          book.year[i - 1] = book.year;
                          book.year = x;

                                   

                       }

тут явно нехватает определения переменной book (она еще не родилась, а ты с ней уже чего-то делаишь )
В общем, пока вроде фсе, но попрошу все-же почитать книги и включать голову хоть местами. Там ведь еще и ошибки выдают и их мона читать и после понимать что у тебя неправильно, это ведь компилятор не от плохого знания языка их выдает, а совсем наооборот, ага?
6.5K
14 октября 2007 года
kurzon
87 / / 28.09.2007
Код:
using System;
using System.Collections.Generic;
using System.Text;

namespace Sort_Book
{
    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 is Bookss)
                    ((Bookss)lists).PrintInfo();
                else
                    Console.WriteLine(lists);
            }
            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();
               
            }
           
            Console.ReadLine();
             
        }
    }

}


Но при исправлении ошибки есть две ошибки..

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

Ето что за ошыбки?
6.5K
14 октября 2007 года
kurzon
87 / / 28.09.2007
Код:
Console.ReadLine();
           
             for (j = 0; j < size; j++)
             {
                 for (i = 1; i < size; i++)
                 {
                     if (book.year[i - 1] > book.year)
                      {
                          x = book.year[i - 1];
                          book.year[i - 1] = book.year;
                          book.year = x;
                             

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

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




А в етом куске программы сместо book.year какой тег надо вставить?
6.5K
15 октября 2007 года
kurzon
87 / / 28.09.2007
Код:
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 = 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);
        }
    }
}


А вот метод сортировки?

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

                       }
                  }
              }


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

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

Былобы сдорово, если оно сортувала методом пузырьком?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог