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

найти нулевые элементы на краях таблицы

22.02.2013, 16:54. Показов 1006. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть двумерный массив
a.v[i][j]
из нулей и единиц
надо найти координаты двух точек
т.е. нулевые элементы на краях массива(первая, последняя строчка, первый, последний столбец)
а записать координаты в Coord
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
void Start(Matrix& a)
{
    Coord in;
    Coord out;
    do
    {
        for(int i=0; i<a.ocount; i++) //первая строка
            if(a.v[i][0]==0) {in.x=i; in.y=0; in.enabled=true;}
 
        for(int j=0; j<a.ocount; j++) // первый столбец
            if(a.v[0][j]==0) {in.x=0; in.y=j; in.enabled=true;}
 
        for(int i=0; i<a.ocount; i++) // последняя строка
            if(a.v[i][a.scount-1]==0) {in.x=i; in.y=a.scount-1; in.enabled=true;}
 
        for(int j=0; j<a.ocount; j++) //последний столбец
            if(a.v[j][a.ocount]==0) {in.x=j; in.y=a.ocount; in.enabled=true;}
    }
    while(in.enabled==false);
    a.v[in.x][in.y]=2;
    do
    {
        for(int i=0; i<a.ocount; i++) //первая строка
            if(a.v[i][0]==0) {out.x=i; out.y=0; out.enabled=true;}
 
        for(int j=0; j<a.ocount; j++) // первый столбец
            if(a.v[0][j]==0) {out.x=0; out.y=j; out.enabled=true;}
 
        for(int i=0; i<a.ocount; i++) // последняя строка
            if(a.v[i][a.scount-1]==0) {out.x=i; out.y=a.scount-1; out.enabled=true;}
 
        for(int j=0; j<a.ocount; j++) //последний столбец
            if(a.v[j][a.ocount]==0) {out.x=j; out.y=a.ocount; out.enabled=true;}
        
    }
    while(out.enabled==false);
    cout<<"in x="<<in.x<<"\ty="<<in.y<<endl;
    cout<<"out x="<<out.x<<"\ty="<<out.y<<endl;
 
}
но из 2ого цикла никогда не выходит. почему?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.02.2013, 16:54
Ответы с готовыми решениями:

Сформировать из строк двумерного массива, содержащих нулевые элементы, одномерный массив. Нулевые элементы не выводить (удалить их)
Вот что у меня получилось, но это полная фигня... Помогите пожалуйста! var a:array of integer; b:array of integer; ...

Дан массив, содержащий нулевые элементы. “Сожмите” его, передвинув нулевые элементы в конец массива
Знаю, где ошибка, но не могу придумать, как исправить. Если выпадает два соседних нуля, то после сдвига счетчик перескакивает на следующее...

Найти все нулевые элементы матрицы. Найти их количество
Дана матрица m*n заполним матрицу. Найти все нулевые элементы. Найти их количество.

5
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
22.02.2013, 17:10
а зачем циклы?)

Добавлено через 5 минут
видимо у тебя только такая одна координата которую ты после 1го цикла заменяешь на ненулевую
Цитата Сообщение от Tiva Посмотреть сообщение
C++
1
a.v[in.x][in.y]=2;
Добавлено через 2 минуты
Цитата Сообщение от Tiva Посмотреть сообщение
надо найти координаты двух точек
т.е. нулевые элементы на краях массива(первая, последняя строчка, первый, последний столбец)
если честно пока что не вижу связи, требования с написанной программой будь добр напиши поподробнее))
0
96 / 96 / 21
Регистрация: 25.04.2012
Сообщений: 449
22.02.2013, 17:18  [ТС]
в массиве только 0 и 1
функция Start находит первый нулевой элемент в массиве(первый do-while)
потом заменяет его на 2 (чтоб второй такой элемент на краях был другим, а не опять тем же самым)
и опять do-while проходит по массиву, в поиске нуля на краю

т.е. если есть вот такой массив
1 1 1 1 1 1 1 1 1 1
0 0 1 1 1 1 1 1 1 1
1 0 0 0 1 1 0 0 0 1
1 1 1 0 0 0 0 1 0 1
1 1 1 1 1 1 1 0 0 1
1 1 1 1 1 1 1 0 1 1
1 1 0 0 0 0 0 0 1 1
1 1 0 1 1 1 1 1 1 1
1 1 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 0 1
то в in записались координаты 0:1, а в out 8:9

Добавлено через 1 минуту
Coord выглядит вот так
C++
1
2
3
4
5
6
struct Coord
{
    int x,y;
    bool enabled;
    Coord(){x=0;y=0; enabled=false;}
};
0
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
22.02.2013, 17:26
Цитата Сообщение от Tiva Посмотреть сообщение
C++
1
2
for(int j=0; j<a.ocount; j++) //последний столбец 
if(a.v[j][a.ocount]==0) {in.x=j; in.y=a.ocount; in.enabled=true;}
а не
C++
1
2
for(int j=0; j<a.ocount; j++) //последний столбец 
if(a.v[a.ocount-1][j]==0) {in.x=j; in.y=a.ocount; in.enabled=true;}
Добавлено через 1 минуту
C++
1
2
        for(int j=0; j<a.ocount; j++) // первый столбец
            if(a.v[0][j]==0) {in.x=0; in.y=j; in.enabled=true;}
а ты уверен что это первый столбец?) может это все таки первая строка?

Добавлено через 3 минуты
насчет конструкции do - while, а если вдруг у тебя будет матрица (может попасть случайно) в которой крайние элементы = 1, то что тогда? финкция повиснет?, помоему do - while Тут совершенно не нужен, а можешь просто проверив
C++
1
if(in.enabled==true;)
вывести какое нибудь сообщение
0
96 / 96 / 21
Регистрация: 25.04.2012
Сообщений: 449
22.02.2013, 17:40  [ТС]
Цитата Сообщение от aLarman Посмотреть сообщение
а ты уверен что это первый столбец?) может это все таки первая строка?
не уверен, т.к. постоянно путаю, за что отвечает первый индекс, а за что второй индекс....
v[i][j]
первый индекс это вправо отсчитывать(столбцы)
правый индекс вниз считать(строки)
вот реально путаю
0
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
22.02.2013, 17:52
первый номер строки, второй номер столбца, v[i][0] первый столбец, v[0][i] первая строка
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.02.2013, 17:52
Помогаю со студенческими работами здесь

Найти нулевые элементы матрицы
Нужно записать эту программу 1).через функции; 2).через файловые переменные. Вот условие :Найти нулевые элементы матрицы А под...

Найти все нулевые элементы матрицы и их количество
Дана матрица m*n заполним матрицу. Найти все нулевые элементы. Найти их количество. Найти их индексы

В массиве А(n) найти первый и последний нулевые элементы.
В массиве А(n) найти первый и последний нулевые элементы. Помогите пожалуйста, не могу разобраться как находить их...

В данном массиве найти все нулевые элементы
В данном массиве найти все нулевые элементы и заменить их вместе с соседними элементами на 3.

В массиве Т (к) найти первый и последний нулевые элементы
1. в массиве Т(к) найти первый и последний нулевые элементы. смог только написать так что бы считала все нулевые элементы 2.Дан пример...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru