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

Пожалуйста нужен ваш опыт определить одинаковые элементы массива и вставить количество одинаковых как префикс

14.03.2013, 16:19. Показов 1860. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я знаю это наверно на самом деле очень легкая задача, но я только начинаю и пока у меня не все получается, по этому Очень прошу вас помочь с задачей.
пример массива:
Количество цифр// 8
Сами цифры // 1 1 2 3 3 3 7 7 ответ такой // 2 1 1 2 3 3 2 7 То есть 2 единицы одна двойка 3 тройки две семерки

Я чета попытался сделать и по логике вроде бы должно работать, но не тут то было, получается Параша!

using System;
using System.Text;

namespace ConsoleApplication1
{
class Program16
{
static void Main()
{
int n = int.Parse(Console.ReadLine());
string[] str = new string[n];
string[] result = new string[n];
int summ = 0;
str = Console.ReadLine().Split(' ');
Array.Sort(str);
for (int i = 0; i < str.Length-1; i++)
{
if (str[i] == str[i + 1])
{
summ++;
result[i] = str[i + 1];
}
else
{
result[i] = str[i];
summ = 1;
}
}

foreach (string s in result)
Console.Write("{0} ",summ + " " + s);
Console.ReadLine();

}
}
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.03.2013, 16:19
Ответы с готовыми решениями:

Нужен ваш опыт. (Связанный с обучением C#)
1) Учу C# несколько недель. Первый язык программирования. Иду по книге Шилда (С# 4.0). Практически закрепляю на лабах в универе, но...

Подскажите пожалуйста как подсчитать количество одинаковых элементов массива
for (a=3;a&lt;=iRowsCount-1;a++) { yach= mExcel.OlePropertyGet(&quot;ActiveSheet&quot;).OlePropertyGet(&quot;Cells&quot;, a, 2).OlePropertyGet(&quot;Value&quot;); pl=...

Очень нужен ваш совет. Вставить musicxml, pdf. КАК? Что делать?
HTML5. Вставить musicxml. КАК??? Что делать? Ребят, подскажите пожалуйста начинающей...=((((( Передо мной стоит такая задача: нужно...

8
Заблокирован
14.03.2013, 17:09
kami_botanik, элементы массива цифры от 0-9 или произвольные числа? Это принципиально для построения алгоритма, если произвольные числа, тогда нужно использовать ассоциативный массив, а если от 0-9 до можно завести массив длиной 10, забитый нулями и считать количество каждой цифры.

Добавлено через 32 минуты
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
      //это если у нас элементы массива 0-9
        private static int[] wtf1(int[] a)
        {
            var c = new int[10];
            for (int i = 0; i < c.Length; ++i) c[i] = 0;
            for (int i = 0; i < a.Length; ++i) ++c[a[i]];
            var r = new List<int>(a.Length + c.Length);
            for(int i = 0; i < c.Length; ++i) if(c[i] > 0) r.Add(c[i]);
            r.AddRange(a);
            return r.ToArray();
        }
 
        //произвольные целые элементы
        private static int[] wtf2(int[] a)
        {
            var c = new SortedDictionary<int, int>(); //sorted потому что нам нужно, чтобы ключи были отсортированы. 
            for (int i = 0; i < a.Length; ++i)
            {
                if (c.ContainsKey(a[i])) ++c[a[i]]; else c.Add(a[i], 1); 
            }
            var r = new List<int>(a.Length + c.Count);
            r.AddRange(c.Values);
            r.AddRange(a);
            return r.ToArray();
        }
0
Заблокирован
14.03.2013, 17:28
C#
1
2
3
4
5
6
7
8
9
 int[] Init = { 2, 2, 1, 3, 3, 2, 1 };
 
 
 
            var result = (from elem in Init
                          group elem by elem into g
                          select g.Count()).ToArray();
 
            //result=3,2,2 -массив количества каждого вхождения элемента
0
Заблокирован
14.03.2013, 17:37
Urety, ответ преподавателя: Linq - это хорошо, а теперь давай разверни мне все это на листочке в алгоритм на псевдо коде.
0
Заблокирован
14.03.2013, 17:47
Цитата Сообщение от loro Посмотреть сообщение
Urety, ответ преподавателя: Linq - это хорошо, а теперь давай разверни мне все это на листочке в алгоритм на псевдо коде.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
int[] Init = { 2, 2, 1, 3, 3, 2, 1 };
 
  var result2 = Init.GroupBy(
                delegate(int elem)
                {
                    return elem;
                }
                ).Select(delegate(IGrouping<int, int> group)
            {
                return group.Count();
            }
                ).ToArray();
//result=3,2,2 -массив количества каждого вхождения элемента
0
0 / 0 / 0
Регистрация: 14.03.2013
Сообщений: 3
14.03.2013, 17:53  [ТС]
Спасибо большое за отзывчивость! Но честно говоря я нифига не понял то что вы тут наделали )) Говорю же что я начинающий! А можно как нибудь по проще, Без List. без ContainsKey И по моему я не смог вам правильно объяснить цель задачи! Я вам лучше дам текст прям из исходника :
Вася и Петя решили принять участие в командной олимпиаде по информатике. Но они слушали рассказы ветеранов спортивного программирования, а поэтому знали, что, помимо умения хорошо программировать, очень важна сыгранность участников. Поэтому они решили отрабатывать навыки работы в команде.
Вася написал на бумажке последовательность натуральных чисел и стал диктовать её Пете. Причём, для краткости, он диктует её так: сначала говорит количество подряд идущих одинаковых чисел, а затем говорит, что это за числа. Например, последовательность «1 1 2 3 3 3 10 10» он продиктует как «две единицы, одна двойка, три тройки, две десятки». Петя же, тоже для краткости, записывает вместо слов числа, которые говорит Вася. В указанном примере Петя запишет на бумажку: «2 1 1 2 3 3 2 10».
Отработав этот навык, друзья решили ещё потренироваться в программировании и научить компьютер преобразовывать последовательность Васи в последовательность Пети.
Исходные данные
В первой строке находится целое число N — количество чисел, записанных Васей (1 ≤ N ≤ 1000). Во второй строке через пробел записаны эти числа. Все числа целые, положительные и не превосходят 10.
Результат
В единственной строке выведите через пробел числа, которые должен был бы записать на бумажке Петя.
Пример
исходные данные результат
8
1 1 2 3 3 3 10 10 Ответ: 2 1 1 2 3 3 2 10
Вот!
0
Заблокирован
14.03.2013, 18:02
Urety, не пугай меня.
0
0 / 0 / 0
Регистрация: 14.03.2013
Сообщений: 3
14.03.2013, 18:24  [ТС]
Цитата Сообщение от loro Посмотреть сообщение
Urety, не пугай меня.
В смысле? ))) Да я даже и не думал! ) Ну помогите же а! ... ))

Добавлено через 4 минуты
Цитата Сообщение от Urety Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
int[] Init = { 2, 2, 1, 3, 3, 2, 1 };
 
  var result2 = Init.GroupBy(
                delegate(int elem)
                {
                    return elem;
                }
                ).Select(delegate(IGrouping<int, int> group)
            {
                return group.Count();
            }
                ).ToArray();
//result=3,2,2 -массив количества каждого вхождения элемента
Какое количество вхождения? Я не понял все равно че ты тут исполнял! Но все равно по требованиям задачи твой ответ не правильный у тебя должно получиться : 3 2 2 1 2 3
0
Заблокирован
14.03.2013, 19:30
Цитата Сообщение от kami_botanik Посмотреть сообщение
Пример
исходные данные результат
8
1 1 2 3 3 3 10 10 Ответ: 2 1 1 2 3 3 2 10
Вот!
Не обратил внимания на необходимый результат.
Вот так как нужно:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 // Условие: 1 1 2 3 3 3 7 7 
            int[] Init = { 1, 1, 2, 3, 3, 3, 7, 7 };
 
            var res = (from elem in Init
                       group elem by elem into g
                       from elem2 in Init
                       where g.Contains(elem2)
                       select new { count = g.Count(), elem = elem2 }).Distinct();
 
            //Вывод результата
            String result = String.Empty;
            foreach (var r in res) result += r.count.ToString() + r.elem.ToString();
 
            //Ответ: result= 2 1 1 2 3 3 2 7
Добавлено через 2 минуты
Цитата Сообщение от kami_botanik Посмотреть сообщение
В смысле? ))) Да я даже и не думал! ) Ну помогите же а! ... ))

Добавлено через 4 минуты

Какое количество вхождения? Я не понял все равно че ты тут исполнял! Но все равно по требованиям задачи твой ответ не правильный у тебя должно получиться : 3 2 2 1 2 3
Условие сначала недосмотрел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.03.2013, 19:30
Помогаю со студенческими работами здесь

Задайте мне пожалуйста задачи, нужен опыт.
Здравствуйте. У меня есть идея: каждый не равнодушный предлагает мне в этой теме реализацию какой-то задачи на PHP, потом я выбираю что-то...

Концепция Java; Как работать с заказчками; Ваш опыт
Я очень прошу обратить на этот пост внимание опытных программистов, хотелось бы чтобы каждый оставил свое мнение и поделился опытом. ...

Определить максимальное количество одинаковых элементов массива
Определить максимальное количество одинаковых элементов массива.

Определить максимальное количество одинаковых элементов массива
Дано целочисленный массив размера N. Определить максимальное количество его одинаковых элементов. Обязательно использовать функцию и...

Определить максимальное количество одинаковых элементов массива
дан целочисленный массив размера N. определить максимальное количество его одинаковых элементов. #include &lt;stdio.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru