Вывод цифр, содержащихся в строке - C (СИ)
Формулировка задачи:
Здравствуйте, можете помочь перевести программу на строки, задание такое, нужно вводить в строку знаки,числа,буквы, а выводиться должны только цифры.
Var s,s1:string;
i:byte;
Begin
write('Ââåäèòå ñòðîêó: ');readln(s);
s1:='';
For i:=1 to Length(s) do
if s[i] in ['0'..'9'] then s1:=s1+s[i]
else
Begin
if s1<>'' then writeln(s1);
s1:='';
End;
if s1<>'' then writeln(s1);
readln;
End.Решение задачи: «Вывод цифр, содержащихся в строке»
textual
Листинг программы
#include <ctype.h>
#include <stdio.h>
int main(void) {
int i, n = 0;
char s[256];
char s1[256] = "";
puts("Введите строку:");
scanf("%255[^\n]", s);
for(i = 0; s[i] != '\0'; ++i) {
if(isdigit(s[i])) {
s1[n] = s[i];
s1[++n] = '\0';
}
else if(*s1) {
puts(s1);
*s1 = '\0';
n = 0;
}
}
if(*s1) puts(s1);
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек:
и . - Объявление переменных:
int i- цикл.n = 0- счётчик для массиваs1.char s[256]- строка, которую вводит пользователь.- `char s1[256] = ``` - массив, в который будут добавляться цифры.
- Вывод сообщения с просьбой ввести строку.
- Считывание строки с помощью
scanf(%255[^\n], s);. - Проверка каждого символа в строке
s. - Если символ является цифрой, то он добавляется в массив
s1. - Если символ не является цифрой, но в массиве
s1уже есть символы, то выводится текущее значение массиваs1и его очистка для следующего добавления. - Если символ не является цифрой и в массиве
s1нет символов, то ничего не происходит. - После прохода по всем символам в строке, если в массиве
s1остались символы, то они выводятся на экран. - Возврат 0, означающий успешный исход программы.