Если буквы в строке упорядочены по алфавиту, то вывести 0; иначе вывести номер символа, нарушающего порядок - C (СИ)
Формулировка задачи:
Дана строка, содержащая цифры и строчные латинские буквы. Если
буквы в строке упорядочены по алфавиту, то вывести 0; в противном
случае вывести номер первого символа строки, нарушающего алфавитный
порядок.
Помогите, пожалуйста, составить программу без использования cin и cout. Буду очень благодарен и признателен.
Вот я тут написал небольшую часть:
void main()
{
char s[100];
int k, i;
printf_s("Введите строку: ");
s[1]='a';
s[2]='b';
s[3]='c';
s[4]='d';
s[5]-'e';
s[6]='f';
s[7]='g';
s[8]='h';
s[9]='i';
s[10]='j';
s[11]='k';
s[12]='l';
s[13]='m';
s[14]='n';
s[15]='o';
s[16]='p';
s[17]='q';
s[18]='r';
s[19]='s';
s[20]='t';
s[21]='u';
s[22]='v';
s[23]='w';
s[24]='x';
s[25]='y';
s[26]='z';
k==0;
}Решение задачи: «Если буквы в строке упорядочены по алфавиту, то вывести 0; иначе вывести номер символа, нарушающего порядок»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
const int N = 40;
int main()
{
int m, i;
char j, a[40] = "a267bcd45e7fg89i1b5jkl5m8n5o7p3xy56z";
for(i = 0; i < N; ++i){
if(a[i] >= 'a' && a[i] <= 'z')
j = a[i];
m = i; break;
}
for(i = m; i < N; ++i){
if(a[i] >= 'a' && a[i] <= 'z'){
if(a[i] < j){
printf("Element a[%d] break alphabetical order\n", i);break;
}
else
j = a[i];
}
if(i == N - 1)
printf("0\n");
}
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с stdin/stdout и для работы с массивами
- Объявляем константу N, которая равна 40, это максимальное количество символов в строке
- Объявляем переменную m типа int, которая будет использоваться в цикле for
- Объявляем переменную i типа int, которая будет использоваться в цикле for
- Объявляем переменную j типа char, которая будет использоваться для сравнения символов
- Объявляем массив a типа char, который содержит строку
a267bcd45e7fg89i1b5jkl5m8n5o7p3xy56z - В цикле for проходим по всем элементам массива a, проверяем, является ли символ буквой от 'a' до 'z'
- Если текущий символ является буквой от 'a' до 'z', то сохраняем его в переменную j и запоминаем индекс в переменную m
- После цикла for выводим сообщение об ошибке, если была найдена буква, нарушающая порядок, и выводим ноль, если все символы упорядочены
- Возвращаем 0, чтобы указать, что программа успешно завершилась