Исключение из строки всех символов, кроме букв английского алфавита и пробела - C (СИ)
Формулировка задачи:
Здравствуйте, необходимо написать фрагмент программы, в котором проверяется, есть ли в строке, которая должна состоять только из английских букв и пробелов, символы отличные от допустимых (цифры, знаки.....). Я недавно начал изучать язык СИ. Написал фрагмент программы:
При вводе цифры в последовательность не происходит должная реакция. Программа и дальше пишет "все окей". Я мало что знаю по СИ, но очень хочу разобраться. Подскажите, пожалуйста.
#include <stdio.h> #include <locale.h> void main() { char s[258]; int i; setlocale(LC_ALL, "Russian"); printf("Введите последовательность, не превышающую 256 символов. Последовательность представляет из себя набор слов, состоящих из английских букв. Слова можно разделять на предложения. Каждое предложение заканчивается точкой. Последовательность заканчивается *."); gets(s); i=0; while ((s[i]!='*')&&(i<=256)) { if (((s[i]>'a')&&(s[i]<'z'))||((s[i]>'A')&&(s[i]<'Z'))||(s[i]=' ')) printf("Все окей"); else { printf("Не окей"); break; } i++; } printf("%s", s); }
Да еще можно точки вводить. Забыл про них.
Решение задачи: «Исключение из строки всех символов, кроме букв английского алфавита и пробела»
textual
Листинг программы
#include <stdio.h> void main() { char s[258]; int i,j=0; printf("Enter string (end-*)."); gets(s); i=0; while ((s[i]!='*')&&(i<=256)) { if ( ! ( ((s[i]>'a') && (s[i]<'z')) || ( (s[i]>'A') && (s[i]<'Z')) || (s[i]==' ') || (s[i] == '.'))) { printf("Bad symbol %c \n",s[i]); j=-1; break; } i++; } if (j == 0) printf("All is OK!\n"); }
Объяснение кода листинга программы
- Подключение стандартной библиотеки для работы с консолью
- Объявление переменных: строки s, счетчика i, инициализация j=0
- Вывод сообщения с просьбой ввести строку
- Считывание строки с помощью функции gets(s)
- Установка значения i=0 и начало цикла while
- Проверка условия: s[i]!='*' и i<=256
- Внутри цикла проверка каждого символа строки
- Если символ не является буквой английского алфавита (заглавной или строчной), пробелом или точкой - выводится сообщение с названием плохого символа
- Значение j=-1 и выход из цикла с помощью оператора break
- После окончания цикла проверка значения j
- Если j=0, выводится сообщение
All is OK!
- Ожидание ввода пользователя для завершения программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д