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

Создать стек 25 студентов, в каждый элемент которого включать номер студента и его оценку за экзамен

01.10.2014, 18:44. Просмотров 1176. Ответов 2
Метки нет (Все метки)


Создать стек 25 студентов, в каждый элемент которого включать номер студента и его оценку за экзамен. Оценки формировать случайным образом в диапазоне от 2 до 5. Напечатать стек. Разделить стек на два отдельных стека – «отличников» и «хорошистов», «троечников» и «двоечников». Напечатать оба стека. Надо использовать указатели
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.10.2014, 18:44
Ответы с готовыми решениями:

Создать массив записей, каждый элемент которого содержит фамилию студента
Создать массив записей, каждый элемент которого содержит фамилию студента, оценки за четыре...

Создать стек, информационными полями которого являются: фамилия и средний балл студента
Помогите с задачей, пожалуйста Создать стек, информационными полями которого являются: фамилия и...

Создать стек, информационными полями которого являются: фамилия и средний балл студента
Помогите с задачей, пожалуйста Создать стек, информационными полями которого являются: фамилия и...

Создать матрицу B, каждый элемент которой равен произведению соответствующего элемента А на номер его строки
Добрый день уважаемые форумчане! Помогите пожалуйста с решением задачи в Visual Studio 2008, я не...

__________________
Помогаю в написании студенческих работ здесь.
Записывайтесь на профессиональные курсы С#-разработчиков‌
2
867 / 717 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
01.10.2014, 20:02 2
Лучший ответ Сообщение было отмечено 444444 как решение

Решение

444444,
Вот стек на указателях, остальное надеюсь для вас не так сложно сделать
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
104
105
106
107
108
109
110
111
    public unsafe class Program
    {
        private static void Main(string[] args)
        {
            MyStack stackElem = new MyStack();
            stackElem.Insert(10, 1);
            stackElem.Insert(6, 2);
            stackElem.Insert(7, 3);
 
            stackElem.PrintAndFree();
        }
 
        public struct StackElem
        {
            public int num { get; set; }
            public StackElem* prev { get; set; }
            public int mark { get; set; }
 
            public StackElem(int mark, int num, StackElem* prev) : this()
            {
                this.mark = mark;
                this.num = num;
                this.prev = prev;
            }
 
            public override string ToString()
            {
                return string.Format("num: {0}, mark: {1}", num, mark);
            }
        }
 
 
        public class MyStack
        {
            public StackElem* Tail { get; set; }
 
            public MyStack()
            {
                Tail = null;
            }
 
            public void Insert(int num, int mark)
            {
                StackElem t = new StackElem(mark, num, Tail);
                void* alloc = Memory.Alloc(sizeof(StackElem));
                if (Tail == null)
                {
                    Memory.Copy(&t, alloc, sizeof(StackElem));
                    Tail = (StackElem*) alloc;
                }
                else
                {
                    Memory.Copy(&t, alloc, sizeof(StackElem));
                    Tail = (StackElem*) alloc;
                }
            }
 
            public void PrintAndFree()
            {
                StackElem* temp = Tail;
                while (temp != null)
                {
                    Console.WriteLine((*temp).num + " " + (*temp).mark);
 
                    StackElem* prev = temp;
                    temp = (*temp).prev;
 
                    Memory.Free(prev);
                }
            }
        }
 
        public class Memory
        {
            static int ph = GetProcessHeap();
            private Memory() { }
            public static void* Alloc(int size)
            {
                void* result = HeapAlloc(ph, 0x0, size);
                if (result == null) throw new OutOfMemoryException();
                return result;
            }
            public static void Copy(void* src, void* dst, int count)
            {
                var ptrSrc = (byte*)src;
                var ptrDst = (byte*)dst;
                
                if (ptrSrc > ptrDst)
                {
                    for (; count != 0; count--) *ptrDst++ = *ptrSrc++;
                }
                else if (ptrSrc < ptrDst)
                {
                    for (ptrSrc += count, ptrDst += count; count != 0; count--) *--ptrDst = *--ptrSrc;
                }
            }
            public static void Free(void* block)
            {
                if (!HeapFree(ph, 0, block)) throw new InvalidOperationException();
            }
           
            // Heap API functions
            [DllImport("kernel32")]
            static extern int GetProcessHeap();
            [DllImport("kernel32")]
            static extern void* HeapAlloc(int hHeap, int flags, int size);
            [DllImport("kernel32")]
            static extern bool HeapFree(int hHeap, int flags, void* block);
           
        }
    }
2
rRczZZ
01.10.2014, 20:12     Создать стек 25 студентов, в каждый элемент которого включать номер студента и его оценку за экзамен
  #3

Не по теме:

XRoy, творишь =) А почему нет Push/Pop и Peek?

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2014, 20:12
Привет! Вот еще темы с ответами:

Найти максимальную оценку студента и вывести его ID потом фамилию и максимальную оценку
Здравствуйте! Мне нужно найти максимальную оценку студента и вывести его ID потом фамилию и макс...

Вывести на экран анкетные данные студентов, получивших за первый и второй экзамен оценку 5
Отсортировать студентов по оценке по году рождения. Вывести на экран анкетные данные студентов,...

Для студентов 1 курсов - Курсовая (создать структуру, элементами которой являются фамилия студента и его возраст)
Написать программу, в которой необходимо создать структуру, элементами которой являются фамилия...

Найдите номер студента, имеющего наибольшую среднюю оценку
Помогите с заданием:-| Пусть данный файл целых чисел. Значения в нем имеют такой смысл: n1 f11...

Файлы: найдите номер студента, имеющую наибольшую среднюю оценку
Ребята! Нужна помощь, не работал с файлами, препод нам дал тему эту за 2 дня до зачета и влепил две...

N=16 Каждый элемент, значение которого меньше 10, заменить его квадратом
N=16 Каждый элемент, значение которого меньше 10, заменить его квадратом.


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.