Untitled

mail@pastecode.io avatar
unknown
c_cpp
17 days ago
1.6 kB
2
Indexable
Never
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

char to_lower_custom(char c) {
    if (c >= 'A' && c <= 'Z') {
        return c + ('a' - 'A');
    }
    return c;
}

int is_anum_or_letter(char c) {
    if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9')) {
        return 1;
    }
    return 0;
}

void normalizza_stringa(char* input) {
    int j = 0;
    int parola_iniziata = 0;
    
    //input "      Ciao!!###@@   Come\nstai?   \n  BeNIssimo            ";
    
    for (int i = 0; input[i] != '\0'; i++) {
        if (is_anum_or_letter(input[i]) == 1) {
            if (j > 0 && parola_iniziata == 1) {
                input[j] = ' ';
                j++;
            }
            input[j] = to_lower_custom(input[i]);
            j++;
            parola_iniziata = 0;
        } else {
            parola_iniziata = 1;
        }
    }
    input[j] = '\0';
}

int confronta_stringhe(char str1[], char str2[]) {
    char copia1[strlen(str1) + 1];
    char copia2[strlen(str2) + 1];

    strcpy(copia1, str1);
    strcpy(copia2, str2);

    normalizza_stringa(copia1);
    normalizza_stringa(copia2);
    
    if(strcmp(copia1, copia2) == 0)
    {
        return 1;
    }
    return 0;
}

int main() {
    char* stringa1 = "Ciao     Come stai\n\nBeNIssimo";
    char* stringa2 = "\nCiao\nCome stai Benissimo";

    if (confronta_stringhe(stringa1, stringa2) == 1) {
        printf("Le stringhe contengono le stesse parole\n");
    } else {
        printf("Le stringhe NON contengono le stesse parole\n");
    }

    return 0;
}
Leave a Comment