Нам было дано задание - нарисовать X в C, используя только циклы while и операторы if (допускаются математические выражения и выражения).
Я выполнил только первую половину X в коде,вторая половина - как раз наоборот.
Сложной частью являются средние черты (-), так как я изо всех сил пытаюсь найти способ заставить их считать в обратном направлении на 2 через циклы while.
Я слишком много думаю об этом? Если да, то как лучше подходить к этой проблеме?
Я впервые изучаю C, и нам не разрешено проходить циклы или делать что-то еще, кроме базового уровня.
Спасибо за чтение!
int size, fLine, rowCounter, tempSize;
printf("Enter size: ");
scanf("%d", &size);
// The split will half the size of the X to run 2 seperate while loops
// One loop for the top half and another for the lower half.
int split = ((size - 1) / 2);
int row = 1;
// Top half of the X
while (row <= split) {
// Condition to print out the top and bottom line of the X
if ((row == 1) || (row == size)) {
printf("*");
// tempSize will allow for the counter to decrease without
// affecting the size variable
tempSize = size;
// Will add the middle dashes on the top line
while ((tempSize - 2) > 0) {
printf("-");
tempSize--;
}
printf("*\n");
row++;
} else {
// The dashes before the first asterisks
// rowCounter allows the row number to be decreased in the
// while loop
rowCounter = row - 1;
while (rowCounter > 0) {
printf("-");
rowCounter--;
}
printf("*");
// Will add size + (row * -2) dashes into the middle
// **This section is the subject of the question!**
rowCounter = row * 2;
tempSize = rowCounter - size; // 2 - 5 = -3
while (tempSize < (size - 1)) {
printf("-");
tempSize++;
}
printf("*");
// Will add the final dashes. Exactly the same as the first
// while loop
rowCounter = row - 1;
while (rowCounter > 1) {
printf("-");
rowCounter--;
}
printf("-\n");
row++;
} //Yet to add the middle line and the bottom half!
}
return 0;
}
Ожидаемый результат:
Enter Size: 5
*---*
-*-*-
--*--
-*-*-
*---*
Фактический результат:
Enter Size: 5
*---*
-*-----*-
Я хочу, чтобы средние значения подсчитывались НАЗАД, чтобы 9, 7, 5, 3,1 и т. Д. Вместо вверх на 2.