Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 26.06.2010
Сообщений: 3

Одномерые массивы

26.06.2010, 12:49. Показов 681. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Составить программу для подсчета наибольшего количества одинаковых элементов, расположенных последовательно, в массиве для каждого из одномерных массивов Х[20] и Y[16]. Инициализацию, вывод элементов массива, и их обработку организовать в отдельных функциях.

Народ SOS помогите
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.06.2010, 12:49
Ответы с готовыми решениями:

Массивы. Циклические алгоритмы (Заполнить массивы случайными числами, лежащими в интервале 0 до 100)
Доброго дня, уважаемые форумчане, помогите пожалуйста решить задание. Заполнить массивы случайными числами, лежащими в интервале 0 до...

Указатели и массивы. Индексация с помощью указателей. Передача массивов в функции. Динамические массивы (обработка матриц)
Для каждого элемента , bij, i= 1,...,n , j=1,...,n определяется свой многоугольник местонахождением соответствующего элемента aij (см....

Многомерные массивы, как перебирать внутренние массивы
Здравствуйте. Такой учебный код и плохо понимаю как перебираются внутренние массивы, может кто пояснит подоходчивее. Именно внутренний...

6
 Аватар для shelest3
7 / 7 / 3
Регистрация: 08.02.2010
Сообщений: 8
26.06.2010, 23:23
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 <iostream>
#include<windows.h>
using namespace std;
void init(int size, int arr[])
{
srand( GetTickCount());
for(int i = 0; i < size; i++)
{
arr[i] = rand()%5;
}
}
void show(int size, int arr[])
{
for(int i = 0; i < size; i++)
{
cout << " " << arr[i];
} cout << endl;
}
void search(int size, int arr[])
{
int count = 0, count_max = 0;
int index, index_max;
int number, number_max;
for(int i = 1; i < size - 1; i++)
{
if(arr[i] == arr[i+1])
{
number = arr[i];
index = i;
count ++;
}
if(count > count_max)
{
number_max = number;
index_max = index;
count_max = count;
number = 0;
index = 0;
count = 0;
}
else
{
number = 0;
index = 0;
count = 0;
}
}
cout << " наибольшая непрерывная последовательность чисел " << number_max << endl;
cout << " длина последовательности " << count_max + 1 << endl;
cout << " индекс последовательности " << index_max << endl;
}
void main()
{
setlocale(LC_ALL, "Russian");
 
const int x = 20;
int ar_x[x];
 
const int y = 16;
int ar_y[y];
 
init(x,ar_x);
show(x,ar_x);
search(x,ar_x);
 
init(y,ar_y);
show(y,ar_y);
search(y,ar_y);
}
2
 Аватар для grrrrr
49 / 49 / 13
Регистрация: 21.04.2009
Сообщений: 265
27.06.2010, 04:59
Вот мой вариант.

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
using namespace std;
 
void sort(int*, int);
void in(int *,  int);
void search(int*, int);
void out(int *, int);
 
const int s1 = 20;
const int s2 = 16;
 
int main(int argc, char *argv[])
{
   int X[s1];
   int Y[s2];   
   in(X, s1);
   in(Y, s2);
  out(X, s1);
   out(Y, s2);
   search(X, s1);   
   search(Y, s2);
   
    
   system("PAUSE");
   return EXIT_SUCCESS;   
       
   
}
void in(int* arr, int s)
{
     int i;
     for(i=0; i<s; i++)
        arr[i] = rand() % 20;
}
void search(int *arr,  int s)
{
   int i, p1, p2, ind, n;
   n=0;
   p2=0;
   
   for(i=0; i<s-1; i++)
   {
            if(arr[i] == arr[i+1]) 
                n++;
            
            p1 = n;
            if(i==0) 
                continue; 
            
            if(p2<p1) 
            {
                p2=p1;
                ind = i;                
            }
            n=0;                                
   }
   cout << "maximalino posledovatelnie chisla : " <<arr[ind] << "\n";
}
void out(int* arr, int s)
{
   for(int i=0; i<s; i++)
      cout << arr[i] << " ";
   cout << "\n";
}
1
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
27.06.2010, 05:13
ind

Если не инициализировать кидает ошибку при втором(?) проходе цикла ТТ
2
 Аватар для grrrrr
49 / 49 / 13
Регистрация: 21.04.2009
Сообщений: 265
27.06.2010, 05:19
Lavroff, У меня нет ошибки. Наверное это как рандом сработает, если найдет повторяющиеся числа. Но проинициализировать можно в начале.

C++
1
ind = 0;
1
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
27.06.2010, 11:33
Цитата Сообщение от Aloysha Посмотреть сообщение
подсчета наибольшего количества одинаковых элементов, расположенных последовательно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int MaxSequence(const int* arr, size_t size) {
        int result = 0;
  const int* end   = arr + size;
 
  for (const int* first = arr; first != end; ) {
    const int* last;
    for (last = first + 1; last != end && *last == *first; ++last)
      ;
 
    int length = last - first;
    if (length > result)
      result = length;
    
    first = last;
  }
 
  return result;
}
Результат: http://codepad.org/pEeIU2gZ

Вариант с STL:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <algorithm>
#include <functional>
 
int MaxSequence(const int* arr, size_t size) {
  int result = 0;
 
  const int* last;
  for (const int* first = arr; first != arr + size; first = last) {
    last   = std::find_if(first , arr + size  , std::bind2nd(not_equal_to<int>(), *first));
    result = std::max    (result, last - first);
  }
 
  return result;
}
Результат: http://codepad.org/Y9diY8Fa
1
 Аватар для shelest3
7 / 7 / 3
Регистрация: 08.02.2010
Сообщений: 8
27.06.2010, 20: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
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <iostream>
using namespace std;
 
void sort(int*, int);
void in(int *,  int);
void search(int*, int);
void out(int *, int);
 
const int s1 = 20;
const int s2 = 16;
 
int main(int argc, char *argv[])
{
   int X[s1];
   int Y[s2];   
   in(X, s1);
   in(Y, s2);
   out(X, s1);
   out(Y, s2);
   search(X, s1);   
   search(Y, s2);
    
   system("PAUSE");
   return EXIT_SUCCESS;   
       
   
}
void in(int* arr, int s)
{
     int i;
     for(i=0; i<s; i++)
     // как вы уже заметили наверное, это не случайные числа, а псевдослучайные, т.е. не такие уж они и случайные
        arr[i] = rand() % 20; 
}
void search(int *arr,  int s) //    Смысл передавать массив по указателю? Имя массива - это указатель
                              //    на его первый элемент, т.е. массив и так передается по указателю.
{
   int i, p1, p2, ind = -1, n;
   n=0;
   p2=0;
   
   for(i=0; i<s-1; i++)
   {
            if(arr[i] == arr[i+1]) 
                n++;
            
            p1 = n;
            if(i==0) 
                continue; 
            
            if(p2<p1) 
            {
                p2=p1;
                ind = i;       // если в массиве нет двух одинаковых элементов? Для того, чтобы программа
                               // отработала корректно ind нужно инициализировать при объявлении      
            }                  
            n=0;                                
   }
   // а в выводе поставить проверку
   (ind >= 0)? cout << "maximalino posledovatelnie chisla : " <<arr[ind] << "\n" : cout << " net posledovatelnosti" << "\n";
   // или так :
   //if(ind >= 0)
   //   cout << "maximalino posledovatelnie chisla : " <<arr[ind] << "\n";
   //else
   //   cout << " net posledovatelnosti" << "\n";
}
void out(int* arr, int s)
{
   for(int i=0; i<s; i++)
      cout << arr[i] << " ";
   cout << "\n";
}
/*
    Маленький дружеский совет: старайтесь писать код так, чтобы 
    использовать как можно меньше комментариев и пояснений.
    Например, имена переменным старайтесь давать такие, которые
    говорили бы сами за себя, т.е. "s" это "size" и т.д.
    Вам за это не раз потом спасибо скажут.
------------------------------------------------------
void search(int *arr,  int size)
{
   int  p_temp, p_max = 0, index = -1, count = 0;
   for(int i = 0; i < size - 1; i ++)
   {
            if(arr[i] == arr[i+1]) 
                count ++;
            
            p_temp = count;
 
            if(p_max < p_temp) 
            {
                p_max = p_temp;
                index = i;       ??? если вы не собираетесь возвращать "index", зачем он нужен ???      
            }
            count = 0;                                
   }
   (index >= 0)? cout << " maximalino posledovatelnie chisla : " << arr[index] << "\n" : cout << " net posledovatelnosti" << "\n";
}
------------------------------------------------------
    Так немного лучше, правда? 
                Всего доброго!*/
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.06.2010, 20:12
Помогаю со студенческими работами здесь

Структуры, массивы, указатели, динамические массивы структур
Помогите с решением задачи (прикрепляю условие). Заранее спасибо.

Попадание точки. Массивы чисел. Массивы записей.
Всем привет. По языкам задали три контрольные на си. Я сам си не знаю, даже не представляю, поэтому очень нужна ваша помощь. ...

Одномерые массивы в Pascal
Нужно составить программу к каждой задаче: 1. Задайте массив из 10 элементов с помощью датчика случайных чисел. Поменяйте местами...

Даны массивы а и b. Получить новые массивы a и b, элементы которых вычисляются по правилу: ai=bi, bi= -ai
Даны массивы а и b, состоящие из n-элементов каждый. Получить новые массивы a и b, элементы которых вычисляются по правилу: ai=bi, bi=...

Даны массивы A(8), F(8),Q(8). Сформировать массивы С(8), каждый элемент которого вычисляется по формуле
uses crt; type mas=array of integer; var A,F,Q,C:mas; i,s:integer; begin clrscr; writeln('Массив первый:'); for i:=1...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru