Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2017, 08:29   #1
Rich Bich
Новичок
Джуниор
 
Регистрация: 07.04.2017
Сообщений: 2
По умолчанию Двумерный массив. Класс должен содержать только одно закрытое поле

Условие:
Массив состоит из номеров зачетной книжки и годов рождений студентов. Вычислить сколько лет студенту и вывести на экран информацию вида «номер зачетной книжки – количество лет». Nx2. Целочисленный.


Имеется 5 закрытых полей, нужно чтобы всё работало корректно только при одном закрытом поле int[,] arr
Класс должен содержать только одно закрытое поле.


Код:
using System;
 
using System.Text;
 
namespace Lab_3
{
    class MassWork
    {
 
        int[,] arr;
        int Mmass;
        int Nmass;
        int KolY;
 
        int M, Length;
 
        public int KolYears
        {
            get
            {
                return KolY;
            }
            set
            {
                if (value < 0)
                    throw new ArgumentException("Студенту должно быть больше лет", "KolYears");
 
                KolY = value;
            }
        }
 
        public int N
        {
            get
            {
                return Nmass;
            }
            set
            {
                if (value <= 0)
                    throw new ArgumentException("Размер массива должен быть больше нуля!", "N");
                Nmass = value;
            }
        }
 
        public MassWork()
        {
            Console.Write("Введите количество студентов: ");
            int Nmass;
            try
            {
                Nmass = Convert.ToInt32(Console.ReadLine());
            }
 
 
            catch (ArgumentException ex)
            {
                Console.WriteLine("ОШИБКА: " + ex.Message);
                Console.Write("Введите размер массива числовыми значениями: ");
                Nmass = Convert.ToInt32(Console.ReadLine());
            }
            catch (StackOverflowException)
            {
                Nmass = Convert.ToInt32(Console.ReadLine());
            }
            Mmass = 2;
            N = Nmass;
            M = Mmass;
            Length = N * M;
            arr = new int[Nmass, 2];
 
 
        }
 
        public MassWork(int rows, int cols)
        {
            this.Nmass = rows;
            this.Mmass = cols;
            Length = rows * cols;
            this.N = rows;
            this.M = cols;
            arr = new int[this.Nmass, this.Mmass];
 
        }
 
        public int this[int index1, int index2]
        {
            set
            {
                arr[index1, index2] = value;
            }
            get
            {
                return arr[index1, index2];
            }
 
        }
 
        public void AddMassWork(int i, int NZach, int NGod)
        {
            this[i, 0] = NZach;
            Console.WriteLine(DateTime.Today.Year - NGod);
            try
            {
                this.KolYears = DateTime.Today.Year - NGod;
            }
 
 
 
            catch (ArgumentException ex)
            {
                Console.WriteLine("ОШИБКА: " + ex.Message);
                Console.Write("Введите год рождения числовыми значениями: ");
                NGod = Convert.ToInt32(Console.ReadLine());
            }
            catch (StackOverflowException)
            {
                Nmass = Convert.ToInt32(Console.ReadLine());
            }
 
            this[i, 1] = NGod;
        }
 
        public void ResultMassWork(int maxYear)
        {
            int kolMax = 0;
 
 
 
            for (int i = 0; i < this.N; i++)
            {
                Console.WriteLine("Возраст студента (" + this[i, 0] + ") составляет: " + Convert.ToString(DateTime.Today.Year - this[i, 1] - 1) + " лет.");
                if (DateTime.Today.Year - this[i, 1] > maxYear)
                {
                    kolMax++;
                }
            }
            Console.WriteLine("Количество студентов, возраст которых превышает заданное значение = " + Convert.ToString(kolMax));
        }
 
        public void GetMassWork()
        {
            for (int i = 0; i < this.N; i++)
            {
                Console.WriteLine(this[i, 0] + "\t" + this[i, 1]);
            }
            Console.ReadLine();
        }
 
    }
 
    class Program
    {
        static void Main(string[] args)
        {
 
            MassWork myMass = new MassWork();
 
            Console.WriteLine("Введите данные, количество студентов = " + myMass.N);
            int Nzach;
            int Gr;
            Console.WriteLine();
 
            for (int i = 0; i < myMass.N; i++)
            {
                Console.Write("Введите номер зач.книжки: ");
                Nzach = Convert.ToInt32(Console.ReadLine());
                Console.Write("Введите год рождения: ");
                Gr = Convert.ToInt32(Console.ReadLine());
                myMass.AddMassWork(i, Nzach, Gr);
            }
 
            Console.WriteLine();
 
            int maxYear;
            Console.Write("Задайте максимальный возраст: ");
            maxYear = Convert.ToInt32(Console.ReadLine());
            myMass.ResultMassWork(maxYear);
 
            Console.WriteLine();
 
            String yesno;
            Console.WriteLine("Вывести полный список студентов?(да или нет)");
            yesno = Console.ReadLine();
            if (yesno == "да")
            {
                myMass.GetMassWork();
            }
 
        }
    }
}
Rich Bich вне форума Ответить с цитированием
Старый 07.04.2017, 08:38   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

И? Проблема в чем?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 07.04.2017, 08:44   #3
Rich Bich
Новичок
Джуниор
 
Регистрация: 07.04.2017
Сообщений: 2
По умолчанию

Не получается из 5 полей сделать одно закрытое
Rich Bich вне форума Ответить с цитированием
Старый 07.04.2017, 09:07   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

Код:
class Student
{ // одно закрытое поле для хранения двух целочисленных величин  указанных в задании
public // свойства и методы для получения данных указанных в задании
}

student [] m; // массив ВСЕХ студентов (если он еще нужен)
                    // и прочее, прочее ....
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 07.04.2017, 09:10   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Что именно не получается? Зачем там эти поля?

Не делайте "из 5 одно", выкиньте 5 и делайте просто одно. В задании ж просто просят хранить данные в двумерном массиве вместо 2 массивов, а остальные поля вообще непонятно зачем.

А лучше весь код выкинуть и написать нормально, какая-то странная каша. В каждой второй функции ввод чего-то из консоли, имена не отражают суть, еще везде зачем-то ловится StackOverflowException.
Сделайте весь ввод в одном месте/функции, а не размазано по всей программе.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 07.04.2017 в 09:13.
Alex11223 вне форума Ответить с цитированием
Старый 07.04.2017, 12:47   #6
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Уважаемый, если хочешь в одной переменной хранить 5 значений, тогда сделай её текстовой (в виде строковой переменной) и располагай свои значения через запятую (или пробел) в ней.
Правда, придётся написать функцию для извлечения из этой строки необходимое значение... но это уже другая история.
ura_111 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# - Создать иерархию классов Выпускник вуза, Бакалавр, Магистр, Инженер. Класс Выпускник вуза должен содержать атрибуты и методы, общие для производных классов Wexley Помощь студентам 0 07.12.2016 12:06
jquery.validate реагирует только на одно поле Женя32 JavaScript, Ajax 2 24.11.2016 11:50
Создать стек со случайными целыми числами в диапазоне –50 до +50 и преобразовать его в два стека. Первый должен содержать только п zenya1998 Паскаль, Turbo Pascal, PascalABC.NET 1 05.05.2016 17:14
закрытое поле , c# Владимрл C# (си шарп) 5 14.10.2015 10:48
как изменить только одно поле в БД. Делфи. FACE OFF Помощь студентам 0 24.09.2010 20:21