Перевести программу из Pascal в СИ - C (СИ)
Формулировка задачи:
Перевести программу из Pascal в СИ:
var
s: string;
i,count: integer;
begin
ReadLn(s);
count := 0;
for i := 1 to Length(s) do
begin
if (s[i] = '(') and (count >= 0) then
Inc(count);
if s[i] = ')' then
Dec(count);
end;
if count = 0 then
WriteLn('Yes')
else
WriteLn('No');
ReadLn
end.Решение задачи: «Перевести программу из Pascal в СИ»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char s[256];
int count = 0;
int i;
fgets(s, sizeof(s), stdin);
for (i = 0; i < strlen(s); ++i) {
if ((s[i] == '(') && (0 <= count)) {
count++;
}
else if (s[i] == ')') {
count--;
}
}
if (count == 0) {
printf("Yes");
}
else {
printf("No");
}
system("pause");
return 0;
}
Объяснение кода листинга программы
- Переменная
sобъявлена как массив символов с размером 256. - В цикле
forпроисходит проход по всем символам в строкеs. - Переменная
countинициализируется нулем и используется для подсчета скобок. - Если текущий символ
s[i]равен(и значение переменнойcountбольше или равно нулю, то значение переменнойcountувеличивается на единицу. - Если текущий символ
s[i]равен)и значение переменнойcountбольше нуля, то значение переменнойcountуменьшается на единицу. - После прохода по всем символам в строке
s, значение переменнойcountпроверяется на равенство нулю. - Если значение переменной
countравно нулю, то выводитсяYes. - Если значение переменной
countне равно нулю, то выводитсяNo. - В конце программы вызывается функция
system(pause), которая приостанавливает выполнение программы до нажатия клавиши. - Программа возвращает ноль, что означает успешное завершение работы.