Elabore um programa em
que leia 4 strings
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 deb
. - Zero se são iguais.
- Um valor positivo se
a
vem depois deb
.
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.