0 / 0 / 0
Регистрация: 27.12.2014
Сообщений: 36

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

12.01.2015, 16:27. Показов 1605. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребятушки,миленькие помогите) задача: дан целочисленный одномерный массив. определить количество его одинаковых элементов.(элементы ввести с клавиатуры)
я решила сначала эту задачку так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#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;
}
Преподаватель поставила мне минус так как в данном коде я считаю одинаковые элементы только те которые идут следом друг за другом. сказала так: используй брейк. запоминай на каком месте у тебя прозошло несовпадение и начинай с этих чисел,потому что предыдущие у тебя уже совпали зачем же их сравнивать еще раз. я переделала код но программа не работает а перпод сказала что неверно. помогите. вот мой второй код. я незнаю какой из них вернее.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#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штука и т.д.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.01.2015, 16:27
Ответы с готовыми решениями:

Дан одномерный массив Xn. Найти количество положительных элементов массива
17.1. Дан одномерный массив Xn. Найти количество положительных элементов массива. Вывести на экран компьютера номера и значение всех...

Дан целочисленный массив. Вывсети на экран индексы тех элементов, совпадающих с максимальным элементом массива
Всем доброго времени суток! Задача:Дан целочисленный массив. Вывсети на экран индексы тех элементов, совпадающих с максимальным элементом...

Дан целочисленный массив размера N. Определить максимальное количество его одинаковых элементов
Помогите пж using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace...

11
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
12.01.2015, 16:49
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>
 
#define DIGIT 10
 
int main() {
    int sequence, i;
    int array[DIGIT];
    
    for ( i = 0; i < DIGIT; i++ ) {
        array[i] = 0;
    }
    
    for ( ; scanf("%1d", &sequence) == 1; ) {
        array[sequence] += 1;
    }
    
    for ( i = 0; i < DIGIT; i++ ) {
        if ( array[i] > 0 ) {
            printf("%d = %d\n", i, array[i]);
        }
    }
    
    return 0;
}
Code
1
2
3
4
5
6
7
8
9
@stdin:
1213536331
 
@stdout:
1 = 3
2 = 1
3 = 4
5 = 1
6 = 1
0
0 / 0 / 0
Регистрация: 27.12.2014
Сообщений: 36
12.01.2015, 16:52  [ТС]
спасибо за ответ. Извините,посмею еще попросить а нельзя такими обозначениями как вот я писала. а то мне кажется мы на каких то разных языках(.я всего лишь первокурсница и мне еще тяжело разбираться.спасибо за понимание****
0
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
12.01.2015, 17:47
Вот расширенный вариант для ввода чисел больше чем от 0 до 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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#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++ ) {
        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;
}
Code
1
2
3
4
5
6
7
@stdin:
42 11 32 11 15 42 8 32 43 11
 
@stdout:
42 = 2
11 = 3
32 = 2
Добавлено через 1 минуту
Если смущает в предыдущем варианте Макрос DIGIT, то замени его переменной:
Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
 
int main() {
    const int digit = 10;
    int sequence, i;
    int array[digit];
    
    for ( i = 0; i < digit; i++ ) {
        array[i] = 0;
    }
    
    for ( ; scanf("%1d", &sequence) == 1; ) {
        array[sequence] += 1;
    }
    
    for ( i = 0; i < digit; i++ ) {
        if ( array[i] > 0 ) {
            printf("%d = %d\n", i, array[i]);
        }
    }
    
    return 0;
}
0
 Аватар для solar_wind
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
13.01.2015, 09:31
Что такое "количество его одинаковых элементов."?
массив 1 5 6 1 1 5 5 5 7 6 6 9 имеет какое количество одинаковых элементов?
0
0 / 0 / 0
Регистрация: 27.12.2014
Сообщений: 36
13.01.2015, 11:29  [ТС]
ну вот цифр 5-4штуки, 1-3шт
0
 Аватар для solar_wind
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
13.01.2015, 11:42
То есть для каждого элемента определить его количество?
0
13.01.2015, 11:49
 Комментарий модератора 
Anna16, обязательно штамповать дубли? Вчера создала, сегодня создаешь? В чем проблема с тем кодом, который был вчера тебе приведен? Не устраивает - продолжала бы обсуждение ТАМ ЖЕ, зачем опять заново всё начинать? Темы объединены. Пока устное предупреждение, в следующий раз последуют белее жесткие меры.
0
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
13.01.2015, 12:09
Я ведь уже написал готовый вариант. Вот вариант со скобочками (дописал аж одну строку printf), может котиков ещё добавить?!
Кликните здесь для просмотра всего текста
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
#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;
}


Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@stdin:
a[1]=1
a[2]=23
a[3]=7
a[4]=14
a[5]=1
a[6]=1
a[7]=23
a[8]=7
a[9]=14
a[10]=1
 
@stdout:
1 = 4
23 = 2
7 = 2
14 = 2
0
0 / 0 / 0
Регистрация: 27.12.2014
Сообщений: 36
13.01.2015, 12:17  [ТС]
у меня ваш код не работает! я ввожу элементы до бесконечности они никогда не останавливаются.и соответсвенно не выдает результат.
for ( ; scanf("%1d", &sequence) == 1; ) {
array[sequence] += 1; это я совершенно не понимаю. посмотрите какие коды я прислала(((( я учусь всего 4 месяца из них уроков программирования было 10 это очень мало.каждый материал объясняют вкратце и простым языком. я бы исправила ваш код чтобы он заработал но я половину не понимаю что написано(((((помогите
0
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
13.01.2015, 13:09
Цитата Сообщение от Anna16 Посмотреть сообщение
у меня ваш код не работает! я ввожу элементы до бесконечности они никогда не останавливаются.и соответсвенно не выдает результат.
for ( ; scanf("%1d", &sequence) == 1; ) {
array[sequence] += 1; это я совершенно не понимаю. посмотрите какие коды я прислала((((
Это последовательность чисел введённая до первого пробела либо перевода строки, именно пробел или перевод строки (Enter после ввода) служит окончанием ввода последовательности. А результат не выдает видимо из-за того, что ты работаешь в Visual Studio, в котором нужно в конце указывать system ("PAUSE");.
Вот результат программы с последовательностью чисел http://ideone.com/nSRSNt

Добавлено через 4 минуты
Если для ввода будут использоваться только числа от 0 до 9 то разумнее всего как раз использовать последовательность в виде
scanf("%1d", &sequence) == 1; если числа будут больше, тогда имеет смысл работать с массивом, который я сделал во втором варианте, хотя в нём можно также использовать числа от 0 до 9.
Почему я не использую system ("PAUSE"); потому что мой компилятор не воспринимает эту строку.

Добавлено через 27 минут
Цитата Сообщение от Anna16 Посмотреть сообщение
я бы исправила ваш код чтобы он заработал но я половину не понимаю что написано
Лучше самому думать над алгоритмом и написании кода, ведь предоставляя готовый вариант, я лишаю тебя опыта

Добавлено через 6 минут
Вот те шаги, что я реализовал, если хочется написать самому:
1. Считал массив чисел.
2. Добавил числа в новый массив, игнорируя дубликаты.
3. Считал кол-во дубликатов.
4. Вывел на экран кол-во дубликатов, соответствующее элементам массива.
Свой вариант я оптимизировал, объединив сразу несколько действий. И то есть ещё моменты, которые можно оптимизировать.
0
0 / 0 / 0
Регистрация: 27.12.2014
Сообщений: 36
13.01.2015, 17:00  [ТС]
все спасибо большое!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.01.2015, 17:00
Помогаю со студенческими работами здесь

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

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

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

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

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


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

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

Новые блоги и статьи
Анализ и линтинг кода JavaScript: ESLint, Prettier и JSHint
run.dev 26.04.2025
JavaScript прошёл долгий путь от простого языка для анимации веб-страниц до основы современной веб-разработки. С ростом сложности приложений, увеличением кодовых баз и масштабированием команд. . .
Паттерны в Python: Singleton, Factory и Observer
py-thonny 26.04.2025
Паттерны проектирования — это проверенные временем решения типовых проблем разработки программного обеспечения. Их история берёт начало с книги "Приёмы объектно-ориентированного проектирования. . . .
Исключения в C#: Stack Overflow, Access Violation и Out of memory
stackOverflow 26.04.2025
Исключения в C# — это не только механизм оповещения о проблемах, а целое искусство управления потоком выполнения программы в экстремальных ситуациях. Обычное исключение, например,. . .
Логирование в C# ASP.NET Core с помощью Serilog, ElasticSearch, Kibana
stackOverflow 25.04.2025
Помните те времена, когда для анализа проблемы приходилось подключаться к серверу, искать нужный лог-файл среди десятков других и вручную фильтровать тысячи строк в поисках ошибки? К счастью, эти дни. . .
Структура "железный OnKeyUp" вместо антидребезга. Полностью асинхронный счётчик.
Hrethgir 25.04.2025
Программа для симуляции схемы - Logisim Evolution В общем какое-то время отвлёкся, так было надо, теперь когда запилю это на verilog и FPGA , досоставлю заявку в ФИПС на полезную модель - не готов. . .
Автоматизация Amazon Web Services (AWS) с Boto3 в Python
py-thonny 25.04.2025
Облачные вычисления стали неотъемлемой частью современной ИТ-инфраструктуры, а Amazon Web Services (AWS) занимает лидирующие позиции среди провайдеров облачных услуг. Управление многочисленными. . .
Apache Kafka vs RabbitMQ в микросервисной архитектуре
ArchitectMsa 25.04.2025
Современная разработка ПО всё чаще склоняется к микросервисной архитектуре — подходу, при котором приложение разбивается на множество небольших, автономных сервисов. В этой распределённой среде. . .
Параллельное программирование с OpenMP в C++
NullReferenced 24.04.2025
Параллельное программирование — подход к созданию программ, когда одна задача разбивается на несколько подзадач, которые могут выполняться одновременно. Оно стало необходимым навыком для. . .
Цепочки методов в C# с Fluent API
UnmanagedCoder 24.04.2025
Современное программирование — это не только решение функциональных задач, но и создание кода, который удобно поддерживать, расширять и читать. Цепочки методов и Fluent-синтаксис в C# стали мощным. . .
Мульти-тенантные БД с PostgreSQL Row Security
Codd 23.04.2025
Современные облачные сервисы и бизнес-приложения всё чаще обслуживают множество клиентов в рамках единой программной инфраструктуры. Эта архитектурная модель, известная как мульти-тенантность, стала. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru