IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Найти в массиве и вывести значение наиболее часто встречающегося элемента., Помогите доработать прогрумму.
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 79
Пол: Мужской

Репутация: -  0  +


Есть программа, которая находит в массиве и выводит значения наиболее часто встречающегося элемента. Но я специально в ней уменьшил размер масссива до 5 элементов и ввел 1, 1, 2, 2, 3. вывелось 1. Как сделать так, чтобы выводились оба значения, т.е. 1 и 2 ?
Вот код:

#include <stdio.h>
#include <conio.h>

const int N = 5;
int main()
{
int i, j, count, maxcount, num;
int mass[N]={1, 1, 2, 2, 3};

printf("\n Massiv iz chisel ot 1 do 10: \n");
for(i=0; i<N; i++)
{
printf("\n Massiv[%d] = %d. ", i, mass[i]);
}

maxcount=1; num=0; // Устанавливаем значения двух переменных по умолчанию.
for (i=0; i<N; i++) // Перебираем все элементы массива.
{ count=0; // Счетчик в 0.
for (j=i; j<N; j++) // Перебираем все элементы от i до конца.
if (mass[i] == mass[j]) // Если элемент [i] совпадает с одним из последующих [j],
{ count++; } // то увеличиваем значение счетчика.
if ( count > maxcount) // Если число больше ранее сохраненного,
{ maxcount = count; // тогда перезаписываем.
num = i; } // Присаваеиваем элемент массива в новую переменную
}
if (num >= 0) // Если значение новой переменной больше или равен 0.
{ printf("\n \n Povtor. chisla: %d. ", mass[num]); } // Выводим значение часто повторяющийся элемента.
else // Иначе...
{ printf("\n \n Povtor. elemenov ne naydeno "); } // повторяющихся элементов нет.

getch();
return 0;
}


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +



if (num >= 0) // Если значение новой переменной больше или равен 0.
{ printf("\n \n Povtor. chisla: %d. ", mass[num]); } // Выводим значение часто повторяющийся элемента.
else // Иначе...
{ printf("\n \n Povtor. elemenov ne naydeno "); } // повторяющихся элементов нет.


Бессмысленная проверка,потому что у вас num всегда будет больше, либо равен нулю.
Чтобы вывести несколько результатов,надо,либо выводить их во время подсчета повторений,либо создать массив,в который переписывать все нужные результаты.Как делать,решать вам, решается это просто переносом одной строчки.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 79
Пол: Мужской

Репутация: -  0  +


Цитата(Krjuger @ 27.05.2012 21:11) *


if (num >= 0) // Если значение новой переменной больше или равен 0.
{ printf("\n \n Povtor. chisla: %d. ", mass[num]); } // Выводим значение часто повторяющийся элемента.
else // Иначе...
{ printf("\n \n Povtor. elemenov ne naydeno "); } // повторяющихся элементов нет.


Бессмысленная проверка,потому что у вас num всегда будет больше, либо равен нулю.


Эта проверка осталась от другого варианта, где я генерил числа случайным образом.

Цитата(Krjuger @ 27.05.2012 21:11) *

решается это просто переносом одной строчки.

А что и куда не подскажите? 10.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 13.05.2024 8:44
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name