Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 25.10.2013
Сообщений: 42

Создать класс «Книга» как коллекцию 50 объектов класса «Страница»

03.05.2014, 12:11. Показов 4061. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать класс «Книга» как коллекцию 50 объектов класса «Страница». На странице может располагаться иллюстрация, текст, код программы или результат работы программы. Содержание каждой страницы формируется случайным образом. Напечатать исходную коллекцию. С помощью круговой диаграммы представить статистику об информации всей книги.
Объясните пожалуйста как сделать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.05.2014, 12:11
Ответы с готовыми решениями:

Определить класс «Озеро» и создать коллекцию «хэш-таблица» из объектов спроектированного класса
Составить программу на языке C#, в которой определить класс, характеризующий предметной области «Озеро» (характеристики определить...

Можно ли как-то получить коллекцию всех существующих объектов класса?
Добрый вечер. Предположим я насоздавал объектов, сколько не известно. Предположим они создаются по нажатию кнопки. Есть ли способ...

Создать класс, такой, чтобы невозможно создать больше 3-х объектов этого класса
Добрий день товарищи!!! Помогите написать вот такую задачка.... Создать класс, такой, чтобы невозможно создать больше 3-х объектов...

11
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
03.05.2014, 12:28
Так и делайте. Класс Страница, класс Книга как коллекция страниц, заполняете свойства всех страниц, потом считаете сколько в них чего содержится. И выводите.
0
Заблокирован
03.05.2014, 12:34
C#
1
2
3
4
5
6
7
8
public class paper{
//Тут что он в себя включает
}
public class Book{
 
public List<paper> book = new List<paper>(50);
 
}
Если память не отказывает сделать можно так.
0
0 / 0 / 1
Регистрация: 25.10.2013
Сообщений: 42
05.05.2014, 17:39  [ТС]
Создать класс «Книга» как коллекцию 50 объектов класса «Страница». На странице может располагаться иллюстрация, текст, код программы или результат работы программы. Содержание каждой страницы формируется случайным образом. Напечатать исходную коллекцию.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
 
namespace WindowsFormsApplication6
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public Random rnd = new Random();
        public class stranica
        {
         string [] t = new string[4]{"код программы","иллюстрация", "текст","результат работы программы"}; 
        }
        public ArrayList kniga = new ArrayList();
        private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 51; i++)
            {
                stranica s = new stranica();
               
                {
                   textBox1.Text = rnd.Next(s.t.Length);
                } 
                kniga.Add(s);
            }
        }
    }
}
подскажите почему не выходит?
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
05.05.2014, 18:00
Что не выходит и где в коде класс книга?
C#
1
textBox1.Text = rnd.Next(s.t.Length);
Вы понимаете что делает этот код? выводит случайное неотрицательное число до s.t.Length.
Причем лично у меня в этом месте ошибка, т.к. число присваивается тексту.
Решается так:
C#
1
textBox1.Text = rnd.Next(s.t.Length).ToString();
1
20 / 20 / 10
Регистрация: 07.02.2014
Сообщений: 35
05.05.2014, 18:20
Может, что-то вроде...
Кликните здесь для просмотра всего текста
Ломаем все принципы ООП ии..

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication6
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Kniga k=new Kniga();
            foreach(Stranica s in k.stranicy)
                textBox1.Text += s.content+Environment.NewLine; //с новой строки каждая страница
        }
    }
    public class Stranica
    {
        Random rnd = new Random();
        public string content;
        public Stranica()
        {
            string[] t = new string[4] { "код программы", "иллюстрация", "текст", "результат работы программы" };
            content = t[rnd.Next(3)];
        }
    }
    public class Kniga
    {
        public List<Stranica> stranicy;
        public Kniga()
        {
           stranicy=new List<Stranica>();
           for (int i = 0; i < 50; i++)
           {
               Stranica s = new Stranica();
               stranicy.Add(s);
              System.Threading.Thread.Sleep(10); //иначе выводит одинаковые значения, костыль
           }
        }
    }
}
Одна проблема - при нажатии на кнопку все страницы с одним контентом, поэтому использую тред.слип. Может знает кто, как избежать этого? (не многопоточностью)
1
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
05.05.2014, 18:44
Вот для консоли. Но можно и в форму переделать...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication8
{
    class Program
    {
        static void Main(string[] args)
        {
            Book myBook = new Book();
            foreach (Page p in myBook)
            {
                Console.WriteLine(p.ToString());
            }
            Console.ReadLine();
        }
    }
    public class Book:IEnumerable<Page>
    {
        private List<Page>pages = new List<Page>();
 
        public List<Page> GetAllPages
        {
            get { return pages; }
        }
        public Book()
        {
            Random rand = new Random();
            for (int i = 0; i < 50; i++)
            {
                string content = Enum.GetName(typeof(Content), rand.Next(0, 4));
                pages.Add(new Page(content,i+1));
            }
        }
 
        public IEnumerator<Page> GetEnumerator()
        {
            return pages.GetEnumerator();
        }
 
        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
        {
            return pages.GetEnumerator();
        }
    }
    public class Page
    {
        public string Content { get; private set; }
        public int PageNumber { get; private set; }
        public Page(string cont,int num)
        {
            Content = cont;
            PageNumber = num;
        }
        public override string ToString()
        {
            return string.Format("Content: {0}; page number: {1}",
                                 Content, PageNumber);
        }
    }
    enum Content
    {
        Text,
        Picture,
        Programm_code,
        Programm_result
    }
}
1
0 / 0 / 1
Регистрация: 25.10.2013
Сообщений: 42
06.05.2014, 15:24  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
 
namespace WindowsFormsApplication6
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public int a;
        public Random rnd = new Random();
        public class stranica
        {
         public string [] t = new string[4]{"код программы","результат работы программы", "текст","иллюстрация"}; 
        }
        public ArrayList kniga = new ArrayList();
        public stranica s = new stranica();
        private void button1_Click(object sender, EventArgs e)
        { 
             
          
            for (int i = 0; i < 51; i++)
            {
               
                   a = rnd.Next(0, s.t.Length -1);
                   kniga.Add(s.t);
                   textBox1.Text += i + "страница" + "-" + s.t[a] + "\r\n";
            }
        }
   }
Помогите составить диаграмму
0
0 / 0 / 1
Регистрация: 25.10.2013
Сообщений: 42
06.05.2014, 16:30  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
 
namespace WindowsFormsApplication6
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public int a;
        public Random rnd = new Random();
        public class stranica
        {
         public string [] t = new string[4]{"код программы","результат работы программы", "текст","иллюстрация"}; 
        }
        public ArrayList kniga = new ArrayList();
        public stranica s = new stranica();
        private void button1_Click(object sender, EventArgs e)
        { 
             
          
            for (int i = 0; i < 51; i++)
            {
               
                   a = rnd.Next(0, s.t.Length -1);
                   kniga.Add(s.t);
                   textBox1.Text += i + "страница" + "-" + s.t[a] + "\r\n";
            }
        }
   }
Помогите пожалуйста никак не могу сделать. С помощью круговой диаграммы представить статистику об информации всей книги.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
06.05.2014, 17:19
444444, попробую вам пример с круговой диаграммой сделать. Но только пример. Подгоните сами...

Добавлено через 19 минут
Вот. Форма и на ней кнопка. Никак не выходит установить диаграмму в центр... С математикой уже не очень...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            button1.Click += delegate
            {
                Book myBook = new Book();
 
                Pen pen1 = new Pen(Color.Black, 2.0F);
                Brush brush1 = new SolidBrush(Color.Red);
                Brush brush2 = new SolidBrush(Color.Green);
                Brush brush3 = new SolidBrush(Color.Blue);
                Brush brush4 = new SolidBrush(Color.Silver);
 
 
                Point center = new Point() { X = this.Height / 2, Y = this.Width / 2 };
 
                Graphics graph = this.CreateGraphics();
                Rectangle rect = new Rectangle(center.X - 100, center.Y - 100, 150, 150);
 
                //Рисуем внешний круг (необязательно)
                graph.DrawEllipse(pen1, rect);
 
                //Считаем количество страниц каждого вида и приводим их к градусному представлению
                double text_count = (from b in myBook where b.Content == "Text" select b).Count()*7.2;
                double picture_count = (from b in myBook where b.Content == "Picture" select b).Count()*7.2;
                double prg_code = (from b in myBook where b.Content == "Programm_code" select b).Count()*7.2;
                double prg_res = (from b in myBook where b.Content == "Programm_result" select b).Count()*7.2;
 
                //Красный-количество страниц с текстом
                graph.FillPie(brush1, rect, 0, (float)text_count);
                //Зеленый-количество страниц с картинками
                graph.FillPie(brush2, rect, (float)text_count, (float)(picture_count));
                //Синий-количество страниц с кодом программ
                graph.FillPie(brush3, rect, (float)(text_count + picture_count), (float)(prg_code));
                //Серебрянный-количество страниц с результатами программ                           
                graph.FillPie(brush4, rect, (float)(text_count + picture_count + prg_code), (float)prg_res);
            };
        }
    }
    public class Book : IEnumerable<Page>
    {
        private List<Page> pages = new List<Page>();
 
        public List<Page> GetAllPages
        {
            get { return pages; }
        }
        public Book()
        {
            Random rand = new Random();
            for (int i = 0; i < 50; i++)
            {
                string content = Enum.GetName(typeof(Content), rand.Next(0, 4));
                pages.Add(new Page(content, i + 1));
            }
        }
 
        public IEnumerator<Page> GetEnumerator()
        {
            return pages.GetEnumerator();
        }
 
        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
        {
            return pages.GetEnumerator();
        }
    }
    public class Page
    {
        public string Content { get; private set; }
        public int PageNumber { get; private set; }
        public Page(string cont, int num)
        {
            Content = cont;
            PageNumber = num;
        }
        public override string ToString()
        {
            return string.Format("Content: {0}; page number: {1}",
                                 Content, PageNumber);
        }
    }
    enum Content
    {
        Text,
        Picture,
        Programm_code,
        Programm_result
    }
}
1
0 / 0 / 1
Регистрация: 25.10.2013
Сообщений: 42
10.05.2014, 18:46  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
 
namespace WindowsFormsApplication6
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public int a;
        public Random rnd = new Random();
        public class stranica
        {
            public string[] t = new string[4] { "код программы", "результат работы программы", "текст", "иллюстрация" };
        }
        public ArrayList kniga = new ArrayList();
        public stranica s = new stranica();
        private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 51; i++)
            {
                a = rnd.Next(0, s.t.Length - 1);
                kniga.Add(s.t);
                textBox1.Text += i + "страница" +"-" + s.t[a] + "\r\n";
            }
            button1.Click += delegate
            {
               // stranica s = new stranica();
                Pen pen1 = new Pen(Color.Black, 2.0F);
                Brush brush1 = new SolidBrush(Color.Red);
                Brush brush2 = new SolidBrush(Color.Green);
                Brush brush3 = new SolidBrush(Color.Blue);
                Brush brush4 = new SolidBrush(Color.Silver);
 
 
                Point center = new Point() { X = this.Height / 2, Y = this.Width / 2 };
 
                Graphics graph = this.CreateGraphics();
                Rectangle rect = new Rectangle(center.X - 100, center.Y - 100, 150, 150);
                double text_count = (from b in s where a == 0 select b).Count() * 7.2;
                double picture_count = (from b in s where a == 1 select b).Count() * 7.2;
                double prg_code = (from b in s where a == 2 select b).Count() * 7.2;
                double prg_res = (from b in s where a == 3 select b).Count() * 7.2;
 
                //Красный-количество страниц с текстом
                graph.FillPie(brush1, rect, 0, (float)text_count);
                //Зеленый-количество страниц с картинками
                graph.FillPie(brush2, rect, (float)text_count, (float)(picture_count));
                //Синий-количество страниц с кодом программ
                graph.FillPie(brush3, rect, (float)(text_count + picture_count), (float)(prg_code));
                //Серебрянный-количество страниц с результатами программ                           
                graph.FillPie(brush4, rect, (float)(text_count + picture_count + prg_code), (float)prg_res);
            };
        }
    }
}
я только так смогла, никак не могу сделать. Кто нибудь помогите!
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
10.05.2014, 19:03
444444, в 10 посте есть же полный пример, с диаграммой... Только она не по центру отрисовывается, а в остальном все работает...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.05.2014, 19:03
Помогаю со студенческими работами здесь

Как создать коллекцию из полей массива объектов
Помогите пожалуйста: есть класс class Transport { public string Name { get; set; } public string How { get; set; } public...

Класс Picture, содержащий параметризованную коллекцию объектов Rectangle, Circle и Trapezium
помогите пожалуйста с заданием Создать абстрактный класс Figure. На его основе реализовать классы Rectangle (прямоугольник), Circle...

Создать коллекцию объектов классов и сделать сортировку по параметру
Существует некоторый базовый класс, от него наследуются несколько других классов. Нужно создать коллекцию объектов этих классов и сделать...

Класс "Книга", список объектов класса
Всем доброго времени суток. делаю лабу в вузе с++ builder изучаю тему программирования классов с иеархической структурой. помогите...

JS: Как создать коллекцию объектов и работать с ней?
Хочу создать слайдер, чтобы вызывался одной строкой, а уже в процессе идентифицировались все слайдеры на странице с тегом (.slider); Как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru