Дан целочисленный одномерный массив. Определить количество его одинаковых элементов - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Ребятушки,миленькие помогите) задача: дан целочисленный одномерный массив. определить количество его одинаковых элементов.(элементы ввести с клавиатуры) я решила сначала эту задачку так:
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char *argv[]) {
    int a[10],i,k=0;
    for (i = 0; i<10; i++)
       
        {
            printf("\n a[%d]=", i+1);
            scanf("%d", &a[i]);
        }
  
    for(i=0; i<10;i++)
        if (a[i]==a[i+1])
        k++;
 printf("%d", k);
system ("PAUSE");
    return 0;
}
Преподаватель поставила мне минус так как в данном коде я считаю одинаковые элементы только те которые идут следом друг за другом. сказала так: используй брейк. запоминай на каком месте у тебя прозошло несовпадение и начинай с этих чисел,потому что предыдущие у тебя уже совпали зачем же их сравнивать еще раз. я переделала код но программа не работает а перпод сказала что неверно. помогите. вот мой второй код. я незнаю какой из них вернее.
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char *argv[]) {
    int a[10],i,k,j, b[10];
    for (i = 0; i<10; i++)
       
        {
            printf("\n a[%d]=", i+1);
            scanf("%d", &a[i]);
        }
        b[j]=a[i];
  for (j=0;j<10;j++) 
  k=0;
  { for(i=0; i<10;i++)
        if (b[j]!=a[i+1]) break;
        k++; 
 printf("%d", k);}
system ("PAUSE");
    return 0;
}
то например ввела я склавиатуры такой набор 1213536331. результат должен показать что например 1-3штуки. 2-1штука и т.д.

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

textual
Листинг программы
#include <stdio.h>
 
int main() {
    const int size = 10;
    int array[size];
    int newArray[size];
    int index = 0;
    int flag = 0;
    int i, j;
    int counter;
    
    for ( i = 0; i < size; i++ ) {
        printf("a[%d]=", i+1);
        scanf("%d", &array[i]);
    }
    
    for ( i = 0; i < size; i++ ) {
        for ( j = 0, flag = 0; j <= index; j++ ) {
            if ( newArray[j] == array[i] ) {
                flag = 1;
            }
        }
        if ( flag == 0 ) {
            newArray[index] = array[i];
            
            for ( j = 0, counter = 0; j < size; j++ ) {
                if ( newArray[index] == array[j] ) {
                    counter += 1;
                }
            }
            if ( counter > 1 ) {
                printf("%d = %d\n", newArray[index], counter);
            }
            index += 1;
        }
    }
    
    return 0;
}

Объяснение кода листинга программы

Вывод кода на экран:

  1. Вводим значения массива a: a[1]=123 a[2]=456 a[3]=789 a[4]=123 a[5]=456 a[6]=789 a[7]=123 a[8]=456 a[9]=789 a[10]=123 a[11]=456 a[12]=789 a[13]=123 a[14]=456 a[15]=789 a[16]=123 a[17]=456 a[18]=789 a[19]=123 a[20]=456
  2. Выводим результат на экран: 123 = 3 456 = 3 789 = 3

Оцени полезность:

11   голосов , оценка 4.091 из 5
Похожие ответы