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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2015, 15:40   #1
TLandertinger
Пользователь
 
Регистрация: 09.05.2013
Сообщений: 29
По умолчанию Параметризованные классы

Здравствуйте. У меня возникли проблемы. Я работаю в C# MVS 2010 Вот задание:

Разработать приложение WindowsForms. Создать параметризованный класс, содержащий три закрытых поля-массива (одномерный, двумерный и вложенный). Параметр – тип данных ваших массивов. Для каждого массива описать по индексатору и осуществить вывод данных следующим образом: для первого массива – через индексатор в основной программе, для второго (двумерного) и третьего (вложенного) – через цикл foreach в отдельном методе, который через переданный ему параметр определяет, с каким массивом ему нужно работать. В зависимости от выбора пользователя (через RadioButton) создавать объект класса с параметром: int или string. Заполнить массивы случайным образом с учетом требований к заполнению по варианту (см.ниже таблица 2). В классе определить метод, выводящий на экран сумму элементов каждого из трех массивов, но не всех сразу: один вызов метода – одна сумма. В основной программе для каждого массива организовать вывод его самого и результат работы метода, считающего его сумму.

Вариант 6. Число элементов массива: Пользователь задает два числа больших 5, их среднее арифметическое. Числовая информация: Диапазон от -130 до 140. Символьная информация: Определить строку содержащую символы кириллицы и для каждого элемента массива случайным образом «дергать» оттуда символы.

В моей программе имеются ошибки, скрин которых прикладываю. Скрин формы также прилагается. Как исправить подобную ошибку?
Изображения
Тип файла: jpg Безымянный3.jpg (111.2 Кб, 114 просмотров)
Тип файла: jpg Форма.jpg (112.3 Кб, 124 просмотров)

Последний раз редактировалось TLandertinger; 21.01.2015 в 15:55.
TLandertinger вне форума Ответить с цитированием
Старый 21.01.2015, 15:47   #2
TLandertinger
Пользователь
 
Регистрация: 09.05.2013
Сообщений: 29
По умолчанию

Вот коды классов:
Код:
//Eingang.cs
using System;

namespace WindowsFormsApplication1
{
    using System;


    namespace WindowsFormsApplication1
    {
        class Eingang
        {
            class Randoms
            {
                private static long _last = DateTime.Now.Ticks;
                long NextLong()
                {
                    _last = (84589 * _last + 45989) % 217728;
                    return _last;
                }
                public int Next(long start, long end)
                {
                    long rand = NextLong();
                    return (int)(rand % end + start);
                }
            }
            public class Inputs
            {

                public static Werke<string> In(Werke<string> w, int size1, int size2)
                {
                    const string db = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя0123456789";
                    var r = new Randoms();
                    for (int i = 0; i < size1; i++)
                    {
                        w[i] = db[r.Next(0, db.Length)].ToString();

                        for (int j = 0; j < size2; j++)
                            w[i, j] = db[r.Next(0, db.Length)].ToString();

                        for (int j = 0; j < w.LenNested(i).Length; j++)
                            w["", i, j] = db[r.Next(0, db.Length)].ToString();
                    }
                    return w;
                }

                public static Werke<int> In(Werke<int> w, int start, int end, int size1, int size2)
                {
                    var r = new Randoms();
                    for (int i = 0; i < size1; i++)
                    {
                        w[i] = r.Next(start, end);

                        for (int j = 0; j < size2; j++)
                            w[i, j] = r.Next(start, end);

                        for (int j = 0; j < w.LenNested(i).Length; j++)
                            w["", i, j] = r.Next(start, end);
                    }
                    return w;

                }

            }
        }
    }

    }
TLandertinger вне форума Ответить с цитированием
Старый 21.01.2015, 15:49   #3
TLandertinger
Пользователь
 
Регистрация: 09.05.2013
Сообщений: 29
По умолчанию

Код:
//Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private dynamic _arrayProviderDynamic;
        private void radioButton5_CheckedChanged(object sender, EventArgs e)
        {
            groupBox1.Enabled = true;
            groupBox1.Visible = true;
        }

        private void radioButton4_CheckedChanged(object sender, EventArgs e)
        {
            groupBox1.Enabled = true;
            groupBox1.Visible = true;
        }

        private string GetArr1()
        {
            string output = "";
            var type = _arrayProviderDynamic is Werke<string> ? "str" : "int";
            if (type == "int")
            {
                var obj = (Werke<int>)_arrayProviderDynamic;
                output = obj.printArr1();
            }
            else
            {
                var obj = (Werke<string>)_arrayProviderDynamic;
                output = obj.printArr1();
            }
            return output;
        }

        private string[] GetArr2()
        {
            string[] output;
            var type = _arrayProviderDynamic is Werke<string> ? "str" : "int";
            if (type == "int")
            {
                var obj = (Werke<int>)_arrayProviderDynamic;
                output = obj.printArr2();
            }
            else
            {
                var obj = (Werke<string>)_arrayProviderDynamic;
                output = output = obj.printArr2();
            }
            return output;
        }

        private string[] GetArr3()
        {
            string[] output;
            var type = _arrayProviderDynamic is Werke<string> ? "str" : "int";
            if (type == "int")
            {
                var obj = (Werke<int>)_arrayProviderDynamic;
                output = obj.printArr3();
            }
            else
            {
                var obj = (Werke<string>)_arrayProviderDynamic;
                output = obj.printArr3();
            }
            return output;
        }

//1 часть
TLandertinger вне форума Ответить с цитированием
Старый 21.01.2015, 15:51   #4
TLandertinger
Пользователь
 
Регистрация: 09.05.2013
Сообщений: 29
По умолчанию

Код:
        class Randoms
        {
            private static long _last = DateTime.Now.Ticks;
            long NextLong()
            {
                _last = (84589 * _last + 45989) % 217728;
                return _last;
            }
            public int Next(long start, long end)
            {
                long rand = NextLong();
                return (int)(rand % end + start);
            }
        }

        public static Werke<string> In(Werke<string> w, int size1, int size2)
        {
            const string db = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя0123456789";
            var r = new Randoms();
            if ((size1 > 5) || (size2 > 5))
                MessageBox.Show("Error");
            for (int i = 0; i < size1; i++)
            {
                w[i] = db[r.Next(0, db.Length)].ToString();
                for (int j = 0; j < size2; j++)
                    w[i, j] = db[r.Next(0, db.Length)].ToString();

                for (int j = 0; j < w.LenNested(i).Length; j++)
                    w["", i, j] = db[r.Next(0, db.Length)].ToString();
            }
            return w;
        }

        

        public static Werke<int> In(Werke<int> w, long start, long end, int size1, int size2)
        {
            var r = new Randoms();
            for (int i = 0; i < size1; i++)
            {
                w[i] = r.Next(start, end);
                for (int j = 0; j < size2; j++)
                    w[i, j] = r.Next(start, end);
                for (int j = 0; j < w.LenNested(i).Length; j++)
                    w["", i, j] = r.Next(start, end);
            }
            return w;
        }


        private void SumFirst()
        {
            var type = _arrayProviderDynamic is Werke<string> ? "str" : "int";
            if (type == "int")
            {
                var obj = (Werke<int>)_arrayProviderDynamic;
                ItemFirst();
            }
            else
            {
                var obj = (Werke<string>)_arrayProviderDynamic;
                ItemFirst();
            }
        }

        private void SumSecond()
        {
            var type = _arrayProviderDynamic is Werke<string> ? "str" : "int";
            if (type == "int")
            {
                var obj = (Werke<int>)_arrayProviderDynamic;
                ItemSecond();
            }
            else
            {
                var obj = (Werke<string>)_arrayProviderDynamic;
                ItemSecond();
            }
        }

        private void SumThird()
        {
            var type = _arrayProviderDynamic is Werke<string> ? "str" : "int";
            if (type == "int")
            {
                var obj = (Werke<int>)_arrayProviderDynamic;
                ItemThird();
            }
            else
            {
                var obj = (Werke<string>)_arrayProviderDynamic;
                ItemThird();
            }
        }

       
//2 часть
TLandertinger вне форума Ответить с цитированием
Старый 21.01.2015, 15:52   #5
TLandertinger
Пользователь
 
Регистрация: 09.05.2013
Сообщений: 29
По умолчанию

Код:
 public void ItemFirst()
        {
            int Sum1 = 0;
            for (int i = 0; i < w.Length; i++) 
            {
                Sum1 += w[i];
            }
            
            MessageBox.Show("Сумма чисел:" + Sum1);
        }

        public static void ItemSecond()
        {
            int Sum2 = 0;
            foreach (var i in w)
            {
                Sum2 += i;  
            }
            MessageBox.Show("Сумма чисел:" + Sum2);
        }

        public void ItemThird()
        {
            int Sum3 = 0;
            foreach (var i in w)
            {
                foreach (var i1 in i)
                {
                    Sum3 += i[i1];
                }
                MessageBox.Show("Сумма чисел:" + Sum3);
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            textBox1.Text = GetArr1();
            ItemFirst();
        }

        private void button5_Click(object sender, EventArgs e)
        {
            try
            {
                int start = -130;
                int end = 141;
                int size1 = Int32.Parse(textBox5.Text);
                int size2 = Int32.Parse(textBox6.Text);
                int summ = 0;
                double average = 0.0;
                {
                    var sizeForSwap = Int32.Parse(textBox5.Text);
                    summ = size1 + size2;
                    average = summ / 2;
                }
                label5.Visible = true;
                label5.Text = @"Basic size of array: [" + (int)average + @"];";
                if (radioButton4.Checked)
                {
                    _arrayProviderDynamic = In(new Werke<int>(size1, size2), start, end, size1, size2);
                }
                else
                {
                    _arrayProviderDynamic = In(new Werke<string>(size1, size2), size1, size2);
                }
            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.Message);
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            textBox3.Lines = GetArr2();
            ItemSecond();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            textBox4.Lines = GetArr3();
            ItemThird();
        }

    }
}//3 часть
, где жирным выделены позиции с ошибками
TLandertinger вне форума Ответить с цитированием
Старый 21.01.2015, 15:54   #6
TLandertinger
Пользователь
 
Регистрация: 09.05.2013
Сообщений: 29
По умолчанию

Код:
//Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    static class Program
    {
        /// <summary>
        /// Главная точка входа для приложения.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}
TLandertinger вне форума Ответить с цитированием
Старый 21.01.2015, 15:54   #7
TLandertinger
Пользователь
 
Регистрация: 09.05.2013
Сообщений: 29
По умолчанию

Код:
//Werke.cs
using System;
using WindowsFormsApplication1.Properties;


namespace WindowsFormsApplication1
{
    public class Werke<T>
    {
        private T[] arr1 = new T[] { };
        private T[,] arr2 = new T[,] { };
        private T[][] arr3 = new T[][] { };

        public Werke(int size1, int size2)
        {
            arr1 = new T[size1];
            arr2 = new T[size1, size2];
            arr3 = new T[size1][];
            var r = new Random();
            for (var i = 0; i < size2; i++)
                arr3[i] = new T[r.Next(1, size2)];
        }

        public T this[int ind1]
        {
            get { return arr1[ind1]; }
            set { arr1[ind1] = value; }
        }

        public T this[int ind1, int ind2]
        {
            get { return arr2[ind1, ind2]; }
            set { arr2[ind1, ind2] = value; }
        }

        public T this[string someString, int ind1, int ind2]
        {
            get { return arr3[ind1][ind2]; }
            set { arr3[ind1][ind2] = value; }
        }

        public int BaseSize
        {
            get { return arr1.Length; }
        }

        public T[] LenNested(int i)
        {
            return arr3[i];
        }

        public string printArr1()
        {
            string str = "";
            foreach (var a in arr1)
            {
                str += a + " ";
            }
            return str;
        }

        public string[] printArr2()
        {
            string[] str = new string[BaseSize];
            for (int i = 0; i < BaseSize; i++)
                for (int j = 0; j < BaseSize; j++)
                    str[i] += arr2[i, j] + " ";
            return str;
        }
        public string[] printArr3()
        {
            string[] str = new string[BaseSize];
            for (int i = 0; i < BaseSize; i++)
            {
                if (str[i] == null)
                    str[i] = "";
                for (int j = 0; j < LenNested(i).Length; j++)
                    str[i] += arr3[i][j] + " ";
            }
            return str;
        }

        public static void ItemFirst(int[] oneDimensional)
        {
            int Sum1 = 0;
            foreach (var i in oneDimensional)
            {
                Sum1 += i;
            }
        }

        public static void ItemSecond(ref int[,] square)
        {
            int Sum2 = 0;
            foreach (var i in square)
            {
                Sum2 += i;
            }
            Console.WriteLine("{0}:", Sum2);
        }

        public static void ItemThird(ref int[][] nested)
        {
            int Sum3 = 0;
            foreach (var i in nested)
            {
                foreach (var i1 in i)
                {
                    Sum3 += i[i1];
                }
            }
            Console.WriteLine("{0}:", Sum3);
        }

    }
}
TLandertinger вне форума Ответить с цитированием
Старый 24.09.2015, 19:47   #8
Владимрл
Пользователь
 
Регистрация: 04.04.2015
Сообщений: 23
По умолчанию

Здравствуйте ! Можно Вам задать вопрос по поводу Вашей программы по адресу ? У меня такого же рода задание , но попроще.
Владимрл вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шаблоны (параметризованные типы) с++ A_D Помощь студентам 1 21.05.2014 12:08
MVC: Параметризованные представления Cannibal Помощь студентам 0 04.02.2014 20:00
C# Интерфейсы и параметризованные коллекции, InnaSh Помощь студентам 0 29.04.2012 00:14
Классы Васильева Зинаида Помощь студентам 0 28.11.2010 20:25