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

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

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

массив целых чисел - C++

17.07.2011, 18:51. Просмотров 568. Ответов 5
Метки нет (Все метки)

помогите кто сделать пожалуйста
Дан массив целых чисел. Рассмотреть отрезки массива(группы идущих подряд чисел), состоящие из нечетных чисел. Получить наибольшую из длин рассматриваемых отрезков. Поиск максимума и минимума.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2011, 18:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос массив целых чисел (C++):

Задан массив K(m) попарно различных целых чисел. Получить все перестановки целых чисел - C++
Помогите пожалуйста с программой. Задан массив K(m) попарно различных целых чисел. Получить все перестановки целых чисел

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

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

Переделать массив целых чисел на массив вещественных чисел - C++
помогите переделать этот код: #include <stdio.h> #include <stdlib.h> #define RANGE 20 int main() { int ARRAY_SIZE=100; ...

Сформировать одномерный массив целых чисел, используя датчик случайных чисел - C++
1)Сформировать одномерный массив целых чисел, используя датчик случайных чисел. 2)Распечатать полученный массив. 3)Перевернуть массив...

Дан двумерный массив целых чисел, найти количество чисел, кратных N - C++
Дан двумерный массив целых чисел, найти количество чисел, кратных N. Как это можна записать в С++?? хотя бы условие...

5
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
17.07.2011, 21:29 #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
29
30
31
32
#include <iostream>
#include <vector>
 
using namespace std;
 
int main()
{
    const int SIZE = 100;
    vector <int> v;
    for (int i = 0; i < SIZE; i++)
        v.push_back(rand()%100 + 1);
    vector <int> l(SIZE, 0);
    l[0] = v[0]%2 ? 1 : 0;
    for (int i = 1; i < SIZE; i++)
        if (v[i]%2)
            l[i] = l[i-1]+1;
    int maxLength = 0;
    int index = 0;
    for (int i = 0; i < SIZE; i++)
        if(l[i] > maxLength)
        {
            maxLength = l[i];
            index = i-maxLength;
        }
    cout << "ГЌГ*èáîëüøГ*Гї äëèГ*Г*Г*: " << maxLength << endl;
    cout << "Âîò Г®Г*Г*: " << endl;
    for (int i = index+1; i < index+maxLength; i++)
        cout  << v[i] << " ";
    cout << endl;
    
    return 0;   
}
1
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
17.07.2011, 21:45 #3
Как на счёт этого.
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <stdio.h>
 
// поиск самого большого отрезка не чётных символов
void    max_group(int* arr, int size,  int& first, int& last) {
     int  tmp = 0, cnt = 0, pos = 0;
     const int*  iter   = arr;
     const int*  end   = arr + size;
     do {
          if( *iter % 2)
               cnt++;
          else {
               if(cnt > tmp) {
                    tmp = cnt;
                    pos = ~(arr - iter) + 1;
               }
               cnt = 0;
          }
         *iter++;
      } while(iter != end);
      first   = pos - tmp;
      last   = pos;
}
 
// максимум 
int  _max(const int* arr, int size) {
     const int* end = arr + size;
     int tmp           = *arr;
     do {
         if(*arr > tmp)
                tmp = *arr;
        *arr++;
     } while( arr != end );
     return  tmp;
}
 
// минимум
int  _min(const int* arr, int size) {
     const int* end = arr + size;
     int tmp           = *arr;
     do {
         if(*arr < tmp)
               tmp = *arr;
         *arr++;
      } while( arr != end );
      return  tmp;
}
 
 
 
 
 
void   main(void) {
 
     int  i;
 
     int  arr[14]  = {  8,    5, 1, 3,    2,   33,    2,     77,  15, 33, 7, 81,    8, 99 };
     int  start;
     int  end;
     max_group(arr, sizeof(arr) / sizeof(int),  start, end);
 
     for(i = start; i < end; i++)
            printf("%d, ",  arr[i] );
 
     putc('\n', stdout);
     printf("min = %d\n",   _min(arr, sizeof(arr) / sizeof(int)) );
     printf("max = %d\n",  _max(arr, sizeof(arr) / sizeof(int)) );
 
   getchar();
}
1
kravam
быдлокодер
1696 / 883 / 45
Регистрация: 04.06.2008
Сообщений: 5,471
18.07.2011, 01:25 #4
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
#include <stdio.h>
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;
 
 
bool IsOdd_1 (int x, int y){return ((x%2) && !(y%2));}
bool IsOdd_0 (int x, int y){return (!(x%2) && (y%2));}
 
int main(){
 
 int a[] = {5, 57, 10, 28, 20, 45, 51, 35, 23, 8, 5, 25, 10, 10, 90,  80, 1, 3, 5, 7};
 
 //Вспомогательный вектор
 vector <int> vec (a, a+ sizeof(a)/sizeof(int));
 vec.insert (vec.begin (), 2);
 vec.push_back (2);
 
 vector<int>:: iterator p_, p, temp;
 temp= p= p_= vec.begin();
 
 //А это вектор, состоящий из длин
 vector<int> dlini ;
 
 //НАходим длины и кидаем в вектор
 do {
  p= adjacent_find (vec.begin ()+ (p-  temp), vec.end (), IsOdd_0); 
  p_= adjacent_find(vec.begin ()+ (p_- temp), vec.end (), IsOdd_1); 
  dlini.push_back (p_++- p);
 }
 while (p++!= vec.end ()) ; 
 
 //НАходим максимум
 cout<< "max= "<< *max_element (dlini.begin(), dlini.end());
 getchar ();
 
// adjacent_find 
};
0
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
18.07.2011, 01:32 #5
deleted
0
kravam
быдлокодер
1696 / 883 / 45
Регистрация: 04.06.2008
Сообщений: 5,471
18.07.2011, 02:02 #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
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;
 
 
bool IsOdd_1 (int x, int y){return ((x%2) && !(y%2));}
bool IsOdd_0 (int x, int y){return (!(x%2) && (y%2));}
 
int main(){
 
 int a[] = {5, 57, 10, 28, 20, 45, 51, 35, 23,17, 8, 5, 25, 10, 10, 90,  80, 1, 3, 5, 7};
 
 //Вспомогательный вектор
 vector <int> vec (2,2);
 vec.insert (vec.begin()+ 1, a, a+ sizeof(a)/sizeof(int));
 
 vector<int>:: iterator p_, p, temp;
 temp= p= p_= vec.begin();
 
 //А это вектор, состоящий из длин
 vector<int> dlini ;
 
 //НАходим длины и кидаем в вектор
 do {
  p= adjacent_find (vec.begin ()+ (p-  temp), vec.end (), IsOdd_0); 
  p_= adjacent_find(vec.begin ()+ (p_- temp), vec.end (), IsOdd_1); 
  dlini.push_back (p_++- p);
 }
 while (p++!= vec.end ()) ; 
 
 //НАходим максимум
 cout<< "max= "<< *max_element (dlini.begin(), dlini.end());
 getchar ();
 
};


Добавлено через 13 минут
А вот можно обойтись без дополнительной переменной temp/ Зачем плодить лишние сущности?
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
#include <stdio.h>
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;
 
 
bool IsOdd_1 (int x, int y){return ((x%2) && !(y%2));}
bool IsOdd_0 (int x, int y){return (!(x%2) && (y%2));}
 
int main(){
 
 int a[] = {5, 57, 10, 28, 20, 45, 51, 35, 23,17, 8, 5, 25, 10, 10, 90,  80, 1, 3, 5, 7, 9, 57};
 
 //Вспомогательный вектор
 vector <int> vec (2,2);
 vec.insert (vec.begin()+ 1, a, a+ sizeof(a)/sizeof(int));
 
 vector<int>:: iterator p_, p, temp;
 p= p_= vec.begin();
 
 //А это вектор, состоящий из длин
 vector<int> dlini ;
 
 //НАходим длины и кидаем в вектор
 do {
  p= adjacent_find (p, vec.end (), IsOdd_0); 
  p_= adjacent_find(p_, vec.end (), IsOdd_1); 
  dlini.push_back (p_++- p);
 }
 while (p++!= vec.end ()) ; 
 
 //НАходим максимум
 cout<< "max= "<< *max_element (dlini.begin(), dlini.end());
 getchar ();
 
};
Добавлено через 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
#include <stdio.h>
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;
 
 
bool IsOdd_1 (int x, int y){return ((x%2) && !(y%2));}
bool IsOdd_0 (int x, int y){return (!(x%2) && (y%2));}
 
int main(){
 
 int a[] = {5, 57, 10, 28, 20, 45, 51, 35, 23,17, 8, 5, 25, 10, 10, 90,  80, 1, 3, 5, 7, 57, 13 };
 
 //Вспомогательный вектор
 vector <int> vec (2,2);
 vec.insert (vec.begin()+ 1, a, a+ sizeof(a)/sizeof(int));
 
 vector<int>:: iterator p_, p;
 p= p_= vec.begin();
 
 //А это вектор, состоящий из длин
 vector<int> dlini ;
 
 //НАходим длины и кидаем в вектор
 do {
  dlini.push_back ((p_= adjacent_find(p_, vec.end (), IsOdd_1))++- (p= adjacent_find (p, vec.end (), IsOdd_0)));
 }
 while (p++!= vec.end ()) ; 
 
 //НАходим максимум
 cout<< "max= "<< *max_element (dlini.begin(), dlini.end());
 getchar ();
 
};
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2011, 02:02
Привет! Вот еще темы с ответами:

Целую частьиз массива действительных чисел переписать в массив целых чисел - C++
Использовать два одномерных массива - массив целых чисел и массив действительных чисел. Прочитать 15 действительных чисел и записать их в...

Сформировать одномерный массив целых чисел, используя датчик случайных чисел - C++
Удалить элементы кратные 7. Добавить после каждого нечетного элемента массива элемент со значением 0.

Сформировать одномерный массив целых чисел, используя датчик случайных чисел. - C++
Сформировать одномерный массив целых чисел, используя датчик случайных чисел. Удалить 5 последних элементов массива. Добавить в...

Сформировать одномерный массив целых чисел, используя датчик случайных чисел - C++
Условие такое 1.Сформировать одномерный массив целых чисел, используя датчик случайных чисел. Распечатать полученный массив. ...


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

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

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