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

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

Войти
Регистрация
Восстановить пароль
 
 
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
#1

Проверить два идущих подряд нуля в массиве - C++

14.12.2013, 22:26. Просмотров 743. Ответов 23
Метки нет (Все метки)

Как правильно проверить два идущих подряд нуля в массиве? Чтобы при выполнении условия один массив заполнялся данными из другого? Мои попытки к успеху не приводят
C++
1
2
if (mas[i,j] != 0 && mas[i,j+1] != 0 && mas[i,j+1] != mas[i,j])
    arr[i, j] = mas[i, j];
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2013, 22:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверить два идущих подряд нуля в массиве (C++):

Имеется ли в целочисленном массиве два идущих подряд нуля? - C++
Имеется ли в целочисленном массиве два идущих подряд нуля? Ответ вывести в виде "ДА" или "НЕТ" Спасибо заранее, очень...

Найти в последовательности чисел два подряд идущих нуля - C++
Дана последовательность из n чисел найти в ней кол-во 2 подряд идущих 0 Нужно сделать блок схему

Дана последовательность целых чисел. Известно, что среди них несколько раз встречаются два подряд идущих нуля. - C++
1. Дана последовательность целых чисел. Известно, что среди них несколько раз встречаются два подряд идущих нуля. Определить, сколько раз...

Выяснить, имеются ли в данном массиве два идущих подряд положительных элемента - C++
Дан массив действительных чисел а1,…, аn. Выяснить, имеются ли в данном массиве два идущих подряд положительных элемента. Подсчитать...

Определить, сколько раз в массиве встречаются два подряд идущих нулевых элемента - C++
Задан одномерный массив A. Определить, сколько раз в нём встретились два подряд идущих нулевых элемента. Помогите пожалуйста написать...

Определить, сколько раз в массиве встретилось два подряд идущих нулевых элемента - C++
Пример: Сформировать массив целых чисел X(N), элементами которого являются случайные числа в диапазоне . Найти максимальный элемент и его...

23
ZeR_0
117 / 109 / 37
Регистрация: 30.01.2013
Сообщений: 297
14.12.2013, 23:46 #16
Цитата Сообщение от Кротяка Посмотреть сообщение
ZeR_0, если пустые поля и будут оставаться, то они должны быть в конце матрицы, в последней строке, начиная с последнего символа и по убывающей
Все. Понял примерную реализацию. после душа отпишу
1
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
14.12.2013, 23:48  [ТС] #17
ValeryS, во первых массив у нас двумерный
во вторых ваш код просто копирует элементы из одного массива в другой
0
ValeryS
Модератор
6679 / 5088 / 475
Регистрация: 14.02.2011
Сообщений: 17,070
14.12.2013, 23:59 #18
Цитата Сообщение от Кротяка Посмотреть сообщение
ValeryS, во первых массив у нас двумерный
у вас да
поэтому и пишите реализацию сами, идею я показал
Цитата Сообщение от Кротяка Посмотреть сообщение
во вторых ваш код просто копирует элементы из одного массива в другой
а что нужно?
Цитата Сообщение от Кротяка Посмотреть сообщение
записать исходный массив в новый массив, но без этих самых нулевых элементов
это не копирование?
а если не видите изменение индекса
Цитата Сообщение от ValeryS Посмотреть сообщение
if(arr1[i]==0 && arr1[i+1]==0)
i++;
else
arr2[i]=arr1[i];
тогда Ой
0
ZeR_0
117 / 109 / 37
Регистрация: 30.01.2013
Сообщений: 297
15.12.2013, 01:23 #19
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
102
103
104
105
106
107
108
#include <iostream>
using namespace std;
 
void main(){
    setlocale(LC_ALL,"rus");
 
    int **array_a; //Массив А
    int **array_b; //Массив В
 
    int line;   //Строки
    int column; //Столбцы
 
    //Получаем размер массива А
    cout<<"Введите размер матрицы: ";
    cin>>line>>column;
 
    //Выделяем память для А
    array_a = new int*[line];
    for(int i = 0; i < line; i++)
        array_a[i] = new int[column];
 
    //Выделяем память для B (столько же сколько и под В)
    array_b = new int*[line];
    for(int i = 0; i < line; i++)
        array_b[i] = new int[column];
 
    //Заполняем А
    for(int i = 0; i < line; i++){
        for(int j = 0; j < column; j++){
            cin>>array_a[i][j];
        }
    }
 
    //Выводим массив А
    cout<<"Матрица A:"<<endl;
    for(int i = 0; i < line; i++){
        for(int j = 0; j < column; j++){
            cout<<array_a[i][j]<<" ";
        }
        cout<<endl;
    }
 
    //Индексы для нового массива
    int b_i = 0;
    int b_j = 0;
 
    for(int i = 0; i < line; i++){
        for(int j = 0; j < column; j++){
            //Если нашли элемент равный 0
            if(array_a[i][j] == 0){
                //Проверяем стоит ли он в конце строки
                if(j == column - 1){
                    //Если да, то стоит ли он в конце столбца
                    if(i != line - 1){
                        //Если не в конце столбца, то проверяем элемент стоящий на 1 позиции на следующей строке
                        if(array_a[i+1][0] == 0){
                            //Если он равен 0, то просто изменяем индексы
                            i++;
                            j = 0;
                            //Если не равен, то заносим элемент i,j во второй массив
                        } else {
                            array_b[b_i][b_j] = array_a[i][j];
                            b_j++;
                            //Думаю не стоит объяснять
                            if(b_j == column){
                                b_i++;
                                b_j = 0;
                            }
                        }
                        //Если элемент i,j стоит в конце столбца и строки, то просто добавляем его в массив
                    } else {
                        array_b[b_i][b_j] = array_a[i][j];
                    }
                    //Если элемент i,j стоит не в конце строки, то проверяем следующий за ним элемент
                } else if(array_a[i][j+1] == 0)
                    //Если он равен 0, то просто изменяем индекс
                    j++;
                //Если i,j стоит не в конце строки и следующий за ним элемент не равен 0
                //то добавляем элемент i,j в массив
                else {
                    array_b[b_i][b_j] = array_a[i][j];
                    b_j++;
                    if(b_j == column){
                        b_i++;
                        b_j = 0;
                    }
                }
            //Если элемент i,j не равен 0, то просто добавляем его в массив
            } else {
                array_b[b_i][b_j] = array_a[i][j];
                b_j++;
                if(b_j == column){
                    b_i++;
                    b_j = 0;
                }
            }
        }
    }
 
    //Выводим массив В
    cout<<endl<<"Матрица B:"<<endl;
    for(int i = 0; i < line; i++){
        for(int j = 0; j < column; j++){
            cout<<array_b[i][j]<<" ";
        }
        cout<<endl;
    }
}
Вот такое вот чудо. Моей целью, конечно, не было написать по короче.
Добавил по максимуму комментариев, чтобы было понятней.
1
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
15.12.2013, 04:02  [ТС] #20
ZeR_0, большое спасибо! а не могли бы вы подсказать, как исключить из матрицы 3 идущих подряд нулевых элемента?
0
ZeR_0
117 / 109 / 37
Регистрация: 30.01.2013
Сообщений: 297
15.12.2013, 04:19 #21
Цитата Сообщение от Кротяка Посмотреть сообщение
ZeR_0, большое спасибо! а не могли бы вы подсказать, как исключить из матрицы 3 идущих подряд нулевых элемента?
Только тогда когда их ровно 3?
Нужно внести некоторые модификации

Добавлено через 11 минут

Не по теме:

Если за тот код вас будет ругать препод. Не говорите, что я его писал

1
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
15.12.2013, 14:30  [ТС] #22
ZeR_0, ну да, если в матрице стоят три нуля подряд

Не по теме:

думаю ругать никто не будет) реализация то что надо

0
ZeR_0
117 / 109 / 37
Регистрация: 30.01.2013
Сообщений: 297
15.12.2013, 14:32 #23
Цитата Сообщение от Кротяка Посмотреть сообщение
ZeR_0, ну да, если в матрице стоят три нуля подряд

Не по теме:

думаю ругать никто не будет) реализация то что надо

я подумаю. Если оставлять такую реализацию и добавлять в нее еще условий, то это будет многовато по моему
1
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
15.12.2013, 14:47  [ТС] #24
ZeR_0, не думаю)
0
15.12.2013, 14:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2013, 14:47
Привет! Вот еще темы с ответами:

Определить два идущих подряд нулевых элемента - C++
Помогите пожалуйста выяснить,имеется ли в массиве C (динамический) два идущих подряд нулевых элемента. Решить задачу ,используя указатели.

Проверить наличие в последовательности пяти подряд идущих заданных символов - C++
#include &quot;stdafx.h&quot; #include &quot;stdio.h&quot; #include &quot;math.h&quot; #include &quot;iostream&quot; #include &quot;string&quot; #include &quot;time.h&quot; using...

Определить, сколько раз в последовательности встрачается два нуля подряд - C++
Дана последовательность целых чисел. Известно, что среди них несколько раз встречаются два подряд идущих нуля. Определить, сколько раз...

определить есть ли в массиве последовательность из подряд идущих элементов - C++
Привет всем.Помогите пожалуйста решить задачу. Заранее спасибо. Дан массив из n элементов орпеделить есть ли в массиве...


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

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

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