Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

30.04.2012, 01:23. Просмотров 446. Ответов 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;
}
Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2012, 01:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Массив. Программа для определения максимального подъема 100-километровой автотрассы. (C++):

Написать функцию для определения максимального и минимального из чисел - C++
Написать программу в с++: Дан текстовый файл с неизвестным количеством вещественных чисел. Написать функцию для определения...

Вызов функции для определения максимального и мин значения в массиве - C++
Выдает ошибку на строках:r = maxima(a ); и k = minima(a); что делать? #include &quot;iostream&quot; using namespace std; int main()...

Как сделать шаблон функции для определения максимального расстояния между элементами - C++
Написать программу которая использует шаблон функции для определения максимального расстояния между элементами в наборе в 5 элементов....

Разработать метод-член класса для определения минимального и максимального элементов одномерного динамическо - C++
Помогите!!! разработать метод - член класса для определения минимального и максимального элементов одномерного динамического массива и их...

Программа для определения дня недели для произвольной даты - C++
Доброго времени суток! Суть программы состоит в том, что нужно определить день недели для даты dd/mm/gg, если известен день недели 1 января...

Программа для определения минорных аккордов от мажорных - C++
В общем решил для облегчения игры на гитаре написать программу для определения минорных аккордов от мажорных. Вдаваться в подробности не...

6
IFree Host
Заблокирован
30.04.2012, 01:29 #2
Мы еще не проходили, но могу сказать точно, что эта задача антогонист к алгоритму о нахождении самого коротко пути. Правда как он называется, сказать не могу. Тебе надо посмотреть списки стандартных алгоритмов.
1
fenixgaurd
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 57
30.04.2012, 01:35  [ТС] #3
Цитата Сообщение от IFree Host Посмотреть сообщение
Мы еще не проходили, но могу сказать точно, что эта задача антогонист к алгоритму о нахождении самого коротко пути. Правда как он называется, сказать не могу. Тебе надо посмотреть списки стандартных алгоритмов.
Подскажите, где можно посмотреть этот алгоритм конкретно.
0
IFree Host
30.04.2012, 01:44
  #4

Не по теме:

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

1
Toshkarik
1143 / 860 / 51
Регистрация: 03.08.2011
Сообщений: 2,390
Завершенные тесты: 1
30.04.2012, 02:20 #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;
         }
      }
   }
0
fenixgaurd
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 57
30.04.2012, 10:55  [ТС] #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 элемента, а трасса с первого километра. Как исправить?
0
Toshkarik
1143 / 860 / 51
Регистрация: 03.08.2011
Сообщений: 2,390
Завершенные тесты: 1
30.04.2012, 11:08 #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;
         }
      }
   }
1
30.04.2012, 11:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2012, 11:08
Привет! Вот еще темы с ответами:

Программа для определения даты следующего дня - C++
помогите написать программу в для определения даты следующего дня

Программа для определения угла между векторами - C++
Я нашел такую программу внизу, немного исправил ее, но не знаю, что watch означает и зачем он вообще и все ли тут правильно. Мне...

Программа для определения попадания точки с координатами (x, y) в мишень - C++
Здравствуйте, помогите пожалуйста в с++ создать алгоритм для определения попадания точки с координатами (x, y) в мишень. вот рисунок:

Программа для определения всех натуральных чисел, которые заканчиваются на 2 - C++
Получить распечатку всех чисел, оканчивающихся на цифру 2, из промежутка от 1 до N.


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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