1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
|
|
1 | |
Обход матрицы по 0 с заданного элемента23.04.2013, 11:18. Показов 1979. Ответов 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 | 2 |
А как она сможет пройтись по всем 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 [ТС] | 4 |
вот дали такую задачу=) сказали мегопростая=) я убедился в обратном=)
Добавлено через 1 минуту я плюс ко всему сказал что матрица квадратная) ну и если не сможет то выдать что такого маршрута нет) и кстати надо записать маршрут) напримеер 1-вправо, 2-влево, 3-вниз, 4-вверх
0
|
23.04.2013, 14:39 | 5 | |||||
Ну вот например. Только надо еще запоминать, где мы проходили, а где нет. А то так закикливается, по кругу бегает.
Если убрать 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 [ТС] | 6 |
эм, а вместо string char нельзя? Добавлено через 3 минуты и она не хочет компилиться(
0
|
1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
|
|
23.04.2013, 16:43 [ТС] | 8 |
ну меня чисто интересовало, изменится ли что-то от этого)
Добавлено через 1 минуту у меня именно с++, ну я фактически понимаю что это))
0
|
23.04.2013, 16:46 | 9 |
Способы ввода-вывода, объявления и передачи в функции. Больше ничего
Добавлено через 1 минуту Я писал это в Bloodshed Dev C++ Наверное в вашем IDE свои особенности. Создайте пустой проект и вставьте туда содержимое main и функцию getpath. Может скомпилится.
0
|
1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
|
|
23.04.2013, 16:49 [ТС] | 10 |
у меня VS2010 C++
Добавлено через 2 минуты самая главная ошибка это преобразования const char в char и const char в int, где !=
0
|
1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
|
|
23.04.2013, 16:53 [ТС] | 12 |
ничего не изменилось=(
0
|
1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
|
|
23.04.2013, 16:57 [ТС] | 14 |
#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 [ТС] | 16 |
Я здесь 2 день, не знаю как)
0
|
23.04.2013, 17:06 | 17 |
1
|
1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
|
||||||
23.04.2013, 17:10 [ТС] | 18 | |||||
согласен, забыл что 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 [ТС] | 20 |
все равно некоторые остались( их прибавилось чутка(
Добавлено через 2 минуты Я кстати забыл пояснить что не для всех элементов будет путь...и по нулям 2 раза проходиться нельзя, вот
0
|
23.04.2013, 17:17 | |
23.04.2013, 17:17 | |
Помогаю со студенческими работами здесь
20
Метод для вычисления минорной матрицы для заданного элемента Обход элемента массива, исследование на соответствие Как осуществить прокрутку элемента управления в ListView до заданного элемента В пользовательском классе List (список) реализовать вставку элемента после заданного элемента Найти отношение минимального элемента матрицы A(n,m) и максимального элемента матрицы B(k,p) Функция, которая возвращает список булевских значений четности каждого элемента заданного элемента целочисленного списка Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |