Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2010, 09:00   #1
Alex_sim
Форумчанин
 
Аватар для Alex_sim
 
Регистрация: 18.02.2010
Сообщений: 164
Радость Счет

Здравствуйте под киньте пожалуйста идею для под счета чисел в массиве ,т.е. Считать сколько каждое число встретилось в массиве , не заводить же огромное количество переменных и инкрементировать их . Как можно иным способом ?
Alex_sim вне форума Ответить с цитированием
Старый 10.06.2010, 09:47   #2
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

Завести еще массив, ну или структуру :
1 )
Код:
int counts[ MAX_VALUES ][ 2 ];
2 )
Код:
struct DCount{
  int digit;
  int count;
}
DCount counts[ MAX_VALUES ];
3 )
std::map
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума Ответить с цитированием
Старый 10.06.2010, 10:37   #3
Alex_sim
Форумчанин
 
Аватар для Alex_sim
 
Регистрация: 18.02.2010
Сообщений: 164
По умолчанию

Обьясни пожалуйста что где значит если не трудно .
Alex_sim вне форума Ответить с цитированием
Старый 10.06.2010, 10:53   #4
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

1)
Код:
int array[ MAX_SIZE ];
// заполнили

int countsSize = 0;
int counts[ MAX_SIZE ][ 2 ];
for( int i = 0; i < MAX_SIZE; ++i )
  counts[ i ][ 1 ] = 0;
for( int i = 0; i < MAX_SIZE; ++i ){
   bool isHave = 0;
   for( int j = 0; j < countsSize; ++j )
     if( counts[ j ][ 0 ] == array[ i ] ){
       isHave = 1;
       counts[ j ][ 1 ] += 1;
       break;
   }
   if( !isHave ){
     counts[ countsSize ][ 0 ] = array[ i ];
     counts[ countsSize ][ 1 ] = 1;
     countsSize++;
   }
}
3 )
Код:
int array[ MAX_SIZE ];
// заполнили
std::map< int, int > counts;
for( int i = 0; i < MAX_SIZE; ++i )
  (counts[array[i]])++;
// fixed
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux

Последний раз редактировалось ozo; 10.06.2010 в 11:35.
ozo вне форума Ответить с цитированием
Старый 10.06.2010, 11:28   #5
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

3) Даже так:
Код:
int array[ MAX_SIZE ];
// заполнили
std::map< int, int > counts;
for( int i = 0; i < MAX_SIZE; ++i )
   (counts[array[i]])++;
Поскольку по умолчанию second в новом элементе будет 0.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Счет букв zenner Microsoft Office Excel 14 24.10.2009 00:26
За счет кого стать богаче? Alar Свободное общение 11 07.10.2008 12:20
заблуждения на счет программистов Crazy_Wolfy Свободное общение 20 25.07.2008 11:39
подскажите на счет факториала Lindemm Помощь студентам 4 26.03.2008 21:47
На счет фигни в гостевой sb_centr PHP 2 11.05.2007 20:01