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

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

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

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

03.12.2012, 18:45. Просмотров 635. Ответов 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
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();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2012, 18:45     В массиве найти самую маленькую серию подряд стоящих нечетных элементов... (Как доработать программу?)
Посмотрите здесь:

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

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xtorne21st
интересующийся
303 / 274 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
03.12.2012, 21:54     В массиве найти самую маленькую серию подряд стоящих нечетных элементов... (Как доработать программу?) #2
Решил не вникать в ваш код. Если будете компилировать чем-то Майкрософтским добавте 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;
}
Ghoster
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 35
04.12.2012, 12:32  [ТС]     В массиве найти самую маленькую серию подряд стоящих нечетных элементов... (Как доработать программу?) #3
Большое спасибо! Буду разбираться в вашем коде
xtorne21st
интересующийся
303 / 274 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
04.12.2012, 12:35     В массиве найти самую маленькую серию подряд стоящих нечетных элементов... (Как доработать программу?) #4
Пожалуйста, если возникнут вопросы - спрашивайте...
Ghoster
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 35
04.12.2012, 16:08  [ТС]     В массиве найти самую маленькую серию подряд стоящих нечетных элементов... (Как доработать программу?) #5
Объясните пожалуйста значение этой строки:

74 if( !(i % 9) && i != 0)
зачем здесь девятка ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2012, 16:30     В массиве найти самую маленькую серию подряд стоящих нечетных элементов... (Как доработать программу?)
Еще ссылки по теме:

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

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

В одномерном масиве найти самую длинную серию одинаковых элементов - C++
ЗАДАЧА С++ ПОМОГИТЕ РЕШИТЬ ПЛИЗ ВОТ ЗАДАНИЕ: 1)ПОДГОТОВИТЬ ТЕКСТОВЫЙ ФАЙЛ С ВХОДНЫМИ ДАНЫМИ В РЕДАКТОРЕ 2)РАЗБИТЬ ПРОГРАММУ НА...

Матрица L(n,k) состоит из нулей и единиц. Найти в ней самую длинную цепочку подряд стоящих нулей по горизонтал - C++
Помогите решить на C++ QtCreator

В данном массиве найти самую длинную группу из записанных подряд элементоводного знака - C++
1.В данном массиве найти самую длинную группу из записанных подряд элементоводного знака.

Определить самую большую отрицательную и самую маленькую положительную температуры - C++
Помогите новичку,первая контрольная по программированию в с++ В массиве T(12) хранится среднемесячная температура для каждого из 12...


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

Или воспользуйтесь поиском по форуму:
xtorne21st
интересующийся
303 / 274 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
06.12.2012, 16:30     В массиве найти самую маленькую серию подряд стоящих нечетных элементов... (Как доработать программу?) #6
Цитата Сообщение от 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 )
Yandex
Объявления
06.12.2012, 16:30     В массиве найти самую маленькую серию подряд стоящих нечетных элементов... (Как доработать программу?)
Ответ Создать тему
Опции темы

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