PI-ITBA / 2024_01

8 stars 0 forks source link

ej parcial #354

Closed FrancoBrandaa closed 3 months ago

FrancoBrandaa commented 3 months ago

Buenas , me gustaria saber si estan bien estos dos ejercicios.

/*Escribir una función elimina que recibe dos strings y elimina del primero todos los caracteres
que aparecen en el segundo string.*/
/*
char s[] = "Un string. Con diversas letras y simbolos!!";
elimina(s, "aeiou"); // s es ahora "Un strng. Cn dvrss ltrs y smbls!!"
elimina(s, " !."); // s es ahora "UnstrngCndvrssltrsysmbls"
elimina(s, "aeiou"); // s ahora no cambia
*/

#define MAX 256

void elimina(char * s1, char * s2){
    char appearances[MAX] = {0}; 
    while( *s2 != 0 ){
        apearances[*s2] = 1;
        s2++;
    }
    int dim = 0;
    for (int i = 0 ; s1[i] != 0 ; i++){
        if(!(apearances[s1[i]])){
            s1[dim++]= s[i];
        }
    }
    s1[dim] = 0;
}

/*
Escribir una función eliminaN que, dados un string, una letra y un entero n elimina del string la
aparición de esa letra (sin importar si es minúscula o mayúscula) y los n caracteres siguientes a la misma.
Si el caracter recibido no es una letra o si el n no es positivo, no debe modificar el string.
*/

void eleminaN(char * string , char c , int n){
    if(!isalpha(c) ||  n < 0){
        return;
    }
    int dim = 0;
    int flag = 0
    for (int i = 0 ; string[i] ; i++){
        if(tolower(string[i]) == tolower(c)){
            flag = n;
        }else if(flag){
            flag--;
        }else{
            string[dim++] = string[i];
        }
    }
    string[dim] = 0;
}
ImNotGone commented 3 months ago

estan ambos bien

ImNotGone commented 3 months ago

en el 2do, podrias hacer tolower para c una unica vez.