Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 202
1

Определить максимальное количество подряд идущих положительных элементов массива, не прерываемых ни нулями, ни отрицательными элементами

16.06.2013, 17:17. Показов 3471. Ответов 15
Метки нет (Все метки)

помогите с этой задачей))
Дан линейный вещественный массив a1,a2,..,an. Определить максимальное количество подряд идущих положительных элементов массива, не прерываемых ни нулями, ни отрицательными элементами, вывести на экран указанную последовательность элементов.
если что у меня есть такая программа на паскале.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.06.2013, 17:17
Ответы с готовыми решениями:

Определить максимальное количество подряд идущих положительных элементов последовательности, не прерываемых ни нулями, ни отрицательными элементами
Дана вещественная таблица а,...,а. Определить максимальное количество подряд идущих положительных...

Для каждого массива определить максимальное количество подряд расположенных положительных элементов
Даны вещественные массивы A, B. Для каждого массива определить максимальное количество подряд...

Определить наибольшее количество положительных идущих подряд чисел массива
Дан одномерный массив А, состоящий из N целых чисел. Составить программу, которая подсчитывает,...

Подсчитать максимальное количество положительных элементов массива заключенных между нулями
1.Дан одномерный массив À, состоящий из N элементов. Подсчитайте максимальное кол-во положительных...

15
2 / 2 / 1
Регистрация: 16.06.2013
Сообщений: 11
16.06.2013, 17:49 2
надо уточнять задание, что значит вещественный массив? какие именно будут подаваться на вход данные? массив динамический, или его размер всегда будет одинаковым?
0
351 / 344 / 279
Регистрация: 21.05.2013
Сообщений: 1,312
16.06.2013, 17:51 3
сделаю
0
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 202
16.06.2013, 17:58  [ТС] 4
вещественный как я понимаю в с++ это тип float. используем генератор случайных чисел типа int. c клавиатуры назначать размерность массива

Добавлено через 44 секунды
хорошо) жду)))
0
Эксперт С++
4259 / 2233 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
16.06.2013, 17:58 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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 10
void Init(int *a, int *end)
{
   if (a < end)
   {
      *a = rand() % 10 - 5;
      Init(a + 1, end);
   }
}
void Print(int *a, int *end)
{
   int i, j;
   for(; a < end; ++a)
      printf("%4d", *a);
   putchar('\n');
}
 
int *Count1(int *a, int *end)
{
   return a < end && (*a) > 0 ? Count1(a + 1, end) : a;
}
 
int *Count2(int *a, int *end)
{
   return a < end && (*a) <= 0 ? Count2(a + 1, end) : a;
}
 
int main()
{
   int a[N], max = 0, *b, *c, *d = a;
   srand(time(NULL));
   Init(a, a + N);
   Print(a, a + N);
   b = a;
   while(b < a + N)
   {
       c = Count1(b, a + N);
       if (c - b > max)
       {
          max = c - b;
          d = b;
       }
       b = Count2(c, a + N);
   }
   printf("max = %d\n", max);
   Print(d, d + max);
   return 0;
}
1
351 / 344 / 279
Регистрация: 21.05.2013
Сообщений: 1,312
16.06.2013, 18:11 6
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
#include <iostream>
#include <time.h>
#include <math.h>
using namespace std;
int main()
{
    int n,max=0,k=1;
    cout << "Enter nubmber [N] = ";cin >> n;
    int mas[100];
    srand(time(NULL));
    cout << "\nArray = ";
    for (int i=0;i<n;i++)
    {
        mas[i]=rand()%10-5;
        cout << mas[i] << " ";
    }
    for (int i=0;i<n;i++)
    {
        if ((mas[i]>0) && (mas[i+1]>0)) k++;
        if (k>max) max=k;
    }
    cout << "\nLine = " << max;
    cout << "\n";
    system("pause");
}
примерно вот так
0
Эксперт С++
4259 / 2233 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
16.06.2013, 18:15 7
Цитата Сообщение от newyork7776 Посмотреть сообщение
C++
1
        if ((mas[i]>0) && (mas[i+1]>0)) k++;
а если последний положительный, будет выход за границы массива
1
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 202
16.06.2013, 18:48  [ТС] 8
Цитата Сообщение от Thinker Посмотреть сообщение
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
40
41
42
43
44
45
46
47
48
49
50
51
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 10
void Init(int *a, int *end)
{
   if (a < end)
   {
      *a = rand() % 10 - 5;
      Init(a + 1, end);
   }
}
void Print(int *a, int *end)
{
   int i, j;
   for(; a < end; ++a)
      printf("%4d", *a);
   putchar('\n');
}
 
int *Count1(int *a, int *end)
{
   return a < end && (*a) > 0 ? Count1(a + 1, end) : a;
}
 
int *Count2(int *a, int *end)
{
   return a < end && (*a) <= 0 ? Count2(a + 1, end) : a;
}
 
int main()
{
   int a[N], max = 0, *b, *c, *d = a;
   srand(time(NULL));
   Init(a, a + N);
   Print(a, a + N);
   b = a;
   while(b < a + N)
   {
       c = Count1(b, a + N);
       if (c - b > max)
       {
          max = c - b;
          d = b;
       }
       b = Count2(c, a + N);
   }
   printf("max = %d\n", max);
   Print(d, d + max);
   return 0;
}
у меня не задерживается вывод, я написала в конце system ("Pause"); но все равно не показывает, сразу исчезает
0
Эксперт С++
4259 / 2233 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
16.06.2013, 18:49 9
getch() поставьте
0
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 202
16.06.2013, 18:50  [ТС] 10
в начале или в конце?
0
Эксперт С++
4259 / 2233 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
16.06.2013, 18:51 11
Цитата Сообщение от wsa Посмотреть сообщение
в начале или в конце?
в конец перед return 0;
0
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 202
16.06.2013, 18:54  [ТС] 12
не находит такой идентификатор((( может там библиотека отдельная нужна для этого? я не знаю
0
Эксперт С++
4259 / 2233 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
16.06.2013, 18:55 13
Цитата Сообщение от wsa Посмотреть сообщение
не находит такой идентификатор((( может там библиотека отдельная нужна для этого? я не знаю
<conio.h>
0
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 202
16.06.2013, 18:58  [ТС] 14
урааа!!!! работает))) спасибо большое))))
0
351 / 344 / 279
Регистрация: 21.05.2013
Сообщений: 1,312
16.06.2013, 20:11 15
Цитата Сообщение от Thinker Посмотреть сообщение
Сообщение от newyork7776 Код C++1
2
3
if ((mas[i]>0) && (mas[i+1]>0)) k++;
* а если последний положительный, будет выход за границы массива
ну тогда нужно сделать n-1?
0
Эксперт С++
4259 / 2233 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
16.06.2013, 20:19 16
Цитата Сообщение от newyork7776 Посмотреть сообщение
ну тогда нужно сделать n-1?
не совсем, так вы не учтете последовательность из положительных элементов в конце массива, например для массива
-1 1 2 3
неверный вывод будет
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.06.2013, 20:19

Определить максимальное количество одинаковых символов, идущих подряд
Ввести строку с клавиатуры. Определить максимальное количество одинаковых символов, идущих подряд....

Определить максимальное количество идущих подряд чётных чисел
Как определить максимальное количество идущих подряд чётных чисел для такого, к примеру, ряда...

Найти максимальное количество подряд идущих минимальных элементов
Найти максимальное количество подряд идущих минимальных элементов. ОДНОПРОХОДНОЙ алгоритм

Найти максимальное количество подряд идущих чётных элементов
Мне дана задача : опишите на одном из языков программирования алгоритм подсчета максимального...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru