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

Нахождение всех возможных путей для спуска с вершины матрицы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Методом деления отрезка пополам и методом итерации найти приближенное значение корня 2х3+3х-1=0 на интервале [0;0,8] абсолютная погрешность не превыша http://www.cyberforum.ru/cpp-beginners/thread619218.html
Методом деления отрезка пополам и методом итерации найти приближенное значение корня 2х3+3х-1=0 на интервале абсолютная погрешность не превышает 0,001. Сравнить результаты методов вычисления. заранее благодарю
C++ Книга Стивена Поттса помогите найти книгу: "BORLAND C++ в примерах" Автор: Стивен Поттс, Тимоти С. Монк http://www.cyberforum.ru/cpp-beginners/thread619214.html
Лабиринт C++
#include <iostream> #include <fstream> #include <conio.h> #include <time.h> #include <cmath> #include <stdio.h> using namespace std; int main()
Конкатенация строк C++
Должно быть консольное приложение. Очень простой вопрос, но сам что-то завис, и немогу найти что хочу. Значит так есть такой кусок кода hf=FindFirstFile("d:\\Auto\\*", &FindFileData); ///********************* А хочу так hf=FindFirstFile("d:\\Auto\\ /*сюда вставить переменную типа стринг*/ \\*", &FindFileData); Ну в общем чтобы можна было по папкам переходить.(Зайти в одну...
C++ Зачем оставлять переменные-члены класса закрытыми? http://www.cyberforum.ru/cpp-beginners/thread619193.html
Вот пишут,что нужно переменные - члены класса оставлять закрытыми, используя для их установки значений или возвращений значений, методы доступа. Но зачем так делать?
C++ Перевод инфиксного выражения в постфиксное (обратная польская запись) Всем привет! Надо с помощью стека на динамическом массиве реализовать перевод инфиксного выражения в постфиксное. (обратная польская нотация). с помощью алгоритма сортировочной станции. Кто не знает или забыл, что это такое, например: дано выражение (4+5)*7 45+7* - это обратная польская запись (постфиксное выражение) У меня почему-то не записываются операции в стек, в чем ошибка в... подробнее

Показать сообщение отдельно
clozer
Сообщений: n/a
06.07.2012, 00:18     Нахождение всех возможных путей для спуска с вершины матрицы
спасибо за ответ. подправил алгоритм под свой код. происходт обращение за пределы массива
текущий код:

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
#include <iostream>
#include <fstream>
#include <cstdio>
#include <string>
#include <stdlib.h>
#include <sstream>
 
using namespace std;
 
void Search(int **, int, int, int *, int);
 
int main()
{
  FILE *in, *out;
  in=fopen("data.in","r");
  int arr_size;
  fscanf(in,"%d",&arr_size);
 
  int** data = new int*[arr_size ];
  for(int i = 0; i < arr_size; i++)
      data[i] = new int[arr_size + 1];
 
  for(i = 0; i < arr_size; i++)
  {
    for(int j = 0; j < arr_size + 1; j++)
    {
      data[i][j] = 0;
    }
  }
 
  for(i=0; i < arr_size; i++)
  {
    for(int j = 0; j < i + 2; j++)
    {
      int number;
      fscanf(in,"%d",&number);
      data[i][j] = number;
    }
  }
 
  int* temp_indexes = new int[arr_size];
 
  for(i = 0; i < arr_size; i++)
  {
    temp_indexes[i] = 0;
  }
 
  for(i = 0; i < arr_size; i++)
  {
    if(data[0][i] != 0)
    {
      temp_indexes[0] = i;
      Search(data, 0, i, temp_indexes, arr_size);
    }
  }
  return 0;
}
 
void Search(int **Matrix, int Row, int Column, int *String, int size)
 
{
  cout << "row " << Row + 1 << endl;
  cout << "column " << Column - 1 << endl;
  if(Column - 1 >= 0 && Matrix[Row+1][Column-1]!=0 && Row < size)
  {
    String[Row+1] = Column-1;
    Search(Matrix, Row+1, Column-1, String, size);
  }
  if(Matrix[Row+1][Column]!=0 && Row < size)
  {
    String[Row+1] = Column;
    Search(Matrix, Row+1, Column, String, size);
  }
  if(Matrix[Row+1][Column+1]!=0 && Row < size)
  {
    String[Row+1] = Column+1;
    Search(Matrix, Row+1, Column+1, String, size);
  }
  if(Row==2)
  {
    String[Row] = Column;
    for(int i = 0; i < size-1; i++)
      cout << String[i];
    cout << endl;
  }
}
data.in:

3
1 2
3 4 5
6 7 8 9

помогите найти ошибку, пожалуйста

Добавлено через 45 минут
заметил свою ошибку. нужно было размер делать на +1 больше.
и вместо
C++
1
if(Row==2)
нужно
C++
1
if(Row==size - 2)
 
Текущее время: 07:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru