0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 35

В массиве найти самую маленькую серию подряд стоящих нечетных элементов... (Как доработать программу?)

03.12.2012, 18:45. Показов 2531. Ответов 5

Author24 — интернет-сервис помощи студентам
Помогите доработать программу
В заданном массиве целых чисел найти самую маленькую серию подряд
стоящих нечетных элементов. Удалить из массива два первых простых
числа. Проверить, изменилась ли серия подряд стоящих нечетных
элементов. (Функцией описать нахождение самой маленькой, подряд стоящей, нечётной серии элементов.)

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
#include <iostream>
#include <conio.h>
 
using namespace std;
int myfunc()
{
    int *mas,t=0,min=0,n,k;
 
    for(int i=0; i<n; i++)
    {
        if(mas[i]%2==0)
        {
            t++;
            
        }
        else 
        {
                          if(min<t)
           {
               min=t;
               k=i;
           }
          
           t=0;
           
        }
    }
 
    return t;
}
   
int main ()
{   
   int *mas,t=0,min=0,n,k,i=0,L=0,z;
    cout<<"n:="; cin>>n;
    mas=new int[n];
    L=k-min;
    for(L; i<n; i++)
     cin>>mas[i];
   
    for(int i=k-min; i<k; i++)
          {z=myfunc(mas[i]);
          cout<<z <<"  ";}
          int h,h1,g=2;
          
          for (i=0; i<N; i++)
          {
          if (mas[i]%g==0)
          {h=i; h=h+1;  break;}
          }    
          for (h; h<N; h++)
          {mas[h]=mas[h+1];}
          
          h=h+1;
          
          for (h; h<N; h++)
          {
          if (mas[h]%g==0)
          {h1=h; break;}
          }      
           for (h1; h1<N; h1++)
          {mas[h1]=mas[h1+1];}  
            h1=i;
            
            // Проверка
             for(int i=k-min; i<k; i++)
          {z=myfunc(mas[i]);
          cout<<z <<"  ";}
return 0;
getch();
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.12.2012, 18:45
Ответы с готовыми решениями:

В заданном массиве целых чисел найти самую большую серию подряд стоящих четных элементов.
В заданном массиве целых чисел найти самую большую серию подряд стоящих четных элементов. Очень нужно. Заранее спасибо!

Найти самую большую серию подряд стоящих четных элементов массива
Задание: В заданном массиве целых чисел найти самую большую серию подряд стоящих четных элементов. Код: #include &lt;iostream&gt; ...

В одномерном массиве найти самую длинную цепочку подряд стоящих элементов, которая является «палиндромом»
в одномерном массиве найти самую длинную цепочку подряд стоящих элементов, которая является «палиндромом». В такой цепочке первое число...

5
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
03.12.2012, 21:54
Решил не вникать в ваш код. Если будете компилировать чем-то Майкрософтским добавте conio.h и getch(), как в вашем примере.
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 <stdio.h>
#define SIZE 10 // константа SIZE которая равна 10
 
// Функция принимает два аргуманта: указатель на массив и его размер
void myFunc( int *name, const int size );
 
int main( void )
{
    int array[SIZE] = { 2, 8, 13, 15, 16, 19, 3, 7, 6, 1 };
    
    myFunc( array, SIZE );
    return 0;
}
 
void myFunc( int *name, const int size )
{
    int i, j, s, count, min, fnd;
    int *arr;
    arr = name;
    
    i = 0;
    printf( "We have array:\n" );
    for( i = 0; i < size; ++i ) {
    printf( "%d ", arr[i] );
    if( !(i % 9) && i != 0)
        printf( "\n" );
    }
    puts( "\0" ); // введём пустую строку ( с символом новой строки)
    /* Найдём минимальную серию нечётных элементов */
    fnd = 0;
    min = size + 1;
    for( i = 0; i < size; ++i ) {
    if( arr[i] % 2 ) {
        j = 0;
        for( s = i; s < size && arr[s] % 2; ++s, ++j );
        if( j < min ) {
        min = j;
        fnd = i;
        i = s;
        }
        else
        i = s;
    }
    }
    if( min > size )
    printf( "No odd elements of array\n" );
    else    
    printf( "Minimum set of odd elements begins from:\n"
        "index: %d\telement: %d\n", fnd, arr[fnd] );
    puts( "\0" );
    /* проверим массив на "простоту" и удалим (заменим нулями)
     первые два элемента */
    for( i = count = 0; i < size; ++i ) {
    for( j = 2; j <= (arr[i] / j); ++j )
        if( !(arr[i] % j ))
        break;
    if( j > ( arr[i] / j )) {
        ++count;
        if( count <= 2 ) {
        printf( "%d - simple digit: deleted\n", arr[i] );
        arr[i] = 0;
        }
    }
    }
    puts( "\0" );
    printf( "Now we have new array:\n" );
    for( i = 0; i < size; ++i ) {
    printf( "%d ", arr[i] );
    if( !(i % 9) && i != 0)
        printf( "\n" );
    }
    puts( "\0" );
    /* заново найдём минимальную серию нечётных элементов */
    fnd = 0;
    min = size + 1;
    for( i = 0; i < size; ++i ) {
    if( arr[i] % 2 ) {
        j = 0;
        for( s = i; s < size && arr[s] % 2; ++s, ++j );
        if( j < min ) {
        min = j;
        fnd = i;
        i = s;
        }
        else
        i = s;
    }
    }
    if( min > size )
    printf( "No odd elements of array\n" );
    else    
    printf( "New minimum set of odd elements begins from:\n"
        "index: %d\telement: %d\n", fnd, arr[fnd] );
    puts( "\0" );
    return;
}
1
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 35
04.12.2012, 12:32  [ТС]
Большое спасибо! Буду разбираться в вашем коде
0
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
04.12.2012, 12:35
Пожалуйста, если возникнут вопросы - спрашивайте...
0
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 35
04.12.2012, 16:08  [ТС]
Объясните пожалуйста значение этой строки:

74 if( !(i % 9) && i != 0)
зачем здесь девятка ?
0
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
06.12.2012, 16:30
Цитата Сообщение от Ghoster Посмотреть сообщение
Объясните пожалуйста значение этой строки:
74 if( !(i % 9) && i != 0)
зачем здесь девятка ?
Для того, чтобы выводить в каждой строчке по 10 символов. Условие if выполняется в том случаи, если результат вложенного выражение отличается от 0. И не выполняется если равно нулю. i % 9 всегда положительно, если только оно не кратно 9, т.е. всегда true при i % 9 != 9, а нам нужно наоборот, чтобы при i % 9 выражение выполнялось, именно для этого используется оператор "!", который меняет результат логического выражения на противоположный. Конструкция && i != 0 всего лиши имеет смысл при i == 0 и служит лишь для того, чтобы в самом начале цикла, не сработала инструкция if, т.е. на напечатался символ новой строки.

Добавлено через 3 часа 56 минут
Хотя конструкцию
C++
1
if( !(i % 9) && i != 0)
можно заменить на более понятную:
C++
1
if( i % 10 == 9 )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.12.2012, 16:30
Помогаю со студенческими работами здесь

Найти в массиве наибольшую серию подряд идущих элементов, расположенных по возрастанию
В данном массиве найдите наибольшую серию подряд идущих элементов, расположенных по возрастанию.

В целочисленном массиве найти наиболее длинную цепочку одинаковых подряд стоящих элементов
В целочисленном массиве найти наиболее длинную цепочку одинаковых подряд стоящих элементов (вывести на экран длину такой цепочки и элемент...

Найти в матрице самую длинную цепочку подряд стоящих 0 по горизонтали или вертикали
Матрица состоит из 0 и 1. Найти в ней самую длинную цепочку подряд стоящих 0 по горизонтали или вертикали. Для ориентации поиска...

Найти самую длинную серию одинаковых элементов
помогите задачу по си ++ задача:в одномерном массиве найти самую длинную серию одинаковых элементов

Написать программу, которая определяет самую длинную серию одинаковых элементов матрицы
Написать программу, которая определяет в какой строке целочисленной матрицы m*n, самая длинная серия одинаковых элементов. Добавлено...


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

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

Новые блоги и статьи
Динамические массивы в C++ - создание и использование
NullReferenced 27.04.2025
Динамические массивы представляют собой один из фундаментальных инструментов программирования на C++, позволяющий создавать структуры данных, размер которых определяется во время выполнения. . .
Асинхронный JavaScript: Промисы, Async/Await и Fetch API
Reangularity 27.04.2025
Пользователь заходит на веб-страницу, нажимает кнопку и. . . ничего не происходит. Сайт словно замер. Через несколько секунд всё внезапно оживает, но пользователь уже успел закрыть вкладку. Знакомая. . .
Management on GitLab and repository management in Visual Studio code
jigi33 27.04.2025
- repo management on GitLab - CI/ CD in GitLab - VCS repository management in Visual Studio code (see attachments)
Kanban или Scrum - что выбрать?
EggHead 27.04.2025
Kanban и Scrum — уже много лет удерживают лидирующие позиции среди гибких подходов. Руководители проектов и команды разработчиков то и дело сталкиваются с дилеммой: какой из этих двух методов выбрать. . .
Кастомные Middleware на C# в ASP.NET Core
UnmanagedCoder 27.04.2025
Разработка веб-приложений сегодня мало напоминает монолитное программирование прошлых лет. На смену громоздким блокам кода пришла модульная архитектура, где каждый компонент выполняет строго. . .
Анализ и линтинг кода JavaScript: ESLint, Prettier и JSHint
run.dev 26.04.2025
JavaScript прошёл долгий путь от простого языка для анимации веб-страниц до основы современной веб-разработки. С ростом сложности приложений, увеличением кодовых баз и масштабированием команд. . .
Паттерны в Python: Singleton, Factory и Observer
py-thonny 26.04.2025
Паттерны проектирования — это проверенные временем решения типовых проблем разработки программного обеспечения. Их история берёт начало с книги "Приёмы объектно-ориентированного проектирования. . . .
Исключения в C#: Stack Overflow, Access Violation и Out of memory
stackOverflow 26.04.2025
Исключения в C# — это не только механизм оповещения о проблемах, а целое искусство управления потоком выполнения программы в экстремальных ситуациях. Обычное исключение, например,. . .
Логирование в C# ASP.NET Core с помощью Serilog, ElasticSearch, Kibana
stackOverflow 25.04.2025
Помните те времена, когда для анализа проблемы приходилось подключаться к серверу, искать нужный лог-файл среди десятков других и вручную фильтровать тысячи строк в поисках ошибки? К счастью, эти дни. . .
Структура "железный OnKeyUp" вместо антидребезга. Полностью асинхронный счётчик.
Hrethgir 25.04.2025
Программа для симуляции схемы - Logisim Evolution В общем какое-то время отвлёкся, так было надо, теперь когда запилю это на verilog и FPGA , досоставлю заявку в ФИПС на полезную модель - не готов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru