Форум.orn

HARD&SOFT => Программирование => Тема начата: DimaN от 06 Марта 2014, 10:51:15

Название: Подскажите алгоритм для программы
Отправлено: DimaN от 06 Марта 2014, 10:51:15
Дано: есть последовательность чисел например 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

Название: Re: Подскажите алгоритм для программы
Отправлено: Serhio от 06 Марта 2014, 11:04:02
находим все числа от 0-99
сравниваем между собой
находим максимальное
запоминаем
ищем все числа от 101-199
...
и так до конца
Название: Re: Подскажите алгоритм для программы
Отправлено: mimicria от 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;
}

Пример можно упростить, если числа в массиве действительно будут упорядочены по возрастанию =)
Название: Re: Подскажите алгоритм для программы
Отправлено: Serhio от 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;
}

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

Это за него все сделали, а не алгоритм дали :)
Название: Re: Подскажите алгоритм для программы
Отправлено: DimaN от 06 Марта 2014, 17:35:39
Мне все равно это на PHP нужно организовать. :)