Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Повторение числа в масиве 
:(
    Опции темы
max07
Дата 18.11.2005, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 21.12.2004

Репутация: нет
Всего: нет



Добрый день,

Надо найти в масиве самое большее число раз повторяющийся элемент, я написал такой алгоритм, но он находит только по 1-ому элементу, нужна проверка на остальные элементы масива.

Код

  int k = 0;
  int A[7] = {2,1,1,1,2,1,2};
  for(int i = 0; i < 7; i++) {
   for(int j = i; j < 7; j++) {
    if(A[i] == A[j])
      k++;
   }
  }
  Label1->Caption = k;


Как можно реализовать эту проверку?
Спасибо.
PM MAIL   Вверх
_hunter
Дата 18.11.2005, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



обнуляй k после первого цикла


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
max07
Дата 18.11.2005, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 21.12.2004

Репутация: нет
Всего: нет



Так к будет тогда 0 равен... Или я не так понял? Первый это с i или j?
PM MAIL   Вверх
_hunter
Дата 18.11.2005, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



Цитата
Так к будет тогда 0 равен... Или я не так понял?

дык для этого k++ есть
Цитата
Первый это с i или j?

упс... согласен -- протупил...
после нулевого перед первым.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
max07
Дата 18.11.2005, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 21.12.2004

Репутация: нет
Всего: нет



Код

  int k;
  int A[7] = {2,1,1,1,2,1,2};
  for(int i = 0; i < 7; i++) {
   k = 0;
   for(int j = i; j < 7; j++) {
    if(A[i] == A[j])
      k++;
   }
  }


так чтоли? тогда резултат 1, а должно быть 4... Может по другому както?

Это сообщение отредактировал(а) max07 - 18.11.2005, 16:53
PM MAIL   Вверх
_hunter
Дата 18.11.2005, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



само-собой 1: у тебя последних двоек сколько? правильно, одна.
ты уже пройденные элементы обнуляй.
+ такой алгоритм у тебя запомнит только последнюю проверку => добавь еще одну переменную для сверки


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
max07
Дата 20.11.2005, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 21.12.2004

Репутация: нет
Всего: нет



Так вот меня и интересует куда именно её добавить и какая проверка?
PM MAIL   Вверх
AntonChik
Дата 21.11.2005, 06:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.10.2005
Где: Красноярск

Репутация: 1
Всего: 1



по-моему лучше сделать так:
Код

  int max,maxi;
  int A[7] = {2,1,1,1,2,1,2};
  int b[7];// неплохо бы еще сразу же обнулить этот массив
  for(int i = 0; i < 7; i++) b[A[i]]++;
  max=b[0];
  for( i = 1; i < 7; i++) if(  b[i]>max ){max=b[i];maxi=i;}
  Label1->Caption = A[maxi];


сам не компилял, но думаю мысль понятна...
--------------------
"Человек притаился за деревом. За широким огромным деревом. Он выглядывал тихонько и прятался. Но его никто не преследовал." (с) Хорги 
PM MAIL   Вверх
Neitron
Дата 21.11.2005, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: нет
Всего: 5



Я сам хотел предложить этот способ. Но он не эффективен.


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
Mayk
Дата 21.11.2005, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 1
Всего: 134



Цитата(Neitron @ 21.11.2005, 16:59)
Я сам хотел предложить этот способ. Но он не эффективен.

Почему же? Получается 2n [3n, если пообнулять], что гораздо меньше n(n+1)/2.
Короче говоря o(n) < o(n*n)

Правда если числа идут в разброс (типа {435,23243223,-2321}), то можно map юзать.
Так найдем максимум лишь за логарифмическое время.Но оно опять же лучеше чем n*n.


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
AntonChik
Дата 23.11.2005, 07:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.10.2005
Где: Красноярск

Репутация: 1
Всего: 1



Цитата(Neitron @ 21.11.2005, 12:59)
Я сам хотел предложить этот способ. Но он не эффективен.

ладно, уговорил. делаем в один проход

Код

  int max,maxi;
  int A[7] = {2,1,1,1,2,1,2};
  int b[7];// неплохо бы еще сразу же обнулить этот массив
  max=0;
  for(int i = 0; i < 7; i++) 
 {
 b[A[i]]++;
 if(b[A[i]]>max ){max=b[A[i]];maxi=A[i];} 
 }
 Label1->Caption = maxi; 


опять же сам не компилял, но должно поехать...
--------------------
"Человек притаился за деревом. За широким огромным деревом. Он выглядывал тихонько и прятался. Но его никто не преследовал." (с) Хорги 
PM MAIL   Вверх
Exekutor
Дата 26.11.2005, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 1.11.2005
Где: Казахстан. Костан ай

Репутация: нет
Всего: 4



Код





--------------------
[color=blue][size=2]En taro addun, ma sol larinas[/size][/color]
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0589 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.