Как будет выглядеть это в си? - C (СИ)
Формулировка задачи:
FROM inOut IMPORT Write, Writeln;
CONST N=10;
VAR i,k,r:CARDINAL;
d:ARRAY[1..N] OF CARDINAL;
BEGIN
FOR k:=1 TO N DO
Write(".");r:=0;
FOR i:=1 TO k-1 DO
r:=10*r+d[i]; d[i]:=r DIV 2; r:=r MOD 2;
Write(CHR(d[i]+ORD("0")))
END;
d[k]:=5; Write("5"); WriteLn
END
END Power.main()
{
int d[n];
int i,k,r;
r=0;
for(k=1,k>n,k++)
{
for (i=1,k-1)
r=10*r+d[i];
d[i]=r/2;
r=r%2;Решение задачи: «Как будет выглядеть это в си?»
textual
Листинг программы
#include <stdio.h>
#include <stdint.h>
#define N 10
int main(void)
{
uint32_t i, k, r;
uint32_t d[N] = {0};
for (k = 0; k < N; k++)
{
printf(".");
r = 0;
for (i = 0; i < k; i++)
{
r = 10 * r + d[i];
d[i] = r / 2;
r = r % 2;
printf("%c", (char)(d[i] + '0'));
}
d[k] = 5;
printf("5\n");
}
return 0;
}
Объяснение кода листинга программы
В этом коде используется язык программирования C. Он выполняет следующие действия:
- Подключает необходимые библиотеки для работы сprintf и типами данных.
- Определяет константу N, которая задает размер массива.
- Объявляет переменные i, k, r и массив d.
- Инициализирует все элементы массива d значением 0.
- В цикле for перебирает все возможные значения k от 0 до N-1.
- Внутри цикла выводит точку и затем выполняет следующие действия:
- Объявляет переменную r равной 0.
- В цикле for перебирает все значения i от 0 до k-1.
- Внутри цикла вычисляет новое значение r как 10 умноженное на текущее значение r, с последующим добавлением значения d[i].
- Обновляет значение d[i] равным новому значению r, разделенному на 2.
- Вычисляет остаток от деления нового значения r на 2 и сохраняет его в переменной r.
- Выводит значение d[i] плюс '0' как символ.
- После завершения внутреннего цикла, обновляет значение d[k] равным 5.
- Выводит значение 5.
- Завершает цикл for и выводит точку с помощью функции printf.
- Возвращает 0, чтобы указать, что программа успешно завершилась.