به نظر می رسد که می خواهید یک شکل لوزی با الگوی ستاره بکشید. شما از دو حلقه تو در تو برای کنترل تعداد ستاره ها در هر ردیف و تعداد فاصله های قبل از هر ردیف استفاده می کنید.
اولین مشکل کد شما این است که شما از متغیر "fasleh_nahee" برای کنترل تعداد فاصله های قبل از هر سطر استفاده می کنید، اما مقدار آن را پس از اولین حلقه به مقدار صحیح بر نمی گردانید. در عوض، شما مقدار "fasleh_nahee" را در حلقه دوم افزایش می دهید، که باعث می شود ستاره ها به هم نخورند.
برای رفع این مشکل، می توانید قبل از شروع حلقه دوم، مقدار "fasleh_nahee" را به مقدار صحیح بازگردانید.
مشکل دیگر این است که تعداد فاصله های قبل از هر ردیف ستاره به درستی محاسبه نمی شود. برای قرار دادن ستاره ها در مرکز، تعداد فاصله ها باید برابر با (n-1)/2 برای حلقه اول و (n-i)/2 برای حلقه دوم باشد.
در اینجا یک راه ممکن برای رفع کد وجود دارد:
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
int fasleh_nahee = (n-1)/2;
for (int i = 1; i <= n; i += 2)
{
for (int f = 1; f <= fasleh_nahee; ++f)
{
printf(" ");
}
for (int j = 1; j <= i; ++j)
{
printf("*");
}
printf("\n");
}
//-------------------------------------------------------------------
fasleh_nahee = (n-1)/2;
for (int i = n; i >= 1; i -= 2)
{
for (int f = 1; f <= fasleh_nahee; ++f)
{
printf(" ");
}
fasleh_nahee = (fasleh_nahee - i/2);
for (int j = 1; j <= i; ++j)
{
printf("*");
}
printf("\n");
}
return 0;
}
در این نسخه از کد، مقدار "fasleh_nahee" قبل از حلقه دوم به (n-1)/2 بازنشانی می شود. من همچنین یک خط کد برای به روز رسانی مقدار "fasleh_nahee" بعد از هر بار تکرار حلقه دوم اضافه کردم تا به درستی ستاره ها را در مرکز قرار دهیم.
لطفاً توجه داشته باشید که کد بالا باید همانطور که انتظار میرود کار کند، اما کارآمدترین راه برای انجام این کار نیست، و برای ورودیهای بزرگتر از n، ممکن است اجرای آن بیشتر طول بکشد.