Задать вопрос
@a_nuzhdin

Найдите ошибку в коде?

Задача вывести матрицу по спирали из вернего правого угла к центру. Сломал уже всю голову, где ошибка
что выдет программа:
13 21 1
8 55 1
5 3 2
Спираль выводит как надо, но вот после 21 почему- то идет 55, проблема с числами фибоначчи.
Подскажите, где ошибку не вижу
#include <iostream>
using namespace std;
int fib_n(int n)
{
	int x = 1;
	int y = 0;
	for (int i = 0; i < n; i++)
	{
		x += y;
		y = x - y;
	}
	return y;
}
 int main(){
     int stolb;
     int stroka;
     cin >> stolb >> stroka;
     int m = 0;
     int z = 1;
     int a[stroka][stolb];
     for(int i = 0; i < stroka; i++){
        for(int j = 0; j < stolb; j++){
            a[i][j] = 0;
        }
     }
     while(z <= stolb * stroka){
            }
        for(int i = m + 1; i < stroka - m; i++){   //from top to bottom
            a[i][stolb - m - 1] = fib_n(z);
            z += 1;
        }
        for(int i = stolb - m - 2; i > m - 1; i--){
            a[stroka - m - 1][i] = fib_n(z);
            z += 1;
        }
        for(int i = stroka - 2 - m; i > 0; i--){
            a[i][m] = fib_n(z);
            z += 1;

        }
        for(int i = m; i < stolb - m; i++){
            a[m][i] = fib_n(z);
            z += 1;
        }
        m += 1;
     }

     for(int i = 0; i < stroka; i++){
        for(int j = 0; j < stolb; j++){
                cout << a[i][j] << " ";
        }
        cout << endl;
     }

 }
  • Вопрос задан
  • 98 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
Adamos
@Adamos
Очевидно, на втором витке спирали в центральную ячейку записывается еще одно значение.
Либо на бумажке повтори алгоритм с реальными цифрами, либо после каждого присвоения сделай вывод информации, по каким координатам произошла запись. Сам увидишь ошибку.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы