Выделение чисел из строки - C (СИ)
Формулировка задачи:
Здравствуйте. Как выделить отдельные целые числа из введенной
пользователем строки? Числом считается последовательность цифр, разделяемых одним или несколькими пробелами, которая может включать знак минус, стоящий в начале.
Решение задачи: «Выделение чисел из строки»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #define N 80 int main() { char str[N], *first, *last; int i, flag = 0; puts("Enter line:"); fgets(str, N, stdin); for( i = 0; str[i]; i++){ if(!flag){ if((str[i] >= '0' && str[i] <= '9') || str[i] == '-'){ first = &str[i]; flag = 1; } } else{ if(str[i] < '0' || str[i] > '9'){ last = &str[i]; flag = 0; if(last - first > 1){ if(*first == '0'){ //если число начинается с нуля или нескольких нулей while((first < last - 1) && *first == '0')//убираем нули first++; } if(*first == '-' && *(first + 1) == '0'){ //если после минуса ноль putchar('-'); first++; while((first < last - 1) && *first == '0')//убираем нули first++; } while(first < last) putchar(*first++); putchar('\n'); } else{ //если число из одной цифры if(*first != '-'){ //минус без чмсла не печатаем putchar(*first); putchar('\n'); } } if(str[i] == '-'){ //если между числами минус first = &str[i]; flag = 1; } } } } return 0; }
Объяснение кода листинга программы
- Объявлены переменные: char str[N], first, last; int i, flag = 0;
- Выводится приглашение для ввода строки:
puts(
Enter line:
); - Вводится строка с помощью функции fgets(str, N, stdin).
- В цикле for( i = 0; str[i]; i++){ происходит проход по каждому символу строки.
- Внутри цикла проверяется, является ли текущий символ числом или знаком минус.
- Если текущий символ является числом или знаком минус, то запоминаются начальный и конечный индексы числа.
- Если текущий символ не является числом, то проверяется, является ли он нулем. Если да, то удаляются все нули в начале числа.
- Если текущий символ является знаком минус, то проверяется, следует ли за ним ноль. Если да, то выводится знак минус.
- Выводится число, начиная с первого символа после нулей и минуса и до последнего символа числа.
- Если число состоит из одной цифры, то выводится эта цифра.
- Если между числами стоит знак минус, то выводится знак минус.
- Возвращается 0, что означает успешное завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д