Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 08.10.2009
Сообщений: 37
1

Найти количество одинаковых элементов массива

10.01.2010, 22:14. Показов 5118. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите в решение я работаю на борланде Си
Задание:
Найти количество одинаковых элементов массива А(N) (N=21, элементы от -4 до 4)

Как можно сравнить элементы массива с элементами массива?

Если можно полностью прогу написать=)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.01.2010, 22:14
Ответы с готовыми решениями:

Найти количество одинаковых элементов массива
Найти количество одинаковых элементов массива и дописать это количество в этот же массив, помогите...

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

Найти количество одинаковых элементов двухэлементного массива А={а[і]}
найти количество одинаковых элементов двухэлементного массива А={а}

Найти максимальное количество одинаковых элементов массива
Задание: Максимальное количество одинаковых элементов Дан массив размера N. Найдите максимальное...

15
135 / 69 / 12
Регистрация: 10.10.2009
Сообщений: 187
10.01.2010, 22:29 2
вот что то набросал только код надо еще доработать до условия проверок точных
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
void main()
  {
   randomize();
   clrscr();
 
   int i,j,size=0,m=0,temp;
 
   int *A;
   A=(int *)calloc(21,sizeof(int));
 
   cout<<"\nmasiv:\n";
   for(i=0;i<21;i++)
    {
     A[i]=random(8)-4;
     cout<<A[i]<<" ";
    }
 
    for(i=0;i<21;i++)
     {
      for(j=0;j<21;j++)
       { 
        if(A[i] == A[j])
         {
          size++;
         }
       }
     }
     
     cout<<"\nSize="<<size;
 getch();
 }
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
10.01.2010, 22:34 3
Цитата Сообщение от Nasdfgh Посмотреть сообщение
Как можно сравнить элементы массива с элементами массива?
Самое простое - отсортировать (всё равно, по убыванию, или по возрастанию) и считать, сколько подряд одинаковых идёт...
2
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
10.01.2010, 22:37 4
easybudda, хитро
0
135 / 69 / 12
Регистрация: 10.10.2009
Сообщений: 187
10.01.2010, 22:40 5
да так намного проще
0
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
10.01.2010, 22:43 6
а можо создать масив на 9 элементов от -4 до 4 включительно и увеличивать значения для соответствующего индекса
0
135 / 69 / 12
Регистрация: 10.10.2009
Сообщений: 187
10.01.2010, 22:46 7
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
void sort(int *A);
 
void main()
  {
   randomize();
   clrscr();
   int i,j,size=0,m=0,temp;
   int *A;
   A=(int *)calloc(21,sizeof(int));
   cout<<"\nmasiv:\n";
   for(i=0;i<21;i++)
    {
     A[i]=random(8)-4;
     cout<<A[i]<<" ";
    }
   cout<<"\n";
   sort(A);
   for(i=0;i<21;i++)
     {
      cout<<A[i]<<" ";
     }
     m1:
    for(i=m;i<21;i++)
     {
      if(A[i] == A[i+1])
       {
        size ++;
       }
      else
       {
        m=i+1;
        goto m1;
       }
     }
    cout<<"Size="<<size;
 getch();
 } 
 void sort(int *A)
 {
  int temp,i,j;
  for(i=0;i<21;i++)
   {
    for(j=0;j<21;j++)
     {
      if(A[i]<A[j])
       {
        temp=A[i];
        A[i]=A[j];
        A[j]=temp;
       }
     }
   }
  }
0
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
10.01.2010, 22:47 8
C++
1
2
3
4
5
6
7
int mas[21];
int* a = (int *) calloc (9, sizeof(int));
a += 5;
for (int i = 0; i < 21; ++i)
     ++a[mas[i]];
for (int i = -4; i < 5; ++i)
     cout << i << " встречается - " << a[i] << "раз" << endl;
Добавлено через 38 секунд
Radjuk, а у меня кода на порядок меньше))
0
135 / 69 / 12
Регистрация: 10.10.2009
Сообщений: 187
10.01.2010, 22:49 9
outoftime, аххаха)
1
0 / 0 / 0
Регистрация: 08.10.2009
Сообщений: 37
10.01.2010, 22:52  [ТС] 10
Спасибо все ясно=)
Еще если можно вопрос: как можно вывести на двухмерный массив на экран с помощья оператора printf

Просто кусочеГ проги напишите=)
0
135 / 69 / 12
Регистрация: 10.10.2009
Сообщений: 187
10.01.2010, 22:54 11
C
1
2
3
4
5
6
7
8
for(i=0;i<n;i++)
 {
 for(j=0;j<n;j++)
  {
   printf("%d ",a[i][j]);
  }
 printf("\n");
}
0
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
10.01.2010, 22:54 12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main()
{
       int mas[21];
       for (int i = 0; i < 21; ++i)
              mas[i] = rand()%9-4;
       int* a = (int *) calloc (9, sizeof(int));
       a += 5;
       for (int i = 0; i < 21; ++i)
              ++a[mas[i]];
       for (int i = -4; i < 5; ++i)
              cout << i << " встречается - " << a[i] << "раз" << endl;
       return 0;
}
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
10.01.2010, 23:27 13
Во:
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int intCmp(const void *a, const void *b){
    return *(int*)a - *(int*)b;
}
 
/* Найти количество одинаковых элементов массива А(N) (N=21, элементы от -4 до 4 */
#define N 21
 
int main(void){
    int arr[N], i, j;
    
    srand(time(NULL));
    for ( i = 0; i < N; ++i )
        arr[i] = rand() % 9 - 4;
    
    printf("\nArray: ");
    for ( i = 0; i < N; ++i )
        printf("%2d ", arr[i]);
    printf("\nValue  Count\n");
    qsort(arr, N, sizeof(*arr), intCmp);
    for ( i = 0; i < N - 1; ){
        for ( j = i + 1; j < N && arr[i] == arr[j]; ++j )
            ;
        printf("%-7d%-5d\n", arr[i], j - i);
        i = j;
    }
    if ( i == N - 1 )
        printf("%-7d%-5d\n", arr[i], 1);
    
    return 0;
}
Добавлено через 22 минуты
Цитата Сообщение от outoftime Посмотреть сообщение
а можо создать масив на 9 элементов
А тоже вариант!
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
    
/* Найти количество одинаковых элементов массива А(N) (N=21, элементы от -4 до 4 */
#define N 21
#define T 9 /* top */
#define D 4 /* delta */
 
int main(void){
    int arr[N], cnt[T] = { 0 }, i;
    
    srand(time(NULL));
    for ( i = 0; i < N; ++i ){
        arr[i] = rand() % 9;
        printf("%d ", arr[i] - D);
        cnt[arr[i]] += 1;
    }
    
    for ( i = 0; i < T; ++i )
        printf("\n%d meet %d times", i - D, cnt[i]);
    
    return 0;
}
Но это хорошо, когда количество значений небольшим числом ограничено...
0
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
11.01.2010, 06:35 14
Цитата Сообщение от easybudda Посмотреть сообщение
А тоже вариант!
причем посмотрите на сколько короче))
0
0 / 0 / 0
Регистрация: 08.10.2009
Сообщений: 37
11.01.2010, 22:20  [ТС] 15
я сделал так можете подправить а то значения выдаёт приличные
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
void main()
{
  int i, j, size, A[21];
 
  srand(time(NULL));
 
  for (i = 0; i < 21; i++)
   A[i] = rand()%28 - 6;
 
  A[j] = A[i];
 
  for (i = 0; i < 21; i++)
   {
     for(j = 0; j < 21; j++)
      if(A[i] == A [j])
       size++;
   }
  printf("otvet:%d\n", size);
  system("PAUSE");
}
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
11.01.2010, 22:57 16
Цитата Сообщение от Nasdfgh Посмотреть сообщение
A[i] = rand()%28 - 6;
хм... задание изменилось?
C
1
2
3
4
5
6
  for (i = 0; i < 21; i++)
   {
     for(j = 0; j < 21; j++)
      if(A[i] == A [j])
       size++;
   }
в принципе не правильно! так получится, что если одно значение 3 раза (к примеру) в массиве встречается, то оно три раза по три посчитается, получится 9. Потому и нужно либо чтобы значения подряд шли, либо второй массив заводить, в котором значения первого в качестве индексов будут. Ну может и ещё какой хитрый способ есть, но его тут пока никто не озвучил.
0
11.01.2010, 22:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.01.2010, 22:57
Помогаю со студенческими работами здесь

Найти количество пар одинаковых рядом стоящих элементов массива
Найти количество пар одинаковых рядом стоящих элементов массива

количество одинаковых элементов массива
Помогите пожалуйста написать программу, которая бы считывала 4 числа из файла, считала количество...

Определить максимальное количество одинаковых элементов массива
Доброго времени суток. Нужна помощь по задаче. Никак не могу понять, в чём же проблема. &quot;Дан...

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


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

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