Автор Тема: Подскажите алгоритм для программы  (Прочитано 2580 раз)

Оффлайн DimaN

  • Продвинутый
  • *****
  • Сообщений: 1640
  • Карма: +208/-0
    • Просмотр профиля
Дано: есть последовательность чисел например 1,2,3,4,5,6,7,8,9,10,11,12, 101,102,103,201, 202,203,301,302,303,501,502,503,505,601,602 и тд вобщем до 9999
Нужно найти максимальной значение в каждой сотне. Соответственно  в данном примере 12, 103, 203, 303, 505, 602


Оффлайн Serhio

  • Постоялец
  • ***
  • Сообщений: 221
  • Карма: +16/-0
    • Просмотр профиля
Re: Подскажите алгоритм для программы
« Ответ #1 : 06 Марта 2014, 11:04:02 »
находим все числа от 0-99
сравниваем между собой
находим максимальное
запоминаем
ищем все числа от 101-199
...
и так до конца

Оффлайн mimicria

  • Продвинутый
  • *****
  • Сообщений: 2599
  • Карма: +1429/-9
  • return (true);
    • Просмотр профиля
Re: Подскажите алгоритм для программы
« Ответ #2 : 06 Марта 2014, 11:19:00 »
Как-то так:
int main(int argc, char* argv[])
{
 unsigned int mas[]={1,2,3,4,5,6,7,8,9,10,11,12,101,102,103,201,202,203,301,302,303,501,502,503,505,601,602};
 unsigned int count=sizeof(mas)/sizeof(mas[0]);
 unsigned int max[30]={0,};
 unsigned int temp_max=0;
 unsigned int i=0;
 unsigned int j;
 unsigned int sot;
 for (j=0;j<count;j++)
 {
  sot=(i+1)*100;
  if (mas[j]>sot)
  {
   max[i]=temp_max;
   i++;
   temp_max=mas[j];
  }
  else
  {
   if (mas[j]>temp_max)
    temp_max=mas[j];
  }
 }
 max[i]=temp_max;
 for (j=0;j<30;j++)
  if (max[j]) cout << max[j] << " ";
 cout << endl;
 system("pause");
 return 0;
}

Пример можно упростить, если числа в массиве действительно будут упорядочены по возрастанию =)
« Последнее редактирование: 06 Марта 2014, 11:21:15 от mimicria »

Оффлайн Serhio

  • Постоялец
  • ***
  • Сообщений: 221
  • Карма: +16/-0
    • Просмотр профиля
Re: Подскажите алгоритм для программы
« Ответ #3 : 06 Марта 2014, 11:22:17 »
Как-то так:
int main(int argc, char* argv[])
{
 unsigned int mas[]={1,2,3,4,5,6,7,8,9,10,11,12,101,102,103,201,202,203,301,302,303,501,502,503,505,601,602};
 unsigned int count=sizeof(mas)/sizeof(mas[0]);
 unsigned int max[30]={0,};
 unsigned int temp_max=0;
 unsigned int i=0;
 unsigned int j;
 unsigned int sot;
 for (j=0;j<count;j++)
 {
  sot=(i+1)*100;
  if (mas[j]>sot)
  {
   max[i]=temp_max;
   i++;
   temp_max=mas[j];
  }
  else
  {
   if (mas[j]>temp_max)
    temp_max=mas[j];
  }
 }
 max[i]=temp_max;
 for (j=0;j<30;j++)
  if (max[j]) cout << max[j] << " ";
 cout << endl;
 system("pause");
 return 0;
}

Пример можно упростить, если числа в массиве действительно будут упорядочены по возрастанию =)

Это за него все сделали, а не алгоритм дали :)

Оффлайн DimaN

  • Продвинутый
  • *****
  • Сообщений: 1640
  • Карма: +208/-0
    • Просмотр профиля
Re: Подскажите алгоритм для программы
« Ответ #4 : 06 Марта 2014, 17:35:39 »
Мне все равно это на PHP нужно организовать. :)