Если буквы в строке упорядочены по алфавиту, то вывести 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;
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы для работы с stdin/stdout и для работы с массивами
  2. Объявляем константу N, которая равна 40, это максимальное количество символов в строке
  3. Объявляем переменную m типа int, которая будет использоваться в цикле for
  4. Объявляем переменную i типа int, которая будет использоваться в цикле for
  5. Объявляем переменную j типа char, которая будет использоваться для сравнения символов
  6. Объявляем массив a типа char, который содержит строку a267bcd45e7fg89i1b5jkl5m8n5o7p3xy56z
  7. В цикле for проходим по всем элементам массива a, проверяем, является ли символ буквой от 'a' до 'z'
  8. Если текущий символ является буквой от 'a' до 'z', то сохраняем его в переменную j и запоминаем индекс в переменную m
  9. После цикла for выводим сообщение об ошибке, если была найдена буква, нарушающая порядок, и выводим ноль, если все символы упорядочены
  10. Возвращаем 0, чтобы указать, что программа успешно завершилась

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.333 из 5
Похожие ответы