Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
fenixgaurd
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 57
#1

Массив. Программа для определения максимального подъема 100-километровой автотрассы. - C++

30.04.2012, 01:23. Просмотров 433. Ответов 6
Метки нет (Все метки)

Здравствуйте! Вот написал программу, но не устраивает меня тем, что нужно выдавать самый длинный подъем, так и есть, но вот как написать от какого элемента начался подъем и каким закончился именно в массиве, то есть его индекс. А в целом задача этой программы: Известна высота над уровнем моря каждого километра 100-километровой автотрассы. Определить, на каком расстоянии от начала автотрассы начинается и заканчивается первый самый длинный участок с непрерывным подъемом.
Так же ведь может подъема нету вообще или таких подъемов несколько. Как можно это обыграть тут? Подскажите, подкиньте идейки!
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include<stdio.h>
#include<stdlib.h>
 
 
int main(void)
{
    int n=20,i,max=0,ans=0,k=0,t1=0;
    int a[n];
     srand(21);
    for(i=0;i<n;i++)
     a[i]=rand()%11;
    printf("\n\nArray A\n\n");
     for(i=0;i<n;i++)
      printf("%8i",a[i]);
 
 for(i=0;i<n;i++)
    {
        if(a[i+1]>a[i])
         {
             k++;
         }
           else
        {
 
        if(k>max)
           {
               max=k;
               ans=i-max+1;
               t1++;
           }
           k=0;
         }
    }
 
      printf("\nOt = %i",ans);
      printf("\nDo = %i",ans+t1);
      printf("\nnytb=%i",t1);
    return 0;
}
Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2012, 01:23     Массив. Программа для определения максимального подъема 100-километровой автотрассы.
Посмотрите здесь:
Написать функцию для определения максимального и минимального из чисел C++
C++ Вызов функции для определения максимального и мин значения в массиве
Как сделать шаблон функции для определения максимального расстояния между элементами C++
Разработать метод-член класса для определения минимального и максимального элементов одномерного динамическо C++
C++ Программа для определения дня недели для произвольной даты
Программа для определения минорных аккордов от мажорных C++
Программа для определения даты следующего дня C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IFree Host
Заблокирован
30.04.2012, 01:29     Массив. Программа для определения максимального подъема 100-километровой автотрассы. #2
Мы еще не проходили, но могу сказать точно, что эта задача антогонист к алгоритму о нахождении самого коротко пути. Правда как он называется, сказать не могу. Тебе надо посмотреть списки стандартных алгоритмов.
fenixgaurd
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 57
30.04.2012, 01:35  [ТС]     Массив. Программа для определения максимального подъема 100-километровой автотрассы. #3
Цитата Сообщение от IFree Host Посмотреть сообщение
Мы еще не проходили, но могу сказать точно, что эта задача антогонист к алгоритму о нахождении самого коротко пути. Правда как он называется, сказать не могу. Тебе надо посмотреть списки стандартных алгоритмов.
Подскажите, где можно посмотреть этот алгоритм конкретно.
IFree Host
30.04.2012, 01:44
  #4

Не по теме:

подсказал
смотри в личку

Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
30.04.2012, 02:20     Массив. Программа для определения максимального подъема 100-километровой автотрассы. #5
Вот что пришло в голову на ночь глядя
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
   const int size = 100;
   int a[ size ] = { 0 };
   
   int tmp = 0,
       start = 0,
       end = 0,
       S = 0,
       i = 0;
   
   srand( time( NULL ));
   
   for ( i = 0; i < 100; i++ )
      a[ i ] = rand() % 11;
   
   for ( i = 1; i < size; i++ ) {
      if ( a[ i ] > a[ i - 1 ] ) {
         tmp = i - 1;
         
         while ( i < size && a[ i ] > a[ i - 1 ] )
            i++;
         
         if ( i - tmp > S ) {
            S = i - tmp;
            start = tmp;
            end = i - 1;
         }
      }
   }
fenixgaurd
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 57
30.04.2012, 10:55  [ТС]     Массив. Программа для определения максимального подъема 100-километровой автотрассы. #6
Цитата Сообщение от Toshkarik Посмотреть сообщение
Вот что пришло в голову на ночь глядя
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
   const int size = 100;
   int a[ size ] = { 0 };
   
   int tmp = 0,
       start = 0,
       end = 0,
       S = 0,
       i = 0;
   
   srand( time( NULL ));
   
   for ( i = 0; i < 100; i++ )
      a[ i ] = rand() % 11;
   
   for ( i = 1; i < size; i++ ) {
      if ( a[ i ] > a[ i - 1 ] ) {
         tmp = i - 1;
         
         while ( i < size && a[ i ] > a[ i - 1 ] )
            i++;
         
         if ( i - tmp > S ) {
            S = i - tmp;
            start = tmp;
            end = i - 1;
         }
      }
   }
Смотрите, в принципе все отлично! Но, он показывает начало и конец пути индексы массива, т.е. начало 6 конец 8, а на самом деле начало то 7 а конец 9, потому что массив начинается от 0 элемента, а трасса с первого километра. Как исправить?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2012, 11:08     Массив. Программа для определения максимального подъема 100-километровой автотрассы.
Еще ссылки по теме:
Программа для определения угла между векторами C++
C++ Программа для определения попадания точки с координатами (x, y) в мишень
Программа для определения всех натуральных чисел, которые заканчиваются на 2 C++
C++ Программа для определения кода клавиши выдает неверный код кнопок
Программа с использованием перезагрузки ф-ций для определения абсолютного значения числа C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
30.04.2012, 11:08     Массив. Программа для определения максимального подъема 100-километровой автотрассы. #7
Прибавьте по единице к началу и к концу Ну или увеличьте размер размер до 101, а цикл начните с 2.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
   const int size = 101;
   int a[ size ] = { 0 };
   
   int tmp = 0,
       start = 0,
       end = 0,
       S = 0,
       i = 0;
   
   srand( time( NULL ));
   
   for ( i = 0; i < size; i++ )
      a[ i ] = rand() % 11;
   
   for ( i = 2; i < size; i++ ) {
      if ( a[ i ] > a[ i - 1 ] ) {
         tmp = i - 1;
         
         while ( i < size && a[ i ] > a[ i - 1 ] )
            i++;
         
         if ( i - tmp > S ) {
            S = i - tmp;
            start = tmp;
            end = i - 1;
         }
      }
   }
Yandex
Объявления
30.04.2012, 11:08     Массив. Программа для определения максимального подъема 100-километровой автотрассы.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru