Для начала не используйте нестандартные функции C или макросы, такие как putch
, и заголовки, такие как <conio.h>
.
Вместо функции putch
вы можете использовать стандартную функцию putchar
.
Также в соответствии со стандартом C функция main без параметров должна быть объявлена как
int main( void )
В этом вызове
putch(" ");
аргумент функции представляет собой строковый литерал, имеющий тип char[2]
и определенный как
{ ' ', '\n' }
. Используемый в качестве аргумента, он неявно преобразуется вуказатель на его первый символ.
Это причина ошибки. Вместо передачи аргумента типа int, например
putch( ' ' );
, вы передаете аргумент типа char *
из-за неявного преобразования строкового литерала в указатель.
Также попробуйтеобъявить переменные в области, где они используются. Иначе трудно читать программы с многочисленными объявлениями переменных в начале программы, потому что их цели неясны.
Вы можете вывести свой шаблон, используя только два цикла.
Вот демонстративныйПрограмма
#include <stdio.h>
int main(void)
{
while ( 1 )
{
printf( "Enter a non-negative number (0 - exit): " );
int n;
if ( scanf( "%d", &n ) != 1 || n <= 0 ) break;
putchar( '\n' );
for ( int i = 0; i < n; i++ )
{
int value = 1;
printf( "%*d", n - i, value );
while ( !( i < value++ ) ) printf( "%d", value );
putchar( '\n' );
}
putchar( '\n' );
}
return 0;
}
Вывод может выглядеть как
Enter a non-negative number (0 - exit): 9
1
12
123
1234
12345
123456
1234567
12345678
123456789
Enter a non-negative number (0 - exit): 8
1
12
123
1234
12345
123456
1234567
12345678
Enter a non-negative number (0 - exit): 7
1
12
123
1234
12345
123456
1234567
Enter a non-negative number (0 - exit): 6
1
12
123
1234
12345
123456
Enter a non-negative number (0 - exit): 5
1
12
123
1234
12345
Enter a non-negative number (0 - exit): 4
1
12
123
1234
Enter a non-negative number (0 - exit): 3
1
12
123
Enter a non-negative number (0 - exit): 2
1
12
Enter a non-negative number (0 - exit): 1
1
Enter a non-negative number (0 - exit): 0