@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
Adamos
@Adamos
Очевидно, на втором витке спирали в центральную ячейку записывается еще одно значение.
Либо на бумажке повтори алгоритм с реальными цифрами, либо после каждого присвоения сделай вывод информации, по каким координатам произошла запись. Сам увидишь ошибку.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы