|
1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
|
|
Обход матрицы по 0 с заданного элемента23.04.2013, 11:18. Показов 2570. Ответов 26
Метки нет (Все метки)
Дана квадратная матрица, состоящая из 0 и 1...делается обход начинаю с какого то элемента... пробегается по 0, например вправо, если встречается 1, то мы меняем маршрут, вниз или вверх, если опять встречается 1, то опять меняем маршрут.....требуется написать программу, которая напишет номер элемента, который сможет пройтись таким образом по всем нулям....реализовать поиск с помощью рекурсивной функции...
0
|
|
| 23.04.2013, 11:18 | |
|
Ответы с готовыми решениями:
26
Поиск элемента матрицы из заданного диапазона
Начиная с заданного элемента матрицы, вывести ее элементы заданным образом |
|
12 / 7 / 3
Регистрация: 06.01.2013
Сообщений: 127
|
|
| 23.04.2013, 11:21 | |
|
А как она сможет пройтись по всем 0 в таком случае?
1 1 1 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0
0
|
|
|
1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
|
||
| 23.04.2013, 11:48 [ТС] | ||
|
вот дали такую задачу=) сказали мегопростая=) я убедился в обратном=)
Добавлено через 1 минуту
0
|
||
|
|
||||||
| 23.04.2013, 14:39 | ||||||
|
Ну вот например. Только надо еще запоминать, где мы проходили, а где нет. А то так закикливается, по кругу бегает.
Если убрать if (cnt>6) return path; то в бесконечный цикл уйдет.
Кликните здесь для просмотра всего текста
2. проход по всем ячейкам
for (i=0;i<m;i++) for (j=0;j<m;j++) запуск проверки ячейки Процедура проверки ячейки. ячейка a[i][j] в путь пишем ячейка i j - проход вправо - влево - вверх - вниз. проход вправо. if (i+1=m) выход (достигли стенки справа) else if (a[i+1][j] = 1) выход (вправо нельзя, там единица). else записываем путь и вызываем проверку ячейки a[i+1][j] проход влево if (i-1=-1) выход (достигли стенки слева) else if (a[i-1][j] = 1) выход (влево нельзя, там единица). else записываем путь и вызываем проверку ячейки a[i-1][j] проход вверх if (j+1=m) выход (достигли стенки сверху) else if (a[i][j+1] = 1) выход (вверх нельзя, там единица) else записываем путь и вызываем проверку ячейки a[i][j+1] проход Вниз if (j-1=m) выход (достигли стенки сверху) else if (a[i][j-1] = 1) выход (вниз нельзя, там единица) else записываем путь и вызываем проверку ячейки a[i][j-1] тут возвращаем путь и обнуляем его.
0
|
||||||
|
1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
|
||
| 23.04.2013, 16:39 [ТС] | ||
|
эм, а вместо string char нельзя? Добавлено через 3 минуты и она не хочет компилиться(
0
|
||
|
1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
|
|
| 23.04.2013, 16:43 [ТС] | |
|
ну меня чисто интересовало, изменится ли что-то от этого)
Добавлено через 1 минуту у меня именно с++, ну я фактически понимаю что это))
0
|
|
|
|
|||
| 23.04.2013, 16:46 | |||
|
Добавлено через 1 минуту Наверное в вашем IDE свои особенности. Создайте пустой проект и вставьте туда содержимое main и функцию getpath. Может скомпилится.
0
|
|||
|
1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
|
|
| 23.04.2013, 16:49 [ТС] | |
|
у меня VS2010 C++
Добавлено через 2 минуты самая главная ошибка это преобразования const char в char и const char в int, где !=
0
|
|
|
1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
|
|
| 23.04.2013, 16:53 [ТС] | |
|
ничего не изменилось=(
0
|
|
|
1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
|
|
| 23.04.2013, 16:57 [ТС] | |
|
#include <cstdlib>
#include <iostream> using namespace std; static string path; int M[3][3] = {{0,1,0}, {0,0,1}, {0,0,1}}; char getpath(char path, int j, int i, char last, int cnt) { if (cnt>6) return path; if (last!="left") if (j+1==3) ; else if (M[j+1][i] == 1) ; else getpath(path+" right",j+1,i,"right",cnt+1); if (last!="right") if (j-1==-1) ; else if (M[j-1][i] == 1) ; else getpath(path+" left",j-1,i,"left",cnt+1); if (last!="down") if (i-1==-1) ; else if (M[j][i-1] == 1) ; else getpath(path+" up",j,i-1,"up",cnt+1); if (last!="up") if (i+1==3) ; else if (M[j][i+1] == 1) ; else getpath(path+" down",j,i+1,"down",cnt+1); if (path!="Element:") cout << path << endl; return path; } int main(int argc, char *argv[]) { for (int i=0;i<3;i++) { cout << endl; for (int j=0; j<3; j++) cout << M[j][i] ; } cout << endl; for (int i=0;i<3;i++) for (int j=0; j<3; j++) { path+="Element:"; cout<<j<<" "<<i<<endl; getpath(path, j,i,"first",0); path = ""; } } Ошибка 1 error C2446: !=: нет преобразования "const char *" в "int" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 16 Ошибка 2 error C2040: !=: "int" отличается по уровням косвенного обращения от "const char [5]" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 16 Ошибка 3 error C2664: getpath: невозможно преобразовать параметр 1 из "const char [7]" в "char" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 19 Ошибка 4 error C2446: !=: нет преобразования "const char *" в "int" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 21 Ошибка 5 error C2040: !=: "int" отличается по уровням косвенного обращения от "const char [6]" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 21 Ошибка 6 error C2664: getpath: невозможно преобразовать параметр 1 из "const char [6]" в "char" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 24 Ошибка 7 error C2446: !=: нет преобразования "const char *" в "int" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 26 Ошибка 8 error C2040: !=: "int" отличается по уровням косвенного обращения от "const char [5]" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 26 Ошибка 9 error C2664: getpath: невозможно преобразовать параметр 1 из "const char [4]" в "char" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 29 Ошибка 10 error C2446: !=: нет преобразования "const char *" в "int" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 31 Ошибка 11 error C2040: !=: "int" отличается по уровням косвенного обращения от "const char [3]" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 31 Ошибка 12 error C2664: getpath: невозможно преобразовать параметр 1 из "const char [6]" в "char" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 34 Ошибка 13 error C2446: !=: нет преобразования "const char *" в "int" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 37 Ошибка 14 error C2040: !=: "int" отличается по уровням косвенного обращения от "const char [9]" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 37 Ошибка 15 error C2664: getpath: невозможно преобразовать параметр 1 из "std::string" в "char" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 63 16 IntelliSense: несовместимые типы операндов ("char" и "const char *") c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 16 17 IntelliSense: аргумент типа "const char *" несовместим с параметром типа "char" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 19 18 IntelliSense: аргумент типа "const char *" несовместим с параметром типа "char" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 19 19 IntelliSense: несовместимые типы операндов ("char" и "const char *") c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 21 20 IntelliSense: аргумент типа "const char *" несовместим с параметром типа "char" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 24 21 IntelliSense: аргумент типа "const char *" несовместим с параметром типа "char" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 24 22 IntelliSense: несовместимые типы операндов ("char" и "const char *") c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 26 23 IntelliSense: аргумент типа "const char *" несовместим с параметром типа "char" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 29 24 IntelliSense: аргумент типа "const char *" несовместим с параметром типа "char" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 29 25 IntelliSense: несовместимые типы операндов ("char" и "const char *") c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 31 26 IntelliSense: аргумент типа "const char *" несовместим с параметром типа "char" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 34 27 IntelliSense: аргумент типа "const char *" несовместим с параметром типа "char" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 34 28 IntelliSense: несовместимые типы операндов ("char" и "const char *") c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 37 29 IntelliSense: не существует подходящей функции преобразования из "std::string" в "char" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 63 30 IntelliSense: аргумент типа "const char *" несовместим с параметром типа "char" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 63
0
|
|
|
1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
|
|
| 23.04.2013, 17:03 [ТС] | |
|
Я здесь 2 день, не знаю как)
0
|
|
|
|
|
| 23.04.2013, 17:06 | |
|
1
|
|
|
1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
|
||||||
| 23.04.2013, 17:10 [ТС] | ||||||
|
согласен, забыл что char должны быть указателями....
Ошибка 2 error C2040: !=: "int" отличается по уровням косвенного обращения от "const char [5]" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 16 Ошибка 3 error C2664: getpath: невозможно преобразовать параметр 1 из "const char [7]" в "char" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 19 Ошибка 4 error C2446: !=: нет преобразования "const char *" в "int" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 21 Ошибка 5 error C2040: !=: "int" отличается по уровням косвенного обращения от "const char [6]" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 21 Ошибка 6 error C2664: getpath: невозможно преобразовать параметр 1 из "const char [6]" в "char" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 24 Ошибка 7 error C2446: !=: нет преобразования "const char *" в "int" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 26 Ошибка 8 error C2040: !=: "int" отличается по уровням косвенного обращения от "const char [5]" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 26 Ошибка 9 error C2664: getpath: невозможно преобразовать параметр 1 из "const char [4]" в "char" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 29 Ошибка 10 error C2446: !=: нет преобразования "const char *" в "int" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 31 Ошибка 11 error C2040: !=: "int" отличается по уровням косвенного обращения от "const char [3]" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 31 Ошибка 12 error C2664: getpath: невозможно преобразовать параметр 1 из "const char [6]" в "char" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 34 Ошибка 13 error C2446: !=: нет преобразования "const char *" в "int" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 37 Ошибка 14 error C2040: !=: "int" отличается по уровням косвенного обращения от "const char [9]" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 37 Ошибка 15 error C2664: getpath: невозможно преобразовать параметр 1 из "std::string" в "char" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 63 16 IntelliSense: тип возвращаемого значения не соответствует типу функции c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 14 17 IntelliSense: выражение должно иметь целочисленный или перечисляемый тип c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 19 18 IntelliSense: выражение должно иметь целочисленный или перечисляемый тип c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 24 19 IntelliSense: выражение должно иметь целочисленный или перечисляемый тип c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 29 20 IntelliSense: выражение должно иметь целочисленный или перечисляемый тип c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 34 21 IntelliSense: тип возвращаемого значения не соответствует типу функции c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 40 22 IntelliSense: не существует подходящей функции преобразования из "std::string" в "char *" c:\users\1\documents\visual studio 2010\projects\defense\defense\gfd.cpp 63 вот что теперь выводит...
0
|
||||||
|
1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
|
|
| 23.04.2013, 17:17 [ТС] | |
|
все равно некоторые остались( их прибавилось чутка(
Добавлено через 2 минуты Я кстати забыл пояснить что не для всех элементов будет путь...и по нулям 2 раза проходиться нельзя, вот
0
|
|
| 23.04.2013, 17:17 | |
|
Помогаю со студенческими работами здесь
20
Метод для вычисления минорной матрицы для заданного элемента Обход элемента массива, исследование на соответствие
В пользовательском классе List (список) реализовать вставку элемента после заданного элемента Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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. Пошагово создадим проект для загрузки изображения. . .
|