Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/34: Рейтинг темы: голосов - 34, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 11

Сравнение массивов

03.04.2011, 12:46. Показов 6279. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан двойной массив и обычный. Надо проверить сколько чисел из обычного массива совпадает с числами в каждой строке двоичного массива.
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
 class LotoAvto
    {
        static Random rnd = new Random();
       // static public int[,] mat;
        
        public static void Avto()
        
         {            
            int x;
            Console.SetCursorPosition(5, 2);
            Console.ResetColor();
            Console.Write("Enter number of row <1-14>:");
            x = int.Parse(Console.ReadLine());
            Console.WriteLine();
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("This is your number choose avtomaticly:");
            Console.WriteLine();
                      
            int[,] mat = new int[x, 6];
 
            for (int i = 0; i < mat.GetLength(0); i++)
            {
                for (int j = 0; j < mat.GetLength(1); j++)
                {
                    int value; 
                    bool a = true;
                    while (a)
                    {
                        a = false;
                        value = rnd.Next(1, 45);
                        for (int k = 0; k < mat.GetLength(0); k++)
                        {
                            for (int l = 0; l < mat.GetLength(1); l++)
                            {
                                if (value == mat[k, l])
                                    a = true; 
                            }
 
                        }
 
                        mat[i, j] = value;
 
                    }
 
                }
 
            }
 
 
 
            for (int i = 0; i < mat.GetLength(0); i++)
            {
                for (int j = 0; j < mat.GetLength(1); j++)
                {                    
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.Write("{0, 5}", mat[i, j]);
                }
 
                Console.WriteLine();
            }
 
            string str = "***** The winning numbers are: *****";
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.WriteLine();
            Console.WriteLine(str.PadRight(5, '*'));
            Console.WriteLine();
            Result.WinNumbers();
            Console.WriteLine();
           
           // Result.CheakResult(mat, wnarr);// ВОТ ЗДЕСЬ ПРОБЛЕМА!!!!! 
 
 /* public static void CheakResult( int[,] mat,int[] wnarr)// вот здесь у меня проблема начинается.... 
         {
             int index;           
      
        for (int i = 0; i <= mat.GetLength(0); i++)
            {
                   index = 0;
                   for (int j = 0; j <= mat.GetLength(1); j++)
                 {
                for (int w = 0; w < wnarr.Length; w++)
                {                     
                    if (mat[i,j]==wnarr[w])
                    {
                        index++;
                    }
                }
      
                 }
            score[i] = index;
                           
 
            }*//- Это как я написала метод, только он не работает, в чем ошибка?!! 
                
            Console.ReadLine();
        }
       
    }
                     // и вот простой массив:
  class Result
    {
        static int[] wnarr;
        static int[]score;
        static Random rnd = new Random();
 
        public static void WinNumbers()
        {
            const int SIZE = 6;
            int[] wnarr = new int[SIZE];
            InitArr(wnarr);
            PrintArr(wnarr);
        }
 
        private static void PrintArr(int[] wnarr)
        {
            for (int i = 0; i < wnarr.Length; i++)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.Write("{0, 5}", wnarr[i]);
 
            }
 
 
        }
 
        private static void InitArr(int[] wnarr)
        {
            for (int i = 0; i < wnarr.Length; i++)
            {
                wnarr[i] = rnd.Next(1, 45);
                for (int j = 0; j < i; j++)
                {
                    if (wnarr[i] == wnarr[j])
                    {
                        j = -1;
                        i--;
                        break;
                    }
                }
            }
        }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.04.2011, 12:46
Ответы с готовыми решениями:

Сравнение массивов
Добрый день Задание такое: Строка, содержащая произвольный русский текст, состоит не более чем из 200 символов. Написать, какие буквы и...

Сравнение массивов
Вот такая конструкция: int first = new int { 1, 1, 1, 1 }; int second = new int { 1, 1, 1, 1, }; if...

Сравнение массивов
Я думаю вам понятно что делает код. Вот только как сюда впихнуть перегрузку? using System; using System.Collections.Generic; using...

14
aj
9 / 9 / 0
Регистрация: 26.04.2010
Сообщений: 43
03.04.2011, 15:44
Чтобы проверить сколько значений двумерного массива == одномерного массиву я бы сделал так
C#
1
2
3
4
5
6
7
8
9
10
11
static void Main(string[] args)
        {
            int[,] mas1 = new int[6, 6]; //например
            int[] mas2 = new int[6];     
            int schetchik = 0;
 
            foreach (int temp in mas1)
                for (int i = 0; i < mas2.Length; i++)
                    if (temp == mas2[i])
                        schetchik++;
        }
Вы конечно сами решите какие значения должны иметь массивы и их размер.
0
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 11
03.04.2011, 22:27  [ТС]
Дело в том, что у меня есть уже массивы, и мне надо проверить именно их. Это контрольная по лотторее. К примеру двойной массив: это сколько строк(row) выбрал клиент и он заполняется автоматом случайн ыми цифрами от 1-45, по 6 в строке, а простой массив - это выигрышные номера(тоже 6). Теперь мне надо проверить сколько номеров совпало с выигрышными в каждой строке. Как я могу сделать new int[,]?
0
 Аватар для SandWraith
189 / 189 / 38
Регистрация: 11.04.2009
Сообщений: 497
03.04.2011, 23:34
Цитата Сообщение от Hana Посмотреть сообщение
сколько номеров совпало с выигрышными в каждой строке
C#
1
2
3
var selected = new List<int[]> { new int[]{1,2,3}, new int[]{2,3,4 } }; //массив "выбранных строк"
var numbers = new int[] { 2,3 }; //Выйгрышные номера
for (int i=0; i<selected.Count; i++) Console.WriteLine("В строке №{0} найдено {1} номеров", i, row.Where(e=>numbers.Contains(e)).Count());
0
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 11
04.04.2011, 01:18  [ТС]
var selected = new List<int[]> { new int[]{1,2,3}, new int[]{2,3,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
  public  static void WinNumbers()
        {
           // const int SIZE = 6;
            int[]wnarr = new int[6];
            InitArr(wnarr);
            PrintArr(wnarr);
        }
 
        static void PrintArr(int[] wnarr)
        {
            for (int i = 0; i < wnarr.Length; i++)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.Write("{0, 5}", wnarr[i]);
 
            }
 
 
        }
 
        static void InitArr(int[] wnarr)
        {
            for (int i = 0; i < wnarr.Length; i++)
            {
                wnarr[i] = rnd.Next(1, 45);
                for (int j = 0; j < i; j++)
                {
                    if (wnarr[i] == wnarr[j])
                    {
 
                        j = -1;
                        i--;
                        break;
                    }
                }
               
            }
0
 Аватар для SandWraith
189 / 189 / 38
Регистрация: 11.04.2009
Сообщений: 497
04.04.2011, 08:10
Цитата Сообщение от Hana Посмотреть сообщение
Так у меня же двойной массив...
Замените в том коде в цикле for неопределенную row на что-то типа такого метода вычлинения i-ой строки:
C#
1
2
3
4
static int[] GetRow(int[,] array, int row_no)
{
return (from i in Enumerable.Range(0,array.GetLength(1) select array[row_no, i]).ToArray();
}
0
aj
9 / 9 / 0
Регистрация: 26.04.2010
Сообщений: 43
04.04.2011, 08:54
Посмотрите на этот код правда на методы не разделил и проверку на random не делает. Надеюсь вы сами доделаете
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            Random rnd = new Random();
            int x;
            int[] viyg_ch = new int[6];
            bool flag = false;
 
            Console.Write("число строк в массиве: ");
            x = int.Parse(Console.ReadLine());
            int[,] chisla = new int[x, 6];
            for (int i = 0; i < x; i++)
                for (int j = 0; j < 6; j++)
                {
                    chisla[i, j] = rnd.Next(1, 45);
                }
 
            Console.WriteLine("Введите выигрышные числа: ");
            for (int i = 0; i < 6; i++)
            {
                viyg_ch[i] = int.Parse(Console.ReadLine());
            }
            for (int i = 0; i < x; i++)
                for (int j = 0; j < 6; j++)
                {
                    for (int k = 0; k < 6; k++)
                        if (viyg_ch[k] == chisla[i, j])
                        {
                            Console.WriteLine("В {0} строке выиграли числа {1}", (i + 1), viyg_ch[k]);
                            flag = true;
                        }
                }
            if (!flag)
                Console.WriteLine("Выигрышных номеров не совпало");
        }
    }
}
Добавлено через 11 минут
Цитата Сообщение от Hana Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
for (int i = 0; i < wnarr.Length; i++)
{
    wnarr[i] = rnd.Next(1, 45); 
    for (int j = 0; j < i; j++)
    {
         if (wnarr[i] == wnarr[j])  
          j = -1; i--; break;
    }
}
Этот ваш код мне вообще не понравился, я бы сказал пугает
0
 Аватар для SandWraith
189 / 189 / 38
Регистрация: 11.04.2009
Сообщений: 497
04.04.2011, 09:09
Цитата Сообщение от aj Посмотреть сообщение
int[,] chisla = new int[x, 6]; for (int i = 0; i < x; i++)
Лучше константу вынесете:
C#
1
2
3
4
5
6
7
private const int size = 6;
...
int[,] chisla = new int[x, size]; 
..
//for (int j = 0; j < size; j++)
или же:
for (int j = 0; j < chisla.GetLength(1); j++)
0
aj
9 / 9 / 0
Регистрация: 26.04.2010
Сообщений: 43
04.04.2011, 12:47
Цитата Сообщение от SandWraith Посмотреть сообщение
Лучше константу вынесете:
Ну это кому как, я просто показал путь.
0
24 / 23 / 5
Регистрация: 14.04.2010
Сообщений: 41
04.04.2011, 20:41
C#
1
2
3
var selected = new List<int[]> { new int[] { 1, 2, 3 }, new int[] { 2, 3, 4 } }; //массив "выбранных строк"
var numbers = new int[] { 1, 3 }; //Выйгрышные номера
var result = selected.Select(row => row.Count(e => numbers.Contains(e))).ToList();
Имеются строки:
1 2 3
2 3 4

В первой строке у массив (1,3) совпадают 2 числа, во второй - 1.
Соответственно result содержит массив (2,1), то есть количество совпадений для каждой строки двумерного массива

Если надо посчитать общее число совпадений, то

C#
1
int count = result.Sum();
З.Ы. заюзал пример SandWraith, надеюсь он не против)
0
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 11
05.04.2011, 13:50  [ТС]
Народ, спасибо, пошла терзать проект...используя ваши советы. Дело еще в том, что выигрышные номера я не могу ввести : это случайные числа. Скоро буду с новыми проблемами...

Добавлено через 1 час 53 минуты
C#
1
2
3
4
5
6
7
8
9
10
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
        Console.WriteLine("Введите выигрышные числа: ");
            for (int i = 0; i < 6; i++)
            {
                viyg_ch[i] = int.Parse(Console.ReadLine());
            }
Я не могу ввести выигрышные числа вручную. В то то и дело, что это отдельная функция со случайными числами. Но она мне возращает 0!! вместо значения. Поэтому я и не могу сравнить массивы....
0
 Аватар для SandWraith
189 / 189 / 38
Регистрация: 11.04.2009
Сообщений: 497
05.04.2011, 14:03
Цитата Сообщение от Hana Посмотреть сообщение
Но она мне возращает 0
Вернет массив длиной count из случайных элементов в диапазоне 0..max

C#
1
2
3
4
5
int[] GetRandomArray(int count, int max)
{
var rnd = new Random();
return Enumerable.Range(0,count).Select(i=>rnd.Next(max)).ToArray();
}
0
начал понимать msdn
57 / 57 / 6
Регистрация: 11.03.2010
Сообщений: 232
05.04.2011, 23:00
Держи файлик, правда он сделан в виндовс форм, но все же.
И еще код наверно немного "туповат" но работает, проверял.

Если нужно будет лотерейный билет сделать рандомно, напишешь, сделаю.
Вложения
Тип файла: rar WindowsFormsApplication4.rar (43.1 Кб, 10 просмотров)
0
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 11
07.04.2011, 23:10  [ТС]
Народ! Всем спасибо, добила я все таки свой проект. Как всегда оказалось когда сделаешь - так просто.. Можете глянуть мой проект по лотторее и "сравнение массивов".
Вложения
Тип файла: zip Lotto.zip (80.0 Кб, 35 просмотров)
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
08.04.2011, 18:49
Цитата Сообщение от Hana Посмотреть сообщение
Народ! Всем спасибо
 Комментарий модератора 
Если какой-либо пост на форуме показался вам полезным, нажмите кнопку "Спасибо" внизу самого поста.(Правила п.4.5)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.04.2011, 18:49
Помогаю со студенческими работами здесь

Сравнение массивов
Есть массив finiteVector и рваный массив Vectors. Нужно узнать какой из Vectors больше похож на finiteVector. Все массивы одинаковой...

сравнение трёх массивов
Исходные данные Входные данные состоят из трёх блоков по две строки. Первая строка каждого блока содержит целое число n —количество...

Сравнение массивов на идентичность
Есть такая задача: распознавание двух объектов. Короткий алгоритм такой: я ввожу данные 1-го объекта , данные 2-го объекта . Потом ввожу...

Сравнение строковых массивов
Здравствуйте. У меня есть 2 массива и 2 текстовых файла (в одном лежат вопросы, в другом - ответы). При запуске программы выходит 1-й...

Сравнение двух массивов.
Вопрос такой ,как сравнить 2 массива, и если они равны, то в тест боксе писать текст. Использовал код который ниже, но ничего не выходит,...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru