Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
Asseni
24 / 24 / 4
Регистрация: 13.06.2010
Сообщений: 184
#1

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

15.07.2011, 15:04. Просмотров 1582. Ответов 10
Метки нет (Все метки)

Задача
Дан массив целых чисел. Для каждого из этих чисел выяснить сколько раз каждое число входит в этот массив. Результат представить в виде ряда строк, первая из которых есть А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 ();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2011, 15:04
Ответы с готовыми решениями:

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

Дан массив целых чисел. Определить все уникальные числа в массиве и сколько раз каждое из них встречается в массиве.
Написать программу для решения следующей задачи. Дан массив целых чисел....

Вычислить, сколько раз каждый элемент массива входит в массив
1. Дано действительные числа q, r, b, c, d и натуральное n ( n &gt;= 2 ). Пусть...

Выяснить, сколько раз каждое из слов файла f2 встречается в файле f1
Рассматриваются слова, содержащиеся в символьных файлах f1 и f2....

Выяснить, сколько раз в данную последовательность входит группа подряд идущих символов, образующих слово
Выяснить, сколько раз в данную последовательность входит группа подряд идущих...

10
valeriikozlov
Эксперт С++
4683 / 2509 / 751
Регистрация: 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 ();
}
0
M__A__K
47 / 47 / 6
Регистрация: 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 раз в массиве есть всегда
0
valeriikozlov
Эксперт С++
4683 / 2509 / 751
Регистрация: 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
...
0
co6ak
Кошковед
515 / 503 / 63
Регистрация: 12.04.2010
Сообщений: 1,392
15.07.2011, 16:00 #5
пошли бы ректальным путем. сортировку, и только потом переписывали бы ))
0
xAtom
917 / 742 / 299
Регистрация: 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;
}
0
valeriikozlov
Эксперт С++
4683 / 2509 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
15.07.2011, 16:06 #7
Цитата Сообщение от co6ak Посмотреть сообщение
пошли бы ректальным путем. сортировку, и только потом переписывали бы ))
Цитата Сообщение от Asseni Посмотреть сообщение
Результат представить в виде ряда строк, первая из которых есть А1- k, где k - есть число вхождений А1 в последовательность. Вторая строка будет иметь вид Аi- m, где Аi -есть первый по порядку член, отличный от А1, m - число вхождений этого члена в последовательность и т.д.
сортировка здесь не пройдет ))
0
co6ak
Кошковед
515 / 503 / 63
Регистрация: 12.04.2010
Сообщений: 1,392
15.07.2011, 16:08 #8
смотря как сортировать...
я не говорил что каким-нить пузырьком по возрастанию...
0
M__A__K
47 / 47 / 6
Регистрация: 09.11.2010
Сообщений: 306
15.07.2011, 16:08 #9
valeriikozlov, прошу прощения, я не достаточно внимательно просмотрел ваш код
0
Asseni
24 / 24 / 4
Регистрация: 13.06.2010
Сообщений: 184
15.07.2011, 16:12  [ТС] #10
valeriikozlov
Как все просто оказалось, спасибо за помощь

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

Всем огромное спасибо!!!
0
valeriikozlov
Эксперт С++
4683 / 2509 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
15.07.2011, 16:12 #11
Цитата Сообщение от M__A__K Посмотреть сообщение
прошу прощения, я не достаточно внимательно просмотрел ваш код
не за что )))
код на самом деле изначально не мой )))
0
15.07.2011, 16:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2011, 16:12

Выяснить, сколько чисел входит в последовательность по одному разу
Условие задачи написано в шапке кода программы. Я написал эту программу,...

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

Дана строка содержащая текст. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз
Дана строка содержащая текст. Выяснить, входит ли данное слово в указанный...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru