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


Автор: Pa1nk1ller 6.1.2012, 12:31
Всем доброго времени суток!!!
помогите пожалуйста с задачей. никак не могу понять сто надо сделать.

Описать структуру, соответствующую заданиям лабораторной работы 10. Создать параметризованную коллекцию (см. раздел «Классы-прототипы») для хра-нения описанной структуры. Вид коллекции выбрать самостоятельно. Написать Windows-приложение для работы с этой коллекцией, позволяющее выполнять:
□ добавление элемента в коллекцию с клавиатуры;
□ считывание данных из файла;
□ запись данных в тот же или указанный файл;
□ удаление элемента из коллекции1.
Приложение должно содержать меню и диалоговые окна и предусматривать обработку возможных ошибок пользователя с помощью исключений.

Вот лабораторная 10:
Описать структуру с именем STUDENT, содержащую следующие поля:
□ фамилия и инициалы;
□ номер группы;
□ успеваемость (массив из пяти элементов). Написать программу, выполняющую следующие действия:
□ ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT (записи должны быть упорядочены по возрастанию номера группы);
□ вывод на экран фамилий и номеров групп для всех студентов, включенных в массив, если средний балл студента больше 4,0 (если таких студентов нет, вывести соответствующее сообщение).

Вот решение 10 лабораторной:

using System;
using System.Collections.Generic;
using System.Text;

namespace zadanie_10
{
    class Program
    {
        const int STUDENTS_QUANTITY = 2;
        const int SUBJECT_QUANTITY = 5;

        static void Main(string[] args)
        {
            Student[] Results = new Student[STUDENTS_QUANTITY];

            GetStudents(Results);
            CheckGoodMark(Results);
            
            Console.ReadKey();
        }

        public struct Student
        {
            public string Surname;
            public string Initials;
            public int GroupNumber;
            public int[] Marks;
        }

        static void GetStudents(Student[] Students)
        {
            string buf;
            Student student = new Student();
            student.Marks = new int[SUBJECT_QUANTITY];

            for (int i = 0; i < STUDENTS_QUANTITY; i++)
            {
                 Console.WriteLine("Введите фамилию студента:");
                student.Surname = Console.ReadLine();
                Console.WriteLine("Введити инициалы студента:");
                student.Initials = Console.ReadLine();
                Console.WriteLine("Введите группу студента:");
                buf = Console.ReadLine();
                student.GroupNumber = Convert.ToInt32(buf);
                Console.WriteLine("Введите оценку студента: ");
                for (int h = 0; h < SUBJECT_QUANTITY; h++)
                {
                    buf = Console.ReadLine();
                    student.Marks[h] = Convert.ToInt32(buf);
                }
                Students[i] = student;
            }

            //сортировка
            for (int h = STUDENTS_QUANTITY - 1; h > 0; h--)
            {
                for (int s = 0; s < h; s++)
                {
                    if (Students[s].GroupNumber > Students[s + 1].GroupNumber)
                    {
                        int tmp1 = Students[s].GroupNumber;
                        string tmp2 = Students[s].Surname;
                        string tmp3 = Students[s].Initials;
                        int[] tmp4 = Students[s].Marks;

                        Students[s].GroupNumber = Students[s + 1].GroupNumber;
                        Students[s].Surname = Students[s + 1].Surname;
                        Students[s].Initials = Students[s + 1].Initials;
                        Students[s].Marks = Students[s + 1].Marks;

                        Students[s + 1].GroupNumber = tmp1;
                        Students[s + 1].Surname = tmp2;
                        Students[s + 1].Initials = tmp3;
                        Students[s + 1].Marks = tmp4;
                    }
                }
            }
        }

        static void CheckGoodMark(Student[] Students)
        {
            bool found = false;
            int summa = 0;
            float aver = 0;

            for (int i = 0; i < STUDENTS_QUANTITY; i++)
            {
                for (int j = 0; j < SUBJECT_QUANTITY; j++)
                    summa += Students[i].Marks[j];

                aver = summa/5;

                if (aver >= 4.0)
                {
                        found = true;
                        Console.Write("Студент " + Students[i].Surname + " " + Students[i].Initials);
                        Console.Write(" из группы N" + Students[i].GroupNumber);
                        Console.WriteLine(" имеет средний бал больше 4,0");
                }
                aver = 0;
                summa = 0;
            }
            if (!found)
            {
                Console.WriteLine("записей не найдено");
            }
        }
    }
}

помогите кто может или объясните пожалуйста!
заранее спасибо!!!

Автор: Fortnox 6.1.2012, 14:14
Касательно кого пункта?
Вы используете массив, а в задании сказано параметризованную коллекцию, к ним относятся:
  • List
  • Dictionary
  • HashSet
    и т.д.
Классы из пространства имен http://msdn.microsoft.com/ru-ru/library/system.collections.generic.aspx

Добавлено через 1 минуту и 38 секунд
Ах да, если нужна сразу сделанная лаба, вам в http://forum.vingrad.ru/forum/Vingrad-help-center.html.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)