Elabore um programa em C que leia 4 strings e as organize em ordem crescente (alfabética).

Passo 1

Beleza, vamos resolver esse exercício juntos! A gente precisa criar um programa em C que lê 4 palavras (strings) e as organiza em ordem alfabética. Pra isso, vamos precisar entender como lidar com strings em C, como ler entradas do usuário e como comparar e ordenar essas strings.

Passo 2

Primeiro, vamos declarar um array para armazenar as 4 strings. Em C, strings são arrays de caracteres, então podemos usar um array bidimensional. Por exemplo:
char strings[4][100];
Aqui, cada uma das 4 strings pode ter até 99 caracteres (o último espaço é para o terminador \0).

Passo 3

Agora, vamos ler as 4 strings que o usuário vai digitar. Vamos usar um loop for para facilitar:
for(int i = 0; i < 4; i++) {
    printf("Digite a string %d: ", i + 1);
    scanf("%s", strings[i]);
}
Esse código vai pedir para o usuário digitar cada string uma por uma.

Passo 4

Para ordenar as strings, precisamos compará-las entre si. Em C, usamos a função strcmp da biblioteca <string.h>, que compara duas strings e retorna um valor baseado na ordem alfabética.
Por exemplo, strcmp(a, b) retorna:
  • Um valor negativo se a vem antes de b.
  • Zero se são iguais.
  • Um valor positivo se a vem depois de b.

Passo 5

Vamos implementar um método de ordenação simples, como o Bubble Sort, usando strcmp para comparar as strings:
for(int i = 0; i < 3; i++) {
    for(int j = 0; j < 3 - i; j++) {
        if(strcmp(strings[j], strings[j + 1]) > 0) {
            char temp[100];
            strcpy(temp, strings[j]);
            strcpy(strings[j], strings[j + 1]);
            strcpy(strings[j + 1], temp);
        }
    }
}
Aqui, comparamos pares de strings e trocamos de posição se estiverem na ordem errada.

Resposta

Aqui está o código completo que faz tudo isso:
#include <stdio.h>
#include <string.h>

int main() {
    char strings[4][100];
    
    // Leitura das strings
    for(int i = 0; i < 4; i++) {
        printf("Digite a string %d: ", i + 1);
        scanf("%s", strings[i]);
    }
    
    // Ordenação das strings usando Bubble Sort
    for(int i = 0; i < 3; i++) {
        for(int j = 0; j < 3 - i; j++) {
            if(strcmp(strings[j], strings[j + 1]) > 0) {
                char temp[100];
                strcpy(temp, strings[j]);
                strcpy(strings[j], strings[j + 1]);
                strcpy(strings[j + 1], temp);
            }
        }
    }
    
    // Impressão das strings ordenadas
    printf("\nStrings em ordem alfabética:\n");
    for(int i = 0; i < 4; i++) {
        printf("%s\n", strings[i]);
    }
    
    return 0;
}
Esse programa vai ler 4 strings do usuário, ordená-las em ordem alfabética e depois imprimir a lista ordenada.

Exercícios relacionados