Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: pedro,, en 24 de Mayo 2016, 00:56

Título: C (LenguajeC) Funciones para cadenas, strcpy, strlen, sizeof, strcat, CU00535F
Publicado por: pedro,, en 24 de Mayo 2016, 00:56
Buenas, aquí dejo una posible solución para el ejercicio CU00535F.

Citar
EJERCICIO Nº 1
Escribe un programa que pida tres cadenas al usuario y muestre su longitud (número de letras).
Ejemplo: el usuario introduce como cadenas perro, pez y cocodrilo. El programa mostrará por pantalla. El número de letras para perro es 5. El número de letras para pez es 3. El número de letras para cocodrilo es 9.

EJERCICIO Nº 2
Escribe un programa que pida tres cadenas al usuario y muestre el resultado de concatenar las dos primeras letras de las cadenas introducidas y que indique si las dos primeras cadenas son iguales.
Ejemplo: el usuario introduce como cadenas perro, vaca y cocodrilo. El programa mostrará por pantalla: “El resultado de concatenar las dos primeras letras de las cadenas es: pevaco. La primera cadena, perro, no es igual a la segunda cadena, vaca.”
Si el usuario introdujera perro, perro, mulo, el programa debería mostrar: “El resultado de concatenar las dos primeras letras de las cadenas es pepemu. La primera cadena, perro, es igual a la segunda cadena, perro.”

Realicé los dos ejercicios en un mismo código, creo que me lié un poco y no estoy seguro de si mi propuesta de código será muy acertada..

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
    typedef char TipoCadenas[50];
    TipoCadenas cadenas[3];
    TipoCadenas nuevaCadena[3];
    int i = 0;
    int j = 0;
    int resComparacion = 0;
    for(i = 0; i < 3; i++){
        printf("Introduzca una cadena de texto: ");
        gets(cadenas[i]);
    }
    puts("");
    for(i = 0; i < 3; i++){
        printf("\tEl n\xA3mero de letras de la cadena %d, \"%s\" es %d letras.\n", i+1, cadenas[i], strlen(cadenas[i]));
    }
    for(i=0; i<3; i++){
        for(j=0; j<3; j++){
            if(j==2){
                nuevaCadena[i][j] = '\0';
            }else{
                nuevaCadena[i][j] = cadenas[i][j];
            }
        }
    }
    printf("\n\nEl resultado de concatenar las dos primeras letras de las cadenas es: \"%s\".\n",
            strcat(strcat(nuevaCadena[0], nuevaCadena[1]), nuevaCadena[2]));
    resComparacion = strcmp(cadenas[0], cadenas[1]);
    if (resComparacion ==0) {
        printf("La primera cadena, \"%s\", es igual a la segunda cadena, \"%s\".\n", cadenas[0], cadenas[1]);
    } else {
        printf("La primera cadena, \"%s\", no es igual a la segunda cadena, \"%s\".\n", cadenas[0], cadenas[1]);
    }
    return 0;
}

Saludos. ;D
Título: Re:C (LenguajeC) Funciones para cadenas, strcpy, strlen, sizeof, strcat, CU00535F
Publicado por: César Krall en 03 de Junio 2016, 22:45
Hola! Por criterios didácticos normalmente evitamos unir ejercicios. Básicamente el motivo es permitir que se puedan realizar comparaciones entre distintas formas de solucionar un mismo ejercicio. En definitiva, aunque el código esté bien y el resultado sea correcto, como uno de los objetivos de la web es el aprendizaje, tratamos de seguir lo dicho

Saludos!
Título: Re:C (LenguajeC) Funciones para cadenas, strcpy, strlen, sizeof, strcat, CU00535F
Publicado por: pedro,, en 04 de Junio 2016, 00:28
Hola César, gracias por corregir el ejercicio.

Dejo los dos ejercicios por separado, para que se vea mejor.

Ejercicio 1:
Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
    typedef char TipoCadenas[50]; //
    TipoCadenas cadenas[3];
    int i = 0;
    for(i = 0; i < 3; i++){ // Se piden tres cadenas de texto
        printf("Introduzca una cadena de texto: ");
        gets(cadenas[i]);
    }
    puts("");
    for(i = 0; i < 3; i++){ // Se muestran las tres cadenas de texto
        printf("\tEl n\xA3mero de letras de la cadena %d, \"%s\" es %d letras.\n", i+1, cadenas[i], strlen(cadenas[i]));
    }
}

Ejercicio 2:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
    typedef char TipoCadenas[50]; //
    TipoCadenas cadenas[3];
    TipoCadenas nuevaCadena[3];
    int i = 0;
    int j = 0;
    int resComparacion = 0;
    for(i = 0; i < 3; i++){ // Se piden tres cadenas de texto
        printf("Introduzca una cadena de texto: ");
        gets(cadenas[i]);
    }
    for(i=0; i<3; i++){ // Se recuperan las dos primeras letras de cada cadena de texto y se guardan en una variable.
        for(j=0; j<3; j++){
            if(j==2){
                nuevaCadena[i][j] = '\0'; // Después de recuperar las dos letras, introducimos el final de cadena.
            }else{
                nuevaCadena[i][j] = cadenas[i][j];
            }
        }
    }
    printf("\nEl resultado de concatenar las dos primeras letras de las cadenas es: \"%s\".\n\n",
            strcat(strcat(nuevaCadena[0], nuevaCadena[1]), nuevaCadena[2]));
    resComparacion = strcmp(cadenas[0], cadenas[1]);
    if (resComparacion ==0) {
        printf("La primera cadena, \"%s\", es igual a la segunda cadena, \"%s\".\n", cadenas[0], cadenas[1]);
    } else {
        printf("La primera cadena, \"%s\", no es igual a la segunda cadena, \"%s\".\n", cadenas[0], cadenas[1]);
    }
    return 0;
}

Saludos.

Título: Re:C (LenguajeC) Funciones para cadenas, strcpy, strlen, sizeof, strcat, CU00535F
Publicado por: César Krall en 11 de Junio 2016, 18:36
Gracias Pedro, genial!