fbpx

Responder a: Problema 4 de la lección cadenas

  • 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.