-
Массив записей структура которого автор, год издания, упорядочить по году издания.
-
С#: "Масив в структурах"
Код:
Я сделал ету программу, с двума масивами, а надо сделать с структурами(где два масива)?
Вот моя последняя бетта-версия ( 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.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();
}
}
}
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();
}
}
}
Вот, например:
Код:
if (book.autor[i - 1] > book.autor)
{
x = book.autor[i - 1];
book.autor[i - 1] = book.autor;
book.autor = x;
}
{
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;
}
}
}
{
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" Кроме того полезен Бьярн Страустрап (тут хоть и про С++, но все же тебе будет полезно). А если тебе просто нужна програмка, то лучше обратись к кому нибудь, пусть он тебе напишет(много врядли возьмут). В общем, помучайся, это слишком фундаментальные вопросы, чтобы в них не розбираться:) Удачи.
Код:
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();
}
}
}
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();
}
}
}
Может ктото исправит ошыбки?
Во-первых:
Код:
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; }
}
{
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;
}
{
x = book.year[i - 1];
book.year[i - 1] = book.year;
book.year = x;
}
тут явно нехватает определения переменной book (она еще не родилась, а ты с ней уже чего-то делаишь )
В общем, пока вроде фсе, но попрошу все-же почитать книги и включать голову хоть местами. Там ведь еще и ошибки выдают и их мона читать и после понимать что у тебя неправильно, это ведь компилятор не от плохого знания языка их выдает, а совсем наооборот, ага?
Код:
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();
}
}
}
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'
Ето что за ошыбки?
Код:
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();
}
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 какой тег надо вставить?
Код:
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);
}
}
}
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;
}
}
}
{
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;
}
}
}
Не катит задача, надо методом пузырьком?
Мене задали методом сортировка пузырьком ...
Былобы сдорово, если оно сортувала методом пузырьком?