![]() Directorio WAP para móvil, Tablet, iPhone o Smartphone Centro de Noticias de la Universidad de Oriente |
|
|
||
lunes julio 11, 2016 Cuando se tienen vectores paralelos y se ordena uno de ellos hay que tener la precaución de intercambiar los elementos de los vectores paralelos. Problema 1:Confeccionar un programa que permita cargar los nombres de 5 alumnos y sus notas respectivas. Luego ordenar las notas de mayor a menor. Imprimir las notas y los nombres de los alumnos. Programa:#include<iostream> using namespace std; class NotaAlumnos { private: char nombres[5][40]; int notas[5]; public: void cargar(); void ordenar(); void imprimir(); }; void NotaAlumnos::cargar() { cout <<"Carga de nombres y notas"<<""; for(int f=0;f < 5;f++) { cout <<"Ingese el nombre del alumno:"; cin.getline(nombres[f],40); cout <<"Ingrese la nota del alumno:"; cin >>notas[f]; cin.get(); } } void NotaAlumnos::ordenar() { for (int k = 0; k < 5; k++) { for (int f = 0; f < 4 - k; f++) { if (notas[f] < notas[f + 1]) { int auxnota; auxnota = notas[f]; notas[f] = notas[f + 1]; notas[f + 1] = auxnota; char auxnombre[40]; strcpy_s(auxnombre,40, nombres[f]); strcpy_s(nombres[f],40, nombres[f + 1]); strcpy_s(nombres[f + 1],40, auxnombre); } } } } void NotaAlumnos::imprimir() { cout <<"Nombres de alumnos y notas de mayor a menor"<<""; for(int f=0;f < 5;f++) { cout <<nombres[f] <<" - " <<notas[f] <<""; } cin.get(); } void main() { NotaAlumnos na; na.cargar(); na.ordenar(); na.imprimir(); } Este proyecto lo puede descargar en un zip desde este enlace : OrdenamientoVectoresParalelosDefinimos en la clase NotaAlumnos los dos vectores: class NotaAlumnos { private: char nombres[5][40]; int notas[5]; Procedemos a cargar los dos vectores: void NotaAlumnos::cargar() { cout <<"Carga de nombres y notas"<<""; for(int f=0;f < 5;f++) { cout <<"Ingese el nombre del alumno:"; cin.getline(nombres[f],40); cout <<"Ingrese la nota del alumno:"; cin >>notas[f]; cin.get(); } } Como podemos ver hemos introducido una nueva característica del cout que es la impresión de múltiples valores con un solo cout (nos ahorramos líneas de codificación): cout <<"Carga de nombres y notas"<<""; En lugar de: cout <<"Carga de nombres y notas"; cout <<""; En el proceso de ordenamiento dentro de los dos for verificamos si debemos intercambiar los elementos del vector notas: for (int k = 0; k < 5; k++) { for (int f = 0; f < 4 - k; f++) { if (notas[f] < notas[f + 1]) { En el caso que la nota de la posición 'f' sea menor a de la posición siguiente 'f+1' procedemos a intercambiar las notas: int auxnota; auxnota = notas[f]; notas[f] = notas[f + 1]; notas[f + 1] = auxnota; y simultánemamente procedemos a intercambiar los elementos del vector paralelo (con esto logramos que los dos vectores continúen siendo vectores paralelos): char auxnombre[40]; strcpy_s(auxnombre,40, nombres[f]); strcpy_s(nombres[f],40, nombres[f + 1]); strcpy_s(nombres[f + 1],40, auxnombre); Como vemos utilizamos dos auxiliares distintos porque los elementos de los dos vectores son de distinto tipo (int y cadena de caracteres) Si deseamos ordenar alfabéticamente la condición dependerá del vector nombres. Nuevamente en la impresión hemos utilizado el objeto cout con salidas múltiples: void NotaAlumnos::imprimir() { cout <<"Nombres de alumnos y notas de mayor a menor"<<""; for(int f=0;f < 5;f++) { cout <<nombres[f] <<" - " <<notas[f] <<""; } cin.get(); }
#include <iostream> using namespace std; class PaisesHabitantes { private: char paises[5][40]; int habitantes[5]; public: void cargar(); void ordenarPorNombres(); void ordenarPorHabitantes(); void imprimir(); }; void PaisesHabitantes::cargar() { cout << "Carga de paises y habitantes" << ""; for (int f = 0; f < 5; f++) { cout << "Ingese el nombre del pais:"; cin.getline(paises[f], 40); cout << "Ingrese la cantidad de habitantes:"; cin >> habitantes[f]; cin.get(); } } void PaisesHabitantes::ordenarPorNombres() { for (int k = 0; k < 5; k++) { for (int f = 0; f < 4 - k; f++) { if (strcmp(paises[f], paises[f + 1]) > 0) { char auxpais[40]; strcpy_s(auxpais, 40,paises[f]); strcpy_s(paises[f], 40,paises[f + 1]); strcpy_s(paises[f + 1], 40, auxpais); int auxhabitante; auxhabitante = habitantes[f]; habitantes[f] = habitantes[f + 1]; habitantes[f + 1] = auxhabitante; } } } } void PaisesHabitantes::ordenarPorHabitantes() { for (int k = 0; k < 5; k++) { for (int f = 0; f < 4 - k; f++) { if (habitantes[f] < habitantes[f + 1]) { char auxpais[40]; strcpy_s(auxpais,40, paises[f]); strcpy_s(paises[f],40, paises[f + 1]); strcpy_s(paises[f + 1],40, auxpais); int auxhabitante; auxhabitante = habitantes[f]; habitantes[f] = habitantes[f + 1]; habitantes[f + 1] = auxhabitante; } } } } void PaisesHabitantes::imprimir() { for (int f = 0; f < 5; f++) { cout << paises[f] << " - " << habitantes[f] << ""; } } void main() { PaisesHabitantes ph; ph.cargar(); ph.ordenarPorNombres(); cout << "Ordenado por nombres" << ""; ph.imprimir(); ph.ordenarPorHabitantes(); cout << "Ordenado por cantidad de habitantes" << ""; ph.imprimir(); cin.get(); } |
||
— @bolUDOoficial
Comenta o lee lo que otros opinan |
||
COMPÁRTELO:Indica que te gusta y comparte |
||
![]() ![]() ![]() ![]() ![]() |
||
También te puede interesar: NOCIONES BÁSICAS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS. |
||
« Vectores (ordenamiento) | Estructura de datos tipo matriz » |
||
![]() |
||
Buscador:
|
||
Síguenos en las redes sociales![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Mis cuentas socialesOtras | LinktreeMóvil: (0426 683 6955 - 0412 8226575) - E-mail: [email protected] - [email protected] - WhatsApp: +58 (0426) 683.69.55 / +58 (0412) 822.65.75 ![]() |
||
|
||
|