Faça um programa que contenha um menu com as seguintes opçães:
Comparar a string S1 com uma nova string S2 fornecida pelo usuário e imprimir o resultado da comparação;
Comparar a string S1 com uma nova string S2 fornecida pelo usuário e imprimir o resultado da comparação;
Passo 1
A questão pede um programa em C que exiba um menu com a opção de comparar uma string S1 pré-lida com uma nova string S2 fornecida pelo usuário e imprimir se são iguais, ou se S1 é lexicograficamente menor ou maior que S2. Vamos usar manipulação de strings (fgets, strcmp) e estruturas de controle (do-while, switch).
Passo 2
Declaramos dois vetores de char com tamanho suficiente para S1 e S2 (por exemplo 100) e uma variável int para guardar a opção do menu. Incluímos <stdio.h> e <string.h>.
Passo 3
Lemos a string S1 no início do programa usando fgets(s1, 100, stdin) e removemos o caractere de nova linha final com s1[strcspn(s1,"\n")] = ‘\0’. Isso evita que o ‘\n’ interfira na comparação.
Passo 4
Construímos um loop do-while que exibe o menu repetidamente até o usuário escolher a opção de sair (por exemplo, 0). Dentro do loop, imprimimos as opções e usamos scanf("%d%*c", &opcao) para ler a escolha, consumindo o ‘\n’.
Passo 5
No switch(opcao), tratamos o caso 1: pedimos a string S2, novamente com fgets(s2,100,stdin) e removemos o ‘\n’. Em seguida, usamos strcmp(s1, s2) para comparar.
Passo 6
Interpretamos o valor retornado por strcmp: se for 0, imprimimos “As strings sao iguais”; se for menor que 0, “S1 e menor que S2”; se for maior que 0, “S1 e maior que S2”.
Passo 7
No case 0, apenas imprimimos uma mensagem de encerramento e saímos do loop. No default, avisamos sobre opção inválida.
Passo 8
Após o loop, retornamos 0 para indicar que o programa terminou normalmente.
Resposta
#include <stdio.h>
#include <string.h>
#include <string.h>
int main() {
char s1[100], s2[100];
int opcao;
char s1[100], s2[100];
int opcao;
// Leitura de S1
printf("Digite a string S1: ");
fgets(s1, sizeof(s1), stdin);
s1[strcspn(s1, "\n")] = '\0';
do {
// Exibição do menu
printf("\nMenu:\n");
printf("1 - Comparar S1 com uma nova string S2\n");
printf("0 - Sair\n");
printf("Escolha uma opcao: ");
scanf("%d%*c", &opcao);
switch (opcao) {
case 1:
// Leitura de S2
printf("Digite a string S2: ");
fgets(s2, sizeof(s2), stdin);
s2[strcspn(s2, "\n")] = '\0';
// Comparação
if (strcmp(s1, s2) == 0) {
printf("As strings sao iguais\n");
} else if (strcmp(s1, s2) < 0) {
printf("S1 e menor que S2\n");
} else {
printf("S1 e maior que S2\n");
}
break;
case 0:
printf("Encerrando o programa...\n");
break;
default:
printf("Opcao invalida. Tente novamente.\n");
}
} while (opcao != 0);
return 0;
}