Перевести с паскаля на С - C (СИ) (77577)

Узнай цену своей работы

Формулировка задачи:

Перевести данную програму, на Borland C (он же чистый С)
uses crt;
var
st:string;
summ,temp:real;
i,j,k,c:integer;
begin
ClrScr; // чистим экран
write ('Введите двоичное число: ');
read(st);
 for i:=1 to Length(st) do begin   //идём от 1 до длинны строки
    if st[i]='1' then
    else
       if st[i]='0' then            //проверка. если элемент i строки равен 1 или 0 то  c=5
       else
         c:=5;
 end;
if c<>5 then begin                 //если с не равно 5-и то идём дальше
   for i:=1 to Length(st) do begin  //идём от 1 до длинны строки
     val(st[i],j,k);                //присваиваем j целочисленный эквивалент i-того элемента строки
     c:=Length(st)-i;               //считаем степень
     temp:=j*(exp(c*ln(2)));        //умножаем i-тый элемент строки на 2 в степени с
     summ:=summ+temp;
       if i=Length(st) then         //вывод промежуточных действий
       write ('(',j,'*2^',c,')=')
       else
         write ('(',j,'*2^',c,')+');
   end;
   write (summ);
end
else
end.
Или хотябы отдельные ее части такие как
for i:=1 to Length(st) do begin

Решение задачи: «Перевести с паскаля на С»

textual
Листинг программы
#include <stdio.h> //для ввода-вывода
#include <stdlib.h> //для функции system()
#include <string.h> //для работы со строками
#include <math.h> //для возведения в степень
 
int main()
{
    char st[1000];
    int c = 0;
    int j;
    int temp, summ = 0;
    system("cls");//для винды. system("clear"); если linux
    printf("Введите двоичное число: ");
    scanf("%s", st);
    for (int i = 0; i < strlen(st); i++)
    {
        if (st[i] != '1' && st[i] != '0') // не дословно, но смысл тот же (если символ не 0 и не 1)
        {
            c = 5;
        }
    }
    if (c != 5)
    {
        for (int i = 1; i <= strlen(st); i++)
        {
            j = st[i - 1] - 48; //наверное если отдельная функция, но это тоже работает
            c = strlen(st) - i;
            temp = j * pow(2, c); //pow(2, c) - 2 в степени c
            summ += temp;
            if (i == strlen(st))
            {
                printf("(%d*2^%d)=", j, c);
            }
            else
            {
                printf("(%d*2^%d)+", j, c);
            }
        }
        printf("%d", summ);
    }
    return 0;
}

Объяснение кода листинга программы

В этом коде происходит перевод двоичного числа, введенного пользователем, в десятичное. Вот список действий, которые происходят в коде:

  1. Включаются необходимые заголовочные файлы:
    • stdio.h для работы с вводом-выводом
    • stdlib.h для функции system()
    • string.h для работы со строками
    • math.h для возведения в степень
  2. Создаются переменные:
    • char st[1000] - массив для хранения введенного числа
    • int c = 0; - счетчик для подсчета количества цифр в числе
    • int j; - временная переменная для хранения числового значения символа
    • int temp, summ = 0; - переменные для промежуточных расчетов
  3. Выполняется команда очистки консоли:
    • system(cls); для Windows
    • system(clear); для Linux
  4. Выводится запрос на ввод числа:
    • printf(Введите двоичное число: );
  5. Происходит цикл по всем символам введенного числа:
    • for (int i = 0; i < strlen(st); i++)
  6. Проверяется каждый символ на соответствие 0 или 1:
    • if (st[i] != '1' && st[i] != '0')
  7. Если символ не равен 0 или 1, счетчик c устанавливается в 5:
    • c = 5;
  8. Если все символы являются 0 или 1, выполняется основной цикл перевода числа:
    • if (c != 5)
  9. В основном цикле происходит перевод числа в десятичное:
    • for (int i = 1; i <= strlen(st); i++)
  10. Вычисляется числовое значение текущего символа:
    • j = st[i - 1] - 48;
  11. Устанавливается значение счетчика c для текущего символа:
    • c = strlen(st) - i;
  12. Вычисляется десятичное значение символа:
    • temp = j * pow(2, c);
  13. К сумме прибавляется полученное значение:
    • summ += temp;
  14. Выводится промежуточный результат:
    • if (i == strlen(st))
  15. В конце выводится итоговый результат:
    • printf(%d, summ);
  16. Функция main() возвращает 0, завершая работу программы:
    • return 0;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.9 из 5