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

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

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

массив - C++

09.09.2011, 22:24. Просмотров 474. Ответов 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, можете подсказать что не так?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2011, 22:24     массив
Посмотрите здесь:

из заданного теста выбрать цифры и записать в массив N ,а буквы - в массив B .Все остальные символы записать в массив S - Pascal
Привет всем.Помогиет пожалуйста решить задачку из заданного теста выбрать цифры и записать в массив N ,а буквы - в массив B .Все...

Вывести на печать массив X, массив Z, массив Y, произведение элементов массива X, упорядоченный массив Y - QBasic
Вывести на печать массив X, массив Z, массив Y, произведение элементов массива X, упорядоченный массив Y. ...

Дан массив целых чисел а(12). Переписать в массив х четные, а в массив у нечетные элементы массива а - Turbo Pascal
Помогите пожалуйста решить эту задачу. Массив a выводит на печать. Я пишу a mod 2 = 0 , а он мне 41 ошибку выдает. Что делать? Вот...

Дан одномерный массив A из N элементов. Переписать положительные элементы массива в массив B, а отрицательные в массив C - Pascal
Дан одномерный массив A из N элементов. Переписать положительные элементы массива в массив B, а отрицательные в массив C.

Сформировать массив, который будет состоять из чисел, входящих как в массив A, так и в массив B - C (СИ)
Задание: На основе исходных массивов A и B (n и m – рабочие размеры массивов) сформировать массив C, который будет состоять из чисел,...

Массив: Отсортировать полученный массив 3 способами: по строкам, по столбцам( возр.), 3) и весь массив - Delphi
Помогите, пожалуйста ,решить задачу. Очень нужно. Задан массив (4*6). Элементы задаются по правилу: если j&gt;3, то Aij=i+j, иначе...

Массив: Как сделать так, чтобы результирующий массив представлял собой измененный по заданным правилам первый массив? - C++ Builder
Доброй ночи форумчане, очередной нубо-вопрос не требует отлагательств имеется одномерный массив, из которого по заданным условиям...

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

upd: уже поправили
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;
xexew
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 76
09.09.2011, 22:57  [ТС]     массив #9
я лишь только начал изучать с++, что это означает ?
C++
1
q = max(q, k)
Добавлено через 54 секунды
ух ты.. спасибо всем=) сейчас буду разбираться)
Zverit
Уничтожитель печенек
277 / 205 / 21
Регистрация: 07.02.2010
Сообщений: 723
09.09.2011, 22:58     массив #10
xexew, функция max возвращает наибольшее значение.
З.Ы заголовочный файл <algorithm>
iama
1250 / 975 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
09.09.2011, 23:02     массив #11
xexew, то же самое, что и
C++
1
2
if (k > q)
  q = k;
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.

Вроде все переменные указал.. подскажите пожалуйста, что не так?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2011, 01:01     массив
Еще ссылки по теме:

Массив. Разделить на два: массив элементов с четными и массив с нечетными индексами - Pascal ABC
VII.Одномерные массивы 50. Задан массив с количеством элементов N. Сформировать два массива: в первый включить элементы исходного массива...

Построить массив d из элементов, которые входят как в массив a так и в массив b - C (СИ)
Дан массив a и b состоящий из n элементов. Построить массив d из элементов, которые входят как в массив a так и в массив b. Желательно с...

Вывести массив а(i, j), одномерный массив b(i) и полученный массив АВ с помощью функции Cells - VBA
Задача 1 Написать программу для решения следующей задачи: для числа n вводимого с клавиатуры (с помощью функции InputBox())...

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

Двумерный массив.Дан массив 5 х 5. Определить сумму элементов тех строк, где диагональный элемент равен нулю и записать их в отдельный массив. - Turbo Pascal
помогите составить программу. во задание:Дан массив 5 х 5. Определить сумму элементов тех строк, где диагональный элемент равен нулю и...


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

Или воспользуйтесь поиском по форуму:
Ma3a
Эксперт C++
616 / 460 / 31
Регистрация: 28.01.2011
Сообщений: 605
11.09.2011, 01:01     массив #13
Цитата Сообщение от xexew Посмотреть сообщение
const n=10;
должно быть "const int n = 10;"
Yandex
Объявления
11.09.2011, 01:01     массив
Ответ Создать тему
Опции темы

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