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

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

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

массив - C++

09.09.2011, 22:24. Просмотров 475. Ответов 12
Метки нет (Все метки)

Требуется подсчитать максимальное количество неубывающих подряд идущих элементов массива.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
void main()
{
const n=10;
int a[n],i,max=1,k=1;
for(i=0;i<n;i++)
cin>>a[i];
//for(i=0;i<n;i++)
//cout<<"a["<<i<<"]="<<a[i]<<endl;
for(i=0;i<n;i++)
{
    if(a[i+1]>=a[i])k++;
}
if (k>max) cout<<k;
else cout<<max<<endl;
}
при вводе чисел 1 2 3 4 5 1 1 1 1 1 выдает ответ 10, можете подсказать что не так?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2011, 22:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос массив (C++):

Ввести массив А. В массив В перенести все элементы массива А, стоящие правее максимального элемента, и имеющие нечетный индекс. Массив В отсортировать - C++
Добрый Вечер! Написал первую часть программы по этому заданию&quot;Ввести массив А. В массив В перенести все элементы массива А, стоящие правее...

Массив: Как скопировать двумерный массив в другой массив? - C++
Как скопировать двумерный массив в другой массив?

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

Файл: Загрузка данных из файла: первый столбец записывался в 1й массив, второй столбец - во 2й массив, а 3й столбец - в 3й массив. - C++
Есть текстовый файл, в нем 3 столбца чисел (число строк заранее неизвестно). Напишите пожалуйста код, чтобы первый столбец записывался в...

Заполнить массив первыми ста простыми числами, и вывести массив на экран - C++
Объявите одномерный целочисленный массив в котором не более 100 элементов выполните генерацию массива первыми 100 простыми числами....

Есть массив одинаковых элементов, сделать функцию делающую массив различных - C++
Дан одномерный массив, среди элементов которого есть совпадающие. Разработать функцию, создающую массив из различных элементов.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Zverit
Уничтожитель печенек
277 / 205 / 21
Регистрация: 07.02.2010
Сообщений: 723
09.09.2011, 22:29 #2
C++
1
if (a[i+1] <= a[i]) k++;
0
alkagolik
Заблокирован
09.09.2011, 22:38 #3
Цитата Сообщение от ITZver Посмотреть сообщение
C++
1
if (a[i+1] <= a[i]) k++;
у ТС все правильно за некоторыми исключениями:
1. соответствие должно быть строгим, т.е. a[i+1]>a[i]
2. твой алгоритм не учитывает ситуации когда есть несколько последовательностей а именно:
123123 в конечном итоге твоя программа выдаст 5. сейчас накидаю
0
xexew
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 76
09.09.2011, 22:44  [ТС] #4
то что должно быть нестрогим - это правильно, неубывающая же, а не возрастающая
0
iama
1250 / 975 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
09.09.2011, 22:50 #5
xexew, вы не сохраняете длину каждой наибольшей подпоследовательности и не обнуляете длину текущей, от того и результат такой

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int a[100], n, i, k, q;
 
// вводим данные
 
k = q = 1;
 
for (i = 1; i < n; i++)
  if (a[i] >= a[i-1])
    k++;
  else
  {
    q = max(q, k);
    k = 1;
  }
 
q = max(q, k);
 
// ответ лежит в q
1
alkagolik
Заблокирован
09.09.2011, 22:52 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#define SIZE_M    20
int main(){
    int mass[] = {1,2,3,4,1,
                  1,2,3,5,6,3,3,
                  3,4,5,6,7,8,9,10};
    int tmp = 0, count = 0;
    for (int i =0;i!=SIZE_M; ++i){
        if(mass[i+1]>=mass[i]){
        ++count;
            if(tmp < count) tmp = count;
        }
        else count = 0;
    }
    std::cout << tmp;
    return 0;
}
да, я тут подсчитал немного не ту последовательность, надо неубывающих, а я возрастающих, сейчас подправлю.
Подправил,
ITZver, извиняюсь, я немного перепутал условие
0
iama
1250 / 975 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
09.09.2011, 22:54 #7
alkagolik, длина должна быть неубывающей последовательности, у вас - возрастающая

upd: уже поправили
1
Zverit
Уничтожитель печенек
277 / 205 / 21
Регистрация: 07.02.2010
Сообщений: 723
09.09.2011, 22:54 #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int n, k, mn, max, a;
    k = 0;
    cin>>n;
    for (int i = 1; i <= n; i++)
    {
        cin>>a;
        if(a <= mn)
        {
           mn = a; 
           k++;
        }
        else if (k >= max)
        {
            max = k ;
            k = 0;
        }
    }
cout<< max;
1
xexew
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 76
09.09.2011, 22:57  [ТС] #9
я лишь только начал изучать с++, что это означает ?
C++
1
q = max(q, k)
Добавлено через 54 секунды
ух ты.. спасибо всем=) сейчас буду разбираться)
0
Zverit
Уничтожитель печенек
277 / 205 / 21
Регистрация: 07.02.2010
Сообщений: 723
09.09.2011, 22:58 #10
xexew, функция max возвращает наибольшее значение.
З.Ы заголовочный файл <algorithm>
1
iama
1250 / 975 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
09.09.2011, 23:02 #11
xexew, то же самое, что и
C++
1
2
if (k > q)
  q = k;
1
xexew
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 76
11.09.2011, 00:56  [ТС] #12
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
#include <stdafx.h>
#include <iostream>
#include <algorithm>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    const n=10;
    int a[n],i,k,m;
 
 for(i=0;i<n;i++)
     cin>>a[i];
 
 k=m=1;
 
 for(i=0;i<n;i++)
     
     if(a[i]>=a[i-1])
         
         k++;
     
     else 
     {
         m=max(m,k);
         k=1;
     }
     
     m=max(m,k);
 
     cout<<m<<endl;
    return 0;
}
выдает ошибку: error C4430: missing type specifier - int assumed.

Вроде все переменные указал.. подскажите пожалуйста, что не так?
0
Ma3a
Эксперт C++
617 / 461 / 31
Регистрация: 28.01.2011
Сообщений: 605
11.09.2011, 01:01 #13
Цитата Сообщение от xexew Посмотреть сообщение
const n=10;
должно быть "const int n = 10;"
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2011, 01:01
Привет! Вот еще темы с ответами:

Сжать массив, выбросив из него отрицательные элементы - массив становится пустым - C++
Задачка такая: Разработать программу, обеспечивающую ввод с клавиатуры целых чисел и сохранение их в одномерном массиве. Ввод...

Переписать положительные элементы массива K,кратные пяти в массив M,а остальные-в массив Q. - C++
Дан массив K(N).Переписать положительные элементы массива K,кратные пяти в массив M,а остальные-в массив Q.

Массив: сформировать массив C[12] так, чтобы элементы располагались следующим образом: A(1) B(1) A(2) B(2) - C++
из массивов A и B сформировать массив C так, чтобы элементы массива располагались следующим образом: A(1) B(1) A(2) B(2) и т.д.

Массив: Переместить в массив Y все числа, дробная часть которых больше 5. - C++
Помогите решить, вообще не понимаю как в С++ с дробной частью работать. Задан массив X(N) дробных чисел. Переместить в массив Y все...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.09.2011, 01:01
Ответ Создать тему
Опции темы

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