Перевести с паскаля на С - 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; }
Объяснение кода листинга программы
В этом коде происходит перевод двоичного числа, введенного пользователем, в десятичное. Вот список действий, которые происходят в коде:
- Включаются необходимые заголовочные файлы:
stdio.h
для работы с вводом-выводомstdlib.h
для функцииsystem()
string.h
для работы со строкамиmath.h
для возведения в степень
- Создаются переменные:
char st[1000]
- массив для хранения введенного числаint c = 0;
- счетчик для подсчета количества цифр в числеint j;
- временная переменная для хранения числового значения символаint temp, summ = 0;
- переменные для промежуточных расчетов
- Выполняется команда очистки консоли:
system(
cls);
для Windowssystem(
clear);
для Linux
- Выводится запрос на ввод числа:
printf(
Введите двоичное число:);
- Происходит цикл по всем символам введенного числа:
for (int i = 0; i < strlen(st); i++)
- Проверяется каждый символ на соответствие 0 или 1:
if (st[i] != '1' && st[i] != '0')
- Если символ не равен 0 или 1, счетчик c устанавливается в 5:
c = 5;
- Если все символы являются 0 или 1, выполняется основной цикл перевода числа:
if (c != 5)
- В основном цикле происходит перевод числа в десятичное:
for (int i = 1; i <= strlen(st); i++)
- Вычисляется числовое значение текущего символа:
j = st[i - 1] - 48;
- Устанавливается значение счетчика c для текущего символа:
c = strlen(st) - i;
- Вычисляется десятичное значение символа:
temp = j * pow(2, c);
- К сумме прибавляется полученное значение:
summ += temp;
- Выводится промежуточный результат:
if (i == strlen(st))
- В конце выводится итоговый результат:
printf(
%d, summ);
- Функция main() возвращает 0, завершая работу программы:
return 0;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д