Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 15.11.2012, 18:07   #1
maxwel6064
Пользователь
 
Регистрация: 24.03.2011
Сообщений: 28
По умолчанию Найти количество повторяющихся элементов массива в C

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

Код:
#include <stdio.h>
#include <stdlib.h>
 
int main () 
{
        int mas[100], masg[100];
        int a,n,il,i,k,j, tinka;
        int kiekis;
        kiekis=0;
    printf("Vvedite kolichestvo elementov v masive \n");
    scanf("%d",&n);
    for (i=1;i<=n;i++) 
    {
        printf("Vvedite %d -tyj element\n",i);
        scanf ("%d",&mas[i]);
    }
    printf("Vvedennij massiv: \n");
    for (i=1;i<=n;i++) 
    {
        printf("%5d",mas[i]);
    }
    printf("\n");
    il=0;
    for (i=1;i<=n;i++)
        {
                tinka=1;
        for (k=1;k<=n;k++)
                        if(i != k)
                                if(mas[i]==mas[k])
                                        tinka=0;
                if(tinka==0)
                {
                        il++;
                        masg[il]=mas[i];
                }
                     
    }
    printf("Masiv s povtoriajushimisya chislami: \n");
    for (i=1;i<=il;i++) 
    {
        printf("%5d\n",masg[i]);
}
    printf("\n");
    system("pause");
    return 0;
}
Как-то ближе к вечеру голова не очень варит. На всякий случай напишу условие задачи: Дан массив целых чисел, в котором числа могут повторяться. Создайте новый массив, в который попадут только повторяющиеся числа. Заранее спасибо
maxwel6064 вне форума Ответить с цитированием
Старый 15.11.2012, 18:29   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

С потолка но:
Код:
a=0;
    for (i=1;i<=n;i++) 
    {
        printf("Vvedite %d -tyj element\n",i);
        scanf ("%d",&mas[i]);
        for(int j=0;j<i;j++) 
         if(mas[j]==mas[i]) {
           bool b=true; for(int k=0;k<a;k++) if (masg[k]==mas[i]){b=false; break;}
           if(b) masg[a++]=mas[i]; 
          break;
         }
    }
Смысл в проходе после ввода нового элемента, и проверке - существует ли он во втором массиве. Если да то не вносить, иначе вносить. Естесственно вносить только если он уже был введен.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.11.2012, 20:39   #3
maxwel6064
Пользователь
 
Регистрация: 24.03.2011
Сообщений: 28
По умолчанию

А возможно ли как-нибудь исправить именно мое решение, чтобы оно выводило количество повторяющихся элементов?
maxwel6064 вне форума Ответить с цитированием
Старый 15.11.2012, 21:13   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Я по большему счету как раз твое и поправил )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.11.2012, 15:19   #5
maxwel6064
Пользователь
 
Регистрация: 24.03.2011
Сообщений: 28
По умолчанию

Попробовал еще сам изменить программу вот таким образом:

Код:
#include <stdio.h>
#include <stdlib.h>

int main () {
        int mas[100], masg[100];
        int a,n,il,i,k,j, tinka;
        int s;

    printf("Vvedite skolko elementov budet v masive \n");
    scanf("%d",&n);
    for (i=1;i<=n;i++) 
    {
        printf("Vvedite %d -tyj element masiva\n",i);
        scanf ("%d",&mas[i]);
    }
    printf("Vvedennij massiv: \n");
    for (i=1;i<=n;i++) 
    {
        printf("%5d",mas[i]);
    }
    printf("\n");
    il=0;
    s=0;
    for (i=1;i<=n;i++)
        {
                tinka=0;
        for (k=1;k<=n;k++)
                        if(i != k)
                                if(mas[i]==mas[k])
                                        tinka=1;
                if(tinka==1)
                {     
                        il=il+1;
                        masg[il]=mas[i];
                }
    }
    printf("Massiv s povtorijushimisia elementami: \n");
    for (i=1;i<=il;i++) 
    {
        printf("%5d",masg[i]);
    }
    printf("\n");
    printf("Kolichestvo povtoriajushihsia elementov v masive: %d\n", il/2);
    system("pause");
    return 0;
}
Можно ли считать его правильным?
maxwel6064 вне форума Ответить с цитированием
Старый 16.11.2012, 15:47   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Если отрабатівает правильно то да )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.11.2012, 17:03   #7
maxwel6064
Пользователь
 
Регистрация: 24.03.2011
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Если отрабатівает правильно то да )
Понимаете, я хотел бы услышать мнение программистов, т.к, что может казаться мне правильным, на самом деле может быть неправильно. Так-то на данный момент вроде бы программа все нормально обрабатывает, но хотел бы узнать, правильно ли это было мной сделано с точки зрения программирования.
maxwel6064 вне форума Ответить с цитированием
Старый 16.11.2012, 18:33   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Программа выдала правильный результат - какое еще мнение может быть?
Конечно же программа правильная.
Если ты боишься что кто-то будет называть программу быдлокодом, то просто не обращай внимания. Если программа не предназначена для разработок в группе то не имеет никакого значения как ты ее написал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме 20000 рублей в месяц

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти сумму и количество отрицательных элементов массива lavric666 Паскаль, Turbo Pascal, PascalABC.NET 6 01.11.2012 16:02
Найти количество повторяющихся элементов. xEk Помощь студентам 3 14.05.2012 22:08
Найти НОД максимального элемента массива и количество элементов. Zzoyberg Помощь студентам 0 28.12.2011 02:11
С++ найти количество элементов массива по условию severest Помощь студентам 1 01.05.2011 17:43
Найти количество положительных и нулевых элементов массива Rec0rd Помощь студентам 2 31.01.2010 20:24


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS