Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
 Аватар для Кротяка
7 / 7 / 1
Регистрация: 20.12.2010
Сообщений: 392

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

14.12.2013, 22:26. Показов 4694. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.12.2013, 22:26
Ответы с готовыми решениями:

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

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

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

23
118 / 110 / 78
Регистрация: 30.01.2013
Сообщений: 297
14.12.2013, 22:29
C++
1
2
3
4
5
6
for(int i = 0; i < n; i++){
    for(int j = 0; j < m-1; j++){
        if(array_a[i][j] != 0 && array_a[i][j+1] != 0 && array_a[i][j] != array_a[i][j+1])
            array_b[t][k] == array_a[i][j];
    }
}
1
 Аватар для Кротяка
7 / 7 / 1
Регистрация: 20.12.2010
Сообщений: 392
14.12.2013, 22:39  [ТС]
ZeR_0, неправильно

Добавлено через 28 секунд
я и сам так пытался сделать
0
118 / 110 / 78
Регистрация: 30.01.2013
Сообщений: 297
14.12.2013, 23:14
Цитата Сообщение от Кротяка Посмотреть сообщение
ZeR_0, неправильно

Добавлено через 28 секунд
я и сам так пытался сделать
А задачу то можно увидеть целиком?
1
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
14.12.2013, 23:20
C++
1
2
3
for(int i=0;i<n-1;i++)
   if(arr[i]==0 && arr[i+1]==0)
       //делаем что надо
0
118 / 110 / 78
Регистрация: 30.01.2013
Сообщений: 297
14.12.2013, 23:22
Цитата Сообщение от ValeryS Посмотреть сообщение
C++
1
2
3
for(int i=0;i<n-1;i++)
   if(arr[i]==0 && arr[i+1]==0)
       //делаем что надо
я выше аналогичное писал. автор сказал что не подходит. нужно увидеть задание целиком
1
 Аватар для Кротяка
7 / 7 / 1
Регистрация: 20.12.2010
Сообщений: 392
14.12.2013, 23:27  [ТС]
ZeR_0, Дана последовательность A1, ..., А50. Определить, есть ли в последовательности и, если есть, исключить два идущих подряд нулевых элемента.
Т.е., нужно найти есть ли в массиве два идущих подряд нулевых элемента, и, если есть, записать исходный массив в новый массив, но без этих самых нулевых элементов

Добавлено через 25 секунд
массив кстати двумерный)
0
118 / 110 / 78
Регистрация: 30.01.2013
Сообщений: 297
14.12.2013, 23:28
Цитата Сообщение от Кротяка Посмотреть сообщение
ZeR_0, Дана последовательность A1, ..., А50. Определить, есть ли в последовательности и, если есть, исключить два идущих подряд нулевых элемента.
Т.е., нужно найти есть ли в массиве два идущих подряд нулевых элемента, и, если есть, записать исходный массив в новый массив, но без этих самых нулевых элементов

Добавлено через 25 секунд
массив кстати двумерный)
если матрица такая

1 2 0 0 1 2
1 2 1 1 1 2

Я думаю вы понимаете к чему я клоню

Результат тогда
1 2 1 2
1 2 1 1 1 2
1
 Аватар для Кротяка
7 / 7 / 1
Регистрация: 20.12.2010
Сообщений: 392
14.12.2013, 23:31  [ТС]
ZeR_0, нужно сдвигать элементы массива

Добавлено через 30 секунд
чтобы не было пустых элементов
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
14.12.2013, 23:37
Цитата Сообщение от ZeR_0 Посмотреть сообщение
я выше аналогичное писал. автор сказал что не подходит.
аналогичное но не то
Цитата Сообщение от ZeR_0 Посмотреть сообщение
array_a[i][j] != 0 && array_a[i][j+1] != 0 && array_a[i][j] != array_a[i][j+1]
здесь два не 0 и числа не равны

при копировании второй 0 выбрасывается
но еслти их будет 3 или 4 или все 0 то так не пойдет
C++
1
2
3
4
5
6
7
8
9
10
11
12
for( int i=0;i<n;i++)
 {
 if( i==n-1)
   arr2[i]=arr1[i];
 else
  {
     arr2[i]=arr1[i];
  if(arr1[i]==0 && arr1[i+1]==0)
       i++;
 
   }
 }
0
118 / 110 / 78
Регистрация: 30.01.2013
Сообщений: 297
14.12.2013, 23:38
Цитата Сообщение от Кротяка Посмотреть сообщение
ZeR_0, нужно сдвигать элементы массива

Добавлено через 30 секунд
чтобы не было пустых элементов
1 2 0 0 1 2
1 2 1 1 1 2

1 2 1 2 1
1 2 1 1 1

Вы это имели ввиду?
1
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
14.12.2013, 23:38
при копировании оба нуля выбрасываются
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
for( int i=0;i<n;i++)
 {
 if( i==n-1)
   arr2[i]=arr1[i];
 else
  {
  
  if(arr1[i]==0 && arr1[i+1]==0)
       i++;
   else
         arr2[i]=arr1[i];
   }
 }
0
 Аватар для Кротяка
7 / 7 / 1
Регистрация: 20.12.2010
Сообщений: 392
14.12.2013, 23:39  [ТС]
ZeR_0, именно
0
118 / 110 / 78
Регистрация: 30.01.2013
Сообщений: 297
14.12.2013, 23:42
Цитата Сообщение от Кротяка Посмотреть сообщение
ZeR_0, именно
Тогда я подобрал слишком идеальный пример

1 2 0 0 1 2
1 2 1 1 1 2
1 2 1 1 1 2

1 2 1 2
1 2 1 1 1 2
1 2 1 1 1 2

1 2 1 2 1
2 1 1 1 2
1 2 1 1 1 2

Что вы скажете на это?
1
 Аватар для Кротяка
7 / 7 / 1
Регистрация: 20.12.2010
Сообщений: 392
14.12.2013, 23:44  [ТС]
ZeR_0, если пустые поля и будут оставаться, то они должны быть в конце матрицы, в последней строке, начиная с последнего символа и по убывающей
0
118 / 110 / 78
Регистрация: 30.01.2013
Сообщений: 297
14.12.2013, 23:46
Цитата Сообщение от Кротяка Посмотреть сообщение
ZeR_0, если пустые поля и будут оставаться, то они должны быть в конце матрицы, в последней строке, начиная с последнего символа и по убывающей
Все. Понял примерную реализацию. после душа отпишу
1
 Аватар для Кротяка
7 / 7 / 1
Регистрация: 20.12.2010
Сообщений: 392
14.12.2013, 23:48  [ТС]
ValeryS, во первых массив у нас двумерный
во вторых ваш код просто копирует элементы из одного массива в другой
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
14.12.2013, 23:59
Цитата Сообщение от Кротяка Посмотреть сообщение
ValeryS, во первых массив у нас двумерный
у вас да
поэтому и пишите реализацию сами, идею я показал
Цитата Сообщение от Кротяка Посмотреть сообщение
во вторых ваш код просто копирует элементы из одного массива в другой
а что нужно?
Цитата Сообщение от Кротяка Посмотреть сообщение
записать исходный массив в новый массив, но без этих самых нулевых элементов
это не копирование?
а если не видите изменение индекса
Цитата Сообщение от ValeryS Посмотреть сообщение
if(arr1[i]==0 && arr1[i+1]==0)
i++;
else
arr2[i]=arr1[i];
тогда Ой
0
118 / 110 / 78
Регистрация: 30.01.2013
Сообщений: 297
15.12.2013, 01: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
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
 Аватар для Кротяка
7 / 7 / 1
Регистрация: 20.12.2010
Сообщений: 392
15.12.2013, 04:02  [ТС]
ZeR_0, большое спасибо! а не могли бы вы подсказать, как исключить из матрицы 3 идущих подряд нулевых элемента?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.12.2013, 04:02
Помогаю со студенческими работами здесь

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

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

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

Определить два идущих подряд нулевых элемента
Помогите пожалуйста выяснить,имеется ли в массиве 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...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru