Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
3 / 3 / 1
Регистрация: 26.02.2015
Сообщений: 65
1

Выписать в динамический массив все гласные из матрицы, находящиеся выше главной диагонали

12.04.2015, 20:12. Показов 1796. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть следующая задача.
Пользователь вводит два числа, которые являются размерностью матрицы. Заполнить матрицу случайными заглавными английскими буквами (ASCII код буквы A – 65, Z – 90). Выписать в динамический массив все гласные из матрицы, находящиеся выше главной диагонали (саму диагональ не включать). Вывести матрицу и динамический массив на экран (если нет гласных выше главной диагонали – вывести соответствующее сообщение). Данную задачу решить с помощью следующих методов:
Метод для ввода информации пользователем (это ясно как делается)
Метод для заполнения матрицы случайными буквами (не ясно)
Метод для вывода матрицы на экран (тоже вроде понятно)
Метод для поиска и записи в динамический массив необходимых букв (не понятно).

Прошу помочь!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.04.2015, 20:12
Ответы с готовыми решениями:

Дана матрица как выписать все элементы матрицы,находящиеся выше главной диагонали?
Помогите ,пожалуйста, с решением этой задачи. Задача:Дана квадратная матрица целых...

Дана квадратная матрица целых чисел. Выписать все элементы матрицы, находящиеся ниже главной диагонали
Дана квадратная матрица целых чисел. Выписать все элементы матрицы, находящиеся ниже главной...

Вывести все элементы матрицы, находящиеся выше главной диагонали
Дан двумерный массив размера N×N, заполненный двузначными целыми числами. Требуется вывести все...

Создать двухмерный динамический массив, где все нулевые элементы размещены выше главной диагонали
Нужно создать двухмерный динамический массив, где все нулевые элементы размещены выше главной...

5
26 / 26 / 29
Регистрация: 11.02.2012
Сообщений: 101
13.04.2015, 00:24 2
2) Создаете генератор случайных чисел до метода
C#
1
Random rnd = new Random();
а в методе генерируете так :
C#
1
char ch = (char)(rnd.Next()%26 + 65);
0
30 / 30 / 20
Регистрация: 28.02.2014
Сообщений: 195
13.04.2015, 01:00 3
Borealis, Примерно так...

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
using System;
 
namespace ConsoleApplication8
{
    class Program
    {
        static void Main()
        {
            Console.Write("Введите n: ");
            int n = Convert.ToInt32(Console.ReadLine());
            Console.Write("Введите m: ");
            int m = Convert.ToInt32(Console.ReadLine());
            WorkClass wc = new WorkClass(5, 5);
            wc.fill();
            Console.WriteLine("Исходные данные: ");
            wc.show();
            Console.WriteLine("\n");
            Console.WriteLine("Гласные:");
            wc.getResult();
            wc.showResult();
            Console.ReadKey();
        }
    }
 
    class WorkClass
    {
        private int n;
        private int m;
        private char[,] letters;
        private int[] glasCode;
        private char[] result;
 
        public WorkClass(int n, int m)
        {
            letters = new char[this.n = n, this.m = m];
            glasCode = new int[] { 65, 69, 73, 79, 85 };
            result = new char[this.n * this.m];
        }
 
        /// <summary>
        /// заполнение массива букв
        /// </summary>
 
        public void fill()
        {
            Random rnd = new Random();
            for (int i = 0; i < n; i++)
                for (int j = 0; j < m; j++)
                    letters[i, j] = Convert.ToChar(rnd.Next(65,90));
        }
 
        /// <summary>
        /// поиск гласных над главной диагональю
        /// </summary>
 
        public void getResult()
        {
            int count = 0;
            for (int i = 0; i < n; i++)
                for (int j = 0; j < m; j++)
                    if (i < j && vowel(letters[i, j]))
                    {
                        result[count++] = letters[i, j];
                    }
            Array.Resize(ref result, count);
        }
 
        public void showResult()
        {
            for (int i = 0; i < result.Length; i++)
            {
                Console.Write(result[i] + " ");
            }
        }
        /// <summary>
        /// вывод глассных букв
        /// </summary>
        
        public bool vowel(char cr)
        {
            for (int i = 0; i < glasCode.Length; i++)
                if (Convert.ToInt32(cr) == glasCode[i])
                    return true;
                return false;
        }
        /// <summary>
        /// вывод массива букв
        /// </summary>
        public void show()
        {
            for (int i = 0; i < n; i++)
            {
                Console.WriteLine();
                for (int j = 0; j < m; j++)
                    Console.Write(letters[i, j] + "  ");
            }
        }
    }
}
0
3 / 3 / 1
Регистрация: 26.02.2015
Сообщений: 65
13.04.2015, 01:24  [ТС] 4
Сам я долго думал и в итоге получил внезапно работающий код.
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
namespace one
{
    class Methods
    {
        public static int razm1()
        {
            Console.Write("Введите количество строк: ");
            int i = int.Parse(Console.ReadLine());
            return i;
        }
        public static int razm2()
        {
            Console.Write("Введите количество столбцов: ");
            int i = int.Parse(Console.ReadLine());
            return i;
        }
        public static void rand(string[,] a, int n, int m)
        {
            Random rand = new Random();
            int i, j;
            for (i = 0; i < n; i++)
                for (j = 0; j < m; j++)
                    a[i, j] = string.Concat((char)(rand.Next(0x0041, 0x005A)));
        }
        public static void print(string[,] a, int n, int m, string fmt)
        {
            int i, j;
            for (i = 0; i < n; i++, Console.WriteLine())
                for (j = 0; j < m; j++)
                    Console.Write(fmt, a[i, j]);
        }
        
 
        public static void search(string[,] a, int n, int m)
        {
            List<String> list = new List<String>();
            for (int i = 0; i < n; i++)
                for (int j = 0; j < m; j++)
                    if (i < j)
                        if (((a[i, j].Contains('A'))
                        || (a[i, j].Contains('E'))
                        || (a[i, j].Contains('I'))
                        || (a[i, j].Contains('O'))
                        || (a[i, j].Contains('U')))) list.Add(a[i, j]);
 
            if (list.Count == 0) Console.WriteLine("Нет гласных!");
            else
            {
                Console.Write("Гласные:");
                for (int i = 0; i < list.Count; i++)
                    Console.Write("  {0}",list[i]);
                    Console.WriteLine();
            }
        }
 
 
        class Program
        {
            static void Main(string[] args)
            {
                char repeat = 'y';
                while ((repeat == 'y') || (repeat == 'Y'))
                {
                    try
                    {
                        string[,] mass;
 
                        int n = Methods.razm1();
                        int m = Methods.razm2();
 
                        mass = new string[n, m];
                        Methods.rand(mass, n, m);
                        Console.WriteLine("Исходный массив: ");
                        Methods.print(mass, n, m, "{0,8:f0}");
 
                        Methods.search(mass, n, m);
 
                    }
                    catch { Console.WriteLine("Данные введены некорректно!"); }
                    Console.WriteLine("Повторить? Y/N");
                    repeat = char.Parse(Console.ReadLine());
                }
            }
        }
    }
}
0
26 / 26 / 29
Регистрация: 11.02.2012
Сообщений: 101
13.04.2015, 10:20 5
Еще надо поработать. Что возвращает или делает метод?
C#
1
public static void rand(string[,] a, int n, int m)
Где гласная Y?
f - формат для чисел.
0
30 / 30 / 20
Регистрация: 28.02.2014
Сообщений: 195
13.04.2015, 10:40 6
Цитата Сообщение от Snaf Посмотреть сообщение
Где гласная Y?
Википедия говорит: "Буква Y обозначает как согласный, так и гласные." Мы ей поверили)

Добавлено через 9 минут
Borealis, Не очень мне нравиться твое условие в поиске. Я б добавил массив с нашими гласными буквами. (тогда код станет более гибким, и ты с легкостью сможешь его применить к любым символам, и if получается красивей)
C#
1
 private char[] glasLet = new char[] { 'A', 'E', 'I', 'O', 'U' };
после этого метод поиска выглядит примерно так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static void search(string[,] a, int n, int m)
        {
            List<String> list = new List<String>();
            for (int i = 0; i < n; i++)
                for (int j = 0; j < m; j++)
                    if (i < j && glasLet.Contains(a[i,j])) 
                          list.Add(a[i, j]);
            if (list.Count == 0) Console.WriteLine("Нет гласных!");
            else
            {
                Console.Write("Гласные:");
                for (int i = 0; i < list.Count; i++)
                    Console.Write("  {0}",list[i]);
                    Console.WriteLine();
            }
        }
Не знаю как вам, а мне такой способ нравиться больше

Еще непонятно, почему Вы используете массив строк(string) а не символов(char)?
0
13.04.2015, 10:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.04.2015, 10:40
Помогаю со студенческими работами здесь

Замените нолями все элементы, находящиеся выше главной диагонали
1. Структура программы. Основные объекты обработки (константы, переменные, выражения, метки). 2. ...

Просуммировать элементы матрицы, находящиеся выше главной диагонали и меньшие нуля
Ввести квадратную матрицу вещественных чисел размера M. Просуммировать элементы матрицы,...

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

Массив: Заменить символом "*" все элементы матрицы, расположенные выше главной диагонали...
готовая программа на паскаль Дана квадратная матрица порядка n. Заменить символом &quot;*&quot; все ее...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru