fbpx

Problema 4 de la lección cadenas

  • Problema 4 de la lección cadenas

    Posted by Edisson Camilo Justinico Castro on 21 junio, 2023 en 9:42 pm

    buena noche…estoy en el problema numero 4 de la lección de “cadenas.

    dice hacer un programa para pedir el nombre de 5 alumnos y su apellido y al final concatenar los dos…hice un for para guardar los 5 nombres y 5 apellidos en las variables tipo char nombre y apellido.

    uso primero strcpy para pasar la cadena nombre a la cadena final de nombreApellido y luego uso strcat para concatenar los dos…

    a la hora de mostrar en pantalla la ultima cadena completa nombre y apellido… solo me muestra el quinto nombre y apellido ingresado…como hacer para mostrar todos los nombres.

    gracias…anexo código

    Edisson Camilo Justinico Castro respondido 9 meses, 3 semanas 2 Miembros · 2 Respuestas
  • 2 Respuestas
  • Angel Sánchez

    organizador
    22 junio, 2023 en 11:28 am

    El problema está en cómo estás guardando los nombres y apellidos en las variables nombre y apellido. En cada iteración del bucle for, estás sobrescribiendo el valor anterior con el nuevo nombre o apellido ingresado. Por eso, al mostrar la cadena nombreApellido, solo ves el último nombre y apellido ingresado.

    Para solucionarlo, puedes usar un array de cadenas para almacenar los nombres y apellidos de los alumnos. Aquí tienes una versión corregida de tu código:

    #include <iostream>

    #include <string.h>

    using namespace std;

    int main() {

    const int cantAlumnos = 5;

    char nombre[cantAlumnos][40];

    char apellido[cantAlumnos][40];

    char nombreApellido[cantAlumnos][80];

    cout << endl;

    for (int i = 0; i < cantAlumnos; i++) {

    cout << "Ingrese el nombre del alumno " << i + 1 << ": ";

    cin.getline(nombre[i], 40, '\n');

    }

    cout << endl;

    for (int i = 0; i < cantAlumnos; i++) {

    cout << "Ingrese el apellido del alumno " << i + 1 << ": ";

    cin.getline(apellido[i], 40, '\n');

    }

    for (int i = 0; i < cantAlumnos; i++) {

    strcpy(nombreApellido[i], nombre[i]);

    strcat(nombreApellido[i], " ");

    strcat(nombreApellido[i], apellido[i]);

    cout << endl << "El nombre completo del alumno " << i + 1 << " es: " << nombreApellido[i] << endl;

    }

    cout << endl;

    return 0;

    }

    En este código, hemos creado arrays bidimensionales nombre y apellido para almacenar los nombres y apellidos de los alumnos respectivamente. También hemos creado un array nombreApellido para guardar el nombre completo de cada alumno.

    En cada iteración del bucle, los nombres y apellidos se guardan en las posiciones correspondientes de los arrays nombre y apellido. Luego, se concatenan usando strcpy, strcat y un espacio en blanco, y se almacenan en nombreApellido[i].

    Finalmente, se muestra en pantalla el nombre completo de cada alumno dentro del bucle for.

  • Edisson Camilo Justinico Castro

    Miembro
    10 julio, 2023 en 9:51 am

    Instructor muchas gracias por su respuesta…

    Excelente

Inicia sesión para responder.

Start of Discussion
0 de 0 respuestas Junio 2018
Ahora