Форум программистов, компьютерный форум CyberForum.ru

Для каждого из чисел массива выяснить, сколько раз каждое из них входит в этот массив - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Asseni
24 / 24 / 1
Регистрация: 13.06.2010
Сообщений: 184
15.07.2011, 15:04     Для каждого из чисел массива выяснить, сколько раз каждое из них входит в этот массив #1
Задача
Дан массив целых чисел. Для каждого из этих чисел выяснить сколько раз каждое число входит в этот массив. Результат представить в виде ряда строк, первая из которых есть А1- k, где k - есть число вхождений А1 в последовательность. Вторая строка будет иметь вид Аi- m, где Аi -есть первый по порядку член, отличный от А1, m - число вхождений этого члена в последовательность и т.д.
т.е. например дан массив 11,25,4,11,11,4,9
элемент - кол-во вхождений
11 - 3
25 - 1
4 - 2
9 - 1

Из оригинального массива надо переписать элементы в массив уникальных элементов(т.е. чтобы они встречались по одному разу), в массив счетчиков соответственно записать сколько раз каждый элемент входит в массив. Что не так делаю? Помогите пожалуйста!
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
# include <conio.h>
# include <stdio.h>
 
void main ()
{
    const n = 7;
    int array1[n] = {11,25,4,11,11,4,9};  // оригинальный массив
    int array2[n] = {0};                // массив уникальных элемeнтов
    int array3[n] = {0};                // массив счетчиков
    int m = 0, index1 = 0 index2 = 0;
    
   for (int i = 0; i < n; i++)
   {
       int x = 0;   // счетчик кол-ва вхождений элемента в массив
       for (int j =  0; j < n; j++)
       {
          if (array1[i] == array1[j])
          {
            x++;
            m = array1[i];
          }
       }
       array2[index1] = m;
       index1++;
       array3[index2] = x;
       index2++;
   }
   for (i = 0; i < index2; i++)
   {
       printf ("%i - %i\n", array2[i], array3[i]);
   }
getch ();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2011, 15:04     Для каждого из чисел массива выяснить, сколько раз каждое из них входит в этот массив
Посмотрите здесь:

C++ Вычислить, сколько раз каждый элемент массива входит в массив
Одномерный массив: сколько раз повторяется каждое число C++
Выяснить, сколько чисел входит в последовательность по одному разу C++
C++ Дан массив целых чисел. Определить все уникальные числа в массиве и сколько раз каждое из них встречается в массиве.
C++ Дана строка содержащая текст. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.07.2011, 15:33     Для каждого из чисел массива выяснить, сколько раз каждое из них входит в этот массив #2
Asseni, Ну самое простое исправить Ваш код так:
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
# include <conio.h>
# include <stdio.h>
 
void main ()
{
    const int n = 7;
    int array1[n] = {11,25,4,11,11,4,9};  // оригинальный массив
    int array2[n] = {0};                // массив уникальных элемeнтов
    int array3[n] = {0};                // массив счетчиков
    int m = 0, index1 = 0, index2 = 0;
    
   for (int i = 0; i < n; i++)
   {
       int x = 0;   // счетчик кол-ва вхождений элемента в массив
       for (int j =  0; j < n; j++)
       {          
          if (array1[i] == array1[j])
          {
              if(j<i)
                  break;
            x++;
            m = array1[i];
          }
       }
       if(x!=0)
       {
            array2[index1] = m;
            index1++;
            array3[index2] = x;
            index2++;
       }
   }
   for (int i = 0; i < index2; i++)
   {
       printf ("%i - %i\n", array2[i], array3[i]);
   }
getch ();
}
M__A__K
47 / 47 / 2
Регистрация: 09.11.2010
Сообщений: 306
15.07.2011, 15:38     Для каждого из чисел массива выяснить, сколько раз каждое из них входит в этот массив #3
а в чём собственно проблема?
я запустил (исправив мелкие опечатки) и всё норм...

valeriikozlov, вместо if ( j < i ) можно цикл for (int j = 0; j < n; j++) заменить на for (int j = i; j < n; j++). проверка if(x!=0) вообще не нужна, т.к. элемент минимум 1 раз в массиве есть всегда
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.07.2011, 15:52     Для каждого из чисел массива выяснить, сколько раз каждое из них входит в этот массив #4
Цитата Сообщение от M__A__K Посмотреть сообщение
вместо if ( j < i ) можно цикл for (int j = 0; j < n; j++) заменить на for (int j = i; j < n; j++).
неправильно. Например для данной последовательности: 11,25,4,11,11,4,9
будет выведено:
11 - 3
...
11 -2
11-1
...
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
15.07.2011, 16:00     Для каждого из чисел массива выяснить, сколько раз каждое из них входит в этот массив #5
пошли бы ректальным путем. сортировку, и только потом переписывали бы ))
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
15.07.2011, 16:02     Для каждого из чисел массива выяснить, сколько раз каждое из них входит в этот массив #6
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
#include <stdio.h>
 
int main(void){
 
  const int size      = 7;
  int       arr[size] = { 11, 25, 4, 11, 11, 4, 9 };
  int       cnts[size];
  int       uniq[size];
  int       size_uniq = 0, chet;
 
  short id;
  for(int i = 0; i < size; i++) {
      chet = 0;
      for(int t = 0; t < size; t++) {
          if(arr[i] == arr[t])
              chet++;
      }
      id = 0;
      for(int u = 0; u < size_uniq; u++) {
         if(arr[i] == uniq[u]){
            id = 1;
            break;
         }
      }
      if(! id) {
         cnts[size_uniq] = chet;
         uniq[size_uniq] = arr[i];
         size_uniq++;
      }
  }
 
  for(int k = 0; k < size_uniq; k++)
      printf("%i - %i\n", uniq[k], cnts[k]);
 
  getchar();
  return 0;
}
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.07.2011, 16:06     Для каждого из чисел массива выяснить, сколько раз каждое из них входит в этот массив #7
Цитата Сообщение от co6ak Посмотреть сообщение
пошли бы ректальным путем. сортировку, и только потом переписывали бы ))
Цитата Сообщение от Asseni Посмотреть сообщение
Результат представить в виде ряда строк, первая из которых есть А1- k, где k - есть число вхождений А1 в последовательность. Вторая строка будет иметь вид Аi- m, где Аi -есть первый по порядку член, отличный от А1, m - число вхождений этого члена в последовательность и т.д.
сортировка здесь не пройдет ))
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
15.07.2011, 16:08     Для каждого из чисел массива выяснить, сколько раз каждое из них входит в этот массив #8
смотря как сортировать...
я не говорил что каким-нить пузырьком по возрастанию...
M__A__K
47 / 47 / 2
Регистрация: 09.11.2010
Сообщений: 306
15.07.2011, 16:08     Для каждого из чисел массива выяснить, сколько раз каждое из них входит в этот массив #9
valeriikozlov, прошу прощения, я не достаточно внимательно просмотрел ваш код
Asseni
24 / 24 / 1
Регистрация: 13.06.2010
Сообщений: 184
15.07.2011, 16:12  [ТС]     Для каждого из чисел массива выяснить, сколько раз каждое из них входит в этот массив #10
valeriikozlov
Как все просто оказалось, спасибо за помощь

xAtom
можно и так, заметила что лишняя переменная имеется, заменила index1 и index2 на index, и вместо id = 1, удобно будет bool применить, ну это на любителя

Всем огромное спасибо!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2011, 16:12     Для каждого из чисел массива выяснить, сколько раз каждое из них входит в этот массив
Еще ссылки по теме:

C++ Дан массив целых чисел,произвести для него следующие операции: для каждого из чисел ,входящего в массив,указать,сколько раз оно входит в массив...
Дан файл, содержащий текст на русском языке. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз C++
Дан файл, содержащий текст на русском языке. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз C++

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

Или воспользуйтесь поиском по форуму:
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.07.2011, 16:12     Для каждого из чисел массива выяснить, сколько раз каждое из них входит в этот массив #11
Цитата Сообщение от M__A__K Посмотреть сообщение
прошу прощения, я не достаточно внимательно просмотрел ваш код
не за что )))
код на самом деле изначально не мой )))
Yandex
Объявления
15.07.2011, 16:12     Для каждого из чисел массива выяснить, сколько раз каждое из них входит в этот массив
Ответ Создать тему
Опции темы

Текущее время: 13:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru