Я новичок и пытаюсь сделать cs50 mario для левой половины пирамиды что-то вроде этого (изображения - это просто пустое место)
ssss# sss## ss### s####
после долгих размышлений я решил, что эта формула должна работать
#include<cs50.h>
#include<stdio.h>
int main(void)
{
int n = get_int("Height: ");
for (int i = 0; i < n; i++)
{
// s stands for spaces
for (int s = 0; s < n - 1 - i; s++)
printf(" ");
// h stands for hashes
for (int h = 0; h < n - s; h++)
printf("#");
printf("\n");
}
printf("\n");
}
как вы видите, я хочу использовать значение переменной s, которое изменяется, и использовать его в следующей переменной h, я знаю, что его значение находится только в (), когда я пытался добавить {}, как это
#include<cs50.h>
#include<stdio.h>
int main(void)
{
int n = get_int("Height: ");
for (int i = 0; i < n; i++)
{
// s stands for spaces
for (int s = 0; s < n - 1 - i; s++)
{
printf(" ");
// h stands for hashes
for (int h = 0; h < n - s; h++)
printf("#");
printf("\n");
}
}
printf("\n");
}
он избегает строки printf ("") и сначала печатает #, что приводит к чему-то вроде этого
#### ### ## #### ### ####
Итак, как я могу получить его до первых пробелов печати по количеству (INput-1-line), а затем распечатать хэши (хеши входных переменных), чтобы во 2-й строке пирамиды из 4 строк я получил (4-1-1 = 2 пробела), затем хеши (входные пробелы) (4-2 = 2) ss ## 3-я строка (4-1-2 = 1) (4-3 = 1) s ### и так далее.
for (int h = 0; h < n - s; h++)
не имеет скобок вокруг блока кода, а второй даже не компилируется, потому что в нем отсутствует открывающая скобкаfor (int h = 0; h < n - s; h++)
- person phuclv   schedule 11.11.2018{
и}
размещены особым образом (AFAICS). Я думаю, что эти неуместные фигурные скобки являются причиной некоторых странностей. Если вы используете стандартный макет кода, это значительно облегчит жизнь всем. В конце циклаs
значениеs
будетn - 1 - i
; вы можете использовать выражение в предельном выражении следующего цикла:for (int h = 0; h < n - (n - 1 - i); h++)
, но затем вы можете упростить его доfor (int h = 0; h < i + 1; h++)
, так что вам действительно не нужно иметь доступ кs
после завершения цикла. - person Jonathan Leffler   schedule 11.11.2018