Сортировка массива букв в алфавитном порядке - PullRequest
0 голосов
/ 16 июня 2020

Идея состоит в том, чтобы отсканировать массив букв и отсортировать их в алфавитном порядке

#include <stdio.h>
int main(int argc, char const *argv[]){
    char letters[1000000];
    int i = 0, num_letters = 0, temp;
    scanf("%s", letters);

    while(letters[i] != '\0'){
        num_letters++;
        i++;
    }
    i = 0;
    int count = 0;
    while(count < num_letters){
        while(i < num_letters - 1){
            if(letters[i] > letters[i+1]){
                temp = letters[i + 1];
                letters[i+1] = letters[i];
                letters[i] = temp;
            }
            i++;
        }
        count++;
    }
    printf("%s", letters);
    return 0;
}

Код не работает, и я не знаю, почему, например, строка 'adsadf' выводится обратно ' adadfs 'вместо' aaddfs '

1 Ответ

3 голосов
/ 16 июня 2020

Вы должны сбросить i перед запуском внутреннего oop, поэтому:

i = 0;
int count = 0;
while(count < num_letters){
    while(i < num_letters - 1){

должно быть

int count = 0;
while(count < num_letters){
    i = 0;
    while(i < num_letters - 1){

Примечание: научитесь использовать отладчик и как для пошагового выполнения кода. Тогда вы бы увидели, что i не было правильным значением во второй итерации внешнего, а l oop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...