Я изучаю C++, и у меня есть проблема с моей программой. Он должен напечатать следующее, если n=11
:Вложенные петли и модуль C++
*---------*
-*-------*-
--*-----*--
---*---*---
----*-*----
-----*-----
----*-*----
---*---*---
--*-----*--
-*-------*-
*---------*
Это мой код, который корректно работает с п = 5, но не с большими числами:
#include <iostream>
using namespace std;
int main()
{
int n;
cout << "Enter size (n x n): " << endl;
cin >> n;
for (int i=0;i<n;i++){
for (int j=0;j<n;j++){
if (i%n==j%n) cout << '*';
else if (i%(n-i)==j%(n-j)) cout << '*';
else cout << '-';
}
cout << endl;
}
return 0;
}
Это печатается, если n=11
:
*---------*
-*----*--*-
--*-----*--
---*---*---
----*------
-----*-----
-*----*--*-
---*---*---
--*-----*--
-*----*--*-
*---------*
Я вижу, что я успешно написал, как распечатать один из диагнозов '*'. Но что-то не работает с другим, которое движется назад. К сожалению, я не могу решить эту проблему и вам нужен ваш совет. Что я делаю не так? Как отлаживать такие проблемы?
Правильный инструмент для решения таких проблем - ваш отладчик. Перед тем, как просить о переполнении стека, вы должны пропустить свой код по очереди *. Для получения дополнительной информации, пожалуйста, прочтите [Как отлаживать небольшие программы (Эрик Липперт)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Как минимум, вы должны \ [изменить] ваш вопрос, чтобы включить пример [Минимальный, полный и проверенный] (http://stackoverflow.com/help/mcve), который воспроизводит вашу проблему, а также замечания, сделанные вами в отладчик. –
Есть ли конкретная причина, по которой вам приходится решать эту проблему с помощью оператора мод? Это похоже на странный способ сделать это ... –
У меня было подобное упражнение, в котором использовался оператор мод. –