Crie um programa que compara duas strings (nao use a funcão strcmp).

Passo 1

Beleza, vamos lá! A gente tem que criar um programa que compara duas strings, mas sem usar a função strcmp. Isso tá dentro da matéria de programação, especificamente trabalhando com manipulação de strings. Para resolver isso, vamos precisar entender como as strings são armazenadas e como podemos comparar caractere por caractere.

Passo 2

Primeiro, precisamos lembrar que uma string é basicamente uma sequência de caracteres terminada por um caractere especial, geralmente o \0. Para comparar duas strings sem strcmp, vamos verificar se elas têm o mesmo comprimento e se cada caractere correspondente é igual.

Passo 3

Vamos começar escrevendo uma função que recebe duas strings como entrada. Essa função vai percorrer cada caractere das duas strings e comparar um por um. Se encontrar algum caractere diferente ou se uma das strings terminar antes da outra, a gente já sabe que as strings são diferentes.

Passo 4

Dentro da função, vamos usar um laço while que continua enquanto os caracteres das duas strings forem iguais e nenhum dos dois alcançou o final (\0). Se o laço terminar e ambos os caracteres finais forem \0, significa que as strings são iguais. Caso contrário, são diferentes.

Passo 5

Agora, vamos implementar isso em código. Vou usar a linguagem C como exemplo:
#include <stdio.h>

int compararStrings(char str1[], char str2[]) {
    int i = 0;
    while (str1[i] != '\0' && str2[i] != '\0') {
        if (str1[i] != str2[i]) {
            return 0; // Strings diferentes
        }
        i++;
    }
    if (str1[i] == '\0' && str2[i] == '\0') {
        return 1; // Strings iguais
    } else {
        return 0; // Strings de tamanhos diferentes
    }
}

int main() {
    char string1[100];
    char string2[100];
    
    printf("Digite a primeira string: ");
    fgets(string1, sizeof(string1), stdin);
    
    printf("Digite a segunda string: ");
    fgets(string2, sizeof(string2), stdin);
    
    // Remover o caractere de nova linha '\n' que o fgets adiciona
    string1[strcspn(string1, "\n")] = 0;
    string2[strcspn(string2, "\n")] = 0;
    
    if (compararStrings(string1, string2)) {
        printf("As strings são iguais.\n");
    } else {
        printf("As strings são diferentes.\n");
    }
    
    return 0;
}

Resposta

Pronto! Esse programa lê duas strings do usuário e as compara caractere por caractere sem usar a função strcmp. Se as strings forem iguais, ele informa que são iguais; caso contrário, diz que são diferentes.

Exercícios relacionados