fork(1) download
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <algorithm>
  5. using namespace std;
  6.  
  7. class Name_pairs {
  8. public:
  9. void read_names();
  10. void read_ages();
  11. void print() const;
  12. void sort(); // Ordenar os nomes com as idades
  13.  
  14. private:
  15. vector<string>name;
  16. vector<double>age;
  17. };
  18. void Name_pairs::read_names() {
  19. cout << "Entre com os nomes desejados, digite 'SemNome' para finalizar a lista." << endl;
  20. string NomesVetor;
  21.  
  22. while (cin >> NomesVetor && NomesVetor != "SemNome") {
  23. for (size_t x = 0; x < name.size(); ++x) { // confere se há nomes duplicados
  24. if (name[x] == NomesVetor) cout << "Nome repetido." << endl;
  25. }
  26. name.push_back(NomesVetor);
  27. }
  28. }
  29.  
  30. void Name_pairs::read_ages() {
  31. for (size_t x = 0; x < name.size(); ++x) {
  32. cout << "Nome de " << name[x] << ": " << endl;
  33. double IdadesVetor;
  34. cin >> IdadesVetor;
  35. age.push_back(IdadesVetor);
  36. }
  37. }
  38.  
  39. void Name_pairs::print() const {
  40. for (size_t x = 0; x < name.size(); ++x) {
  41. cout << "Nome: " << name[x] << ", Idade: " << age[x] << endl;
  42. }
  43. }
  44.  
  45. void Name_pairs::sort() {
  46. vector<string> strCopia = name;
  47. vector<double> dbCopia = age;
  48. std::sort(begin(name), end(name));
  49. for (size_t x = 0; x < name.size(); ++x) {
  50. for (size_t y = 0; y < name.size(); ++y) {
  51. if (name[x] == strCopia[y]) age[x] = dbCopia[y];
  52. }
  53. }
  54. }
  55. int main() {
  56. Name_pairs objeto;
  57. objeto.read_names();
  58. objeto.read_ages();
  59. objeto.print();
  60. return 0;
  61. }
Success #stdin #stdout 0s 3424KB
stdin
João
José
Joaquim
SemNome
10
20
30
stdout
Entre com os nomes desejados, digite 'SemNome' para finalizar a lista.
Nome de João: 
Nome de José: 
Nome de Joaquim: 
Nome: João, Idade: 10
Nome: José, Idade: 20
Nome: Joaquim, Idade: 30