elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13
21  Programación / Programación C/C++ / [Estructuras] ¿Por qué me muestra basura? en: 22 Mayo 2016, 22:57 pm
Verán, el programa que tengo que hacer es el siguiente.
Leer N cantidad de estudiantes, y dentro de otra estructura sus notas (parte teórica y parte práctica), como un máximo de 5 calificaciones para cada alumno. Es decir, si digo que son 3 notas prácticas serán 3 notas prácticas para todos los alumnos, lo mismo para la parte teórica.

En fin, todo chévere, pero cuando intento mostrar las calificaciones que ingresé previamente, me muestra valores basura.

¿Alguien podría echarme una mano? El programa lo estoy haciendo en Code::Blocks.
Acá les dejo el código fuente que llevo hasta ahora:

Código
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. using namespace std;
  5.  
  6. //Variables globales para la cantidad de prácticos y parciales.
  7. int nPracticos, nParciales;
  8.  
  9. struct Notas {
  10.    int practicos[];
  11.    int parciales[];
  12.    float promedio;
  13. };
  14. typedef struct Notas Notas;
  15.  
  16. struct Estudiante {
  17.    char nombre[25];
  18.    char apellido[35];
  19.    char cedula[10];
  20.    char sexo;
  21.    int edad;
  22.    Notas notas;
  23. };
  24. typedef struct Estudiante Estudiante;
  25.  
  26. int leerEstudiantes();
  27. int leerEvaluaciones(char tipo[]); //Para leer la cantidad de practicos y parciales.
  28.  
  29. void llenarEstudiante(Estudiante& estudiante, int id);
  30. void mostrarEstudiante(const Estudiante& estudiante, int id);
  31.  
  32. int main() {
  33.    int nEstudiantes;
  34.    nEstudiantes = leerEstudiantes();
  35.    nPracticos   = leerEvaluaciones((char*)"Practicos");
  36.    nParciales   = leerEvaluaciones((char*)"Parciales");
  37.  
  38.    system("cls");
  39.  
  40.    Estudiante estudiante[nEstudiantes];
  41.  
  42.    //Llenando cada uno de los estudiantes.
  43.    for(int est = 0; est < nEstudiantes; est++) {
  44.        llenarEstudiante(estudiante[est], est);
  45.    }
  46.  
  47.    system("cls");
  48.  
  49.    //Mostrar datos de los estudiantes.
  50.    for(int est = 0; est < nEstudiantes; est++) {
  51.        mostrarEstudiante(estudiante[est], est);
  52.    }
  53.  
  54.    return 0;
  55. }
  56.  
  57. int leerEstudiantes() {
  58.    int nEstudiantes;
  59.  
  60.    do {
  61.        cout << "Introduzca la cantidad de estudiantes: ";
  62.        cin >> nEstudiantes;
  63.  
  64.        if(nEstudiantes <= 0) {
  65.            cerr << "Cantidad de estudiantes invalida." << endl;
  66.        }
  67.    }while(nEstudiantes <= 0);
  68.  
  69.    return nEstudiantes;
  70. }
  71.  
  72. int leerEvaluaciones(char tipo[]) {
  73.    int cantidad;
  74.  
  75.    do{
  76.        cout << "Ingrese la cantidad de " << tipo << ": ";
  77.        cin >> cantidad;
  78.  
  79.        if(cantidad <= 0 || cantidad > 5) {
  80.            cerr << "Cantidad incorrecta." << endl;
  81.        }
  82.    }while(cantidad <= 0 || cantidad > 5);
  83.  
  84.    return cantidad;
  85. }
  86.  
  87. void llenarEstudiante(Estudiante& estudiante, int id) {
  88.    //Variables para calcular el promedio.
  89.    int pPracticos = 0, pParciales = 0;
  90.  
  91.    //Lectura de datos generales.
  92.    cout << "Ingrese nombre de estudiante [" << (id + 1) << "]: ";
  93.    cin >> estudiante.nombre;
  94.    cout << "Ingrese apellido de estudiante [" << (id + 1) << "]: ";
  95.    cin >> estudiante.apellido;
  96.    cout << "Ingrese cedula de estudiane [" << (id + 1) << "]: ";
  97.    cin >> estudiante.cedula;
  98.    cout << "Ingrese edad de estudiante [" << (id + 1) << "]: ";
  99.    cin >> estudiante.edad;
  100.    cout << "Ingrese sexo de estudiante [" << (id + 1) << "] (M/F): ";
  101.    cin >> estudiante.sexo;
  102.  
  103.    //Lectura de notas prácticas.
  104.    for(int pr = 0; pr < nPracticos; pr++) {
  105.        do {
  106.            cout << "Ingrese nota del practico [" << (pr + 1) << "]: ";
  107.            cin >> estudiante.notas.practicos[pr];
  108.  
  109.            if(estudiante.notas.practicos[pr] < 0 || estudiante.notas.practicos[pr] > 10) {
  110.                cerr << "Nota incorrecta." << endl;
  111.            }
  112.        }while(estudiante.notas.practicos[pr] < 0 || estudiante.notas.practicos[pr] > 10);
  113.    }
  114.  
  115.    //Lectura de notas parciales.
  116.    for(int pa = 0; pa < nParciales; pa++) {
  117.        do {
  118.            cout << "Ingrese nota del parcial [" << (pa + 1) << "]: ";
  119.            cin >> estudiante.notas.parciales[pa];
  120.            if(estudiante.notas.parciales[pa] < 0 || estudiante.notas.parciales[pa] > 10) {
  121.                cerr << "Nota incorrecta." << endl;
  122.            }
  123.        }while(estudiante.notas.parciales[pa] < 0 || estudiante.notas.parciales[pa] > 10);
  124.    }
  125.  
  126.    //Calculando el promedio del estudiante:
  127.    //Sumatoria de Prácticos
  128.    for(int pr = 0; pr < nPracticos; pr++) {
  129.        pPracticos += estudiante.notas.practicos[pr];
  130.    }
  131.    //Sumatoria de Parciales
  132.    for(int pa = 0; pa < nParciales; pa++) {
  133.        pParciales += estudiante.notas.parciales[pa];
  134.    }
  135.    //Cálculo del promedio.
  136.    estudiante.notas.promedio = pPracticos/nPracticos*0.20 + pParciales/nParciales*0.50;
  137. }
  138.  
  139. void mostrarEstudiante(const Estudiante& estudiante, int id) {
  140.    cout << "Nombre de estudiante [" << (id + 1) << "]: " << estudiante.nombre << endl;
  141.    cout << "Apellido de estudiante [" << (id + 1) << "]: " << estudiante.apellido << endl;
  142.    cout << "Cedula de estudiante [" << (id + 1) << "]: " << estudiante.cedula << endl;
  143.    cout << "Sexo de estudiante [" << (id + 1) << "]: " << estudiante.sexo << endl;
  144.    cout << "Edad de estudiante [" << (id + 1) << "]: " << estudiante.edad << endl;
  145.  
  146.    for(int j = 0; j < nPracticos; j++) {
  147.        cout << "Nota del practico [" << (j + 1) << "] del estudiante [" << (id + 1) << "]: " << estudiante.notas.practicos[j] << endl;
  148.    }
  149.  
  150.    for(int j = 0; j < nParciales; j++) {
  151.        cout << "Nota del parcial [" << (j + 1) << "] del estudiante [" << (id + 1) << "]: " << estudiante.notas.parciales[j] << endl;
  152.    }
  153.  
  154.    cout << "Promedio del estudiante [" << (id + 1) << "]: " << estudiante.notas.promedio << endl;
  155.    cout << "-------------------" << endl;
  156. }
  157.  
22  Programación / Programación C/C++ / [Sockets] Conexiones múltiples de clientes a servidor. en: 22 Enero 2016, 23:48 pm
Verán, estoy aprendiendo sobre sockets y hasta ahora todo bien. El problema es que sólo puedo manejar una conexión a la vez, ¿cómo podría manejar conexiones múltiples? Leí un tema que se logra a través de un Thread, pero estoy un poco confundido.

Estos son los códigos que llevo hasta ahora:

Servidor:
Código
  1. #ifndef WIN32_LEAN_AND_MEAN
  2. #define WIN32_LEAN_AND_MEAN
  3. #endif
  4.  
  5. #include <windows.h>
  6. #include <WinSock2.h>
  7. #include <WS2tcpip.h>
  8. #include <IPHlpApi.h>
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11.  
  12. #pragma comment(lib, "Ws2_32.lib")
  13.  
  14. #define DEFAULT_PORT "27016"
  15. #define DEFAULT_BUFLEN 516
  16.  
  17. int main() {
  18. WSADATA wsaData;
  19. int iResult;
  20.  
  21. char recvbuf[DEFAULT_BUFLEN];
  22. int recvbuflen = DEFAULT_BUFLEN;
  23. int recvBytes;
  24.  
  25. iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
  26. if (iResult != 0) {
  27. printf("WSAStartup failed with error: %d\n", iResult);
  28. return 1;
  29. }
  30.  
  31. struct addrinfo *result = NULL,
  32. hints;
  33.  
  34. ZeroMemory(&hints, sizeof(hints));
  35. hints.ai_family = AF_INET;
  36. hints.ai_socktype = SOCK_STREAM;
  37. hints.ai_protocol = IPPROTO_TCP;
  38. hints.ai_flags = AI_PASSIVE;
  39.  
  40. iResult = getaddrinfo(NULL, DEFAULT_PORT, &hints, &result);
  41. if (iResult != 0) {
  42. printf("getaddrinfo error: %d\n", iResult);
  43. WSACleanup();
  44. return 1;
  45. }
  46.  
  47. SOCKET ListenSocket = INVALID_SOCKET;
  48.  
  49. ListenSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol);
  50.  
  51. if (ListenSocket == INVALID_SOCKET) {
  52. printf("Error at socket(): %ld\n", WSAGetLastError());
  53. freeaddrinfo(result);
  54. WSACleanup();
  55. return 1;
  56. }
  57.  
  58. iResult = bind(ListenSocket, result->ai_addr, result->ai_addrlen);
  59. if (iResult == SOCKET_ERROR) {
  60. printf("Error at bind: %d\n", iResult);
  61. freeaddrinfo(result);
  62. closesocket(ListenSocket);
  63. WSACleanup();
  64. return 1;
  65. }
  66.  
  67. freeaddrinfo(result);
  68.  
  69. if (listen(ListenSocket, SOMAXCONN) == SOCKET_ERROR) {
  70. printf("Listen failed with: %ld\n", WSAGetLastError());
  71. closesocket(ListenSocket);
  72. WSACleanup();
  73. return 1;
  74. }
  75.  
  76. SOCKET ClientSocket = INVALID_SOCKET;
  77.  
  78. ClientSocket = accept(ListenSocket, NULL, NULL);
  79. if (ClientSocket == INVALID_SOCKET) {
  80. printf("accept failed with error: %d\n", WSAGetLastError());
  81. closesocket(ListenSocket);
  82. WSACleanup();
  83. return 1;
  84. }
  85.  
  86. printf("A CONNECTION HAS BEEN FOUND!!\n");
  87.  
  88. iResult = shutdown(ClientSocket, SD_SEND);
  89. if (iResult == SOCKET_ERROR) {
  90. printf("shutdown failed with error: %d\n", iResult);
  91. closesocket(ClientSocket);
  92. WSACleanup();
  93. return 1;
  94. }
  95.  
  96. do {
  97. recvBytes = recv(ClientSocket, recvbuf, recvbuflen, 0);
  98. if (recvBytes > 0) {
  99. printf("Client >> ");
  100. for (int i = 0; i < recvBytes; ++i) {
  101. printf("%c", recvbuf[i]);
  102. }
  103. //printf("Bytes received: %d\n\n", recvBytes);
  104. }
  105. else if (recvBytes == 0) {
  106. printf("Connection closing...\n");
  107. }
  108. else {
  109. printf("recv failed: %d\n", WSAGetLastError());
  110. closesocket(ClientSocket);
  111. WSACleanup();
  112. return 1;
  113. }
  114. } while (recvBytes > 0);
  115.  
  116. closesocket(ClientSocket);
  117. WSACleanup();
  118.  
  119. system("pause>nul");
  120.  
  121. return 0;
  122. }
  123.  

Cliente:
Código
  1. #ifndef WIN32_LEAN_AND_MEAN
  2. #define WIN32_LEAN_AND_MEAN
  3. #endif
  4.  
  5. #include <windows.h>
  6. #include <WinSock2.h>
  7. #include <WS2tcpip.h>
  8. #include <IPHlpApi.h>
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11.  
  12. #pragma comment(lib, "Ws2_32.lib")
  13.  
  14. #define DEFAULT_PORT "27016"
  15. #define DEFAULT_BUFLEN 516
  16.  
  17. int main() {
  18. WSADATA wsaData;
  19. int iResult;
  20.  
  21. char sendbuf[DEFAULT_BUFLEN];
  22. int iSendResult;
  23.  
  24. iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
  25. if (iResult != 0) {
  26. printf("WSAStartup failed with error: %d\n", iResult);
  27. return 1;
  28. }
  29.  
  30. struct addrinfo *result = NULL,
  31. *ptr = NULL,
  32. hints;
  33.  
  34. ZeroMemory(&hints, sizeof(hints));
  35. hints.ai_family = AF_UNSPEC;
  36. hints.ai_socktype = SOCK_STREAM;
  37. hints.ai_protocol = IPPROTO_TCP;
  38.  
  39. iResult = getaddrinfo("127.0.0.1", DEFAULT_PORT, &hints, &result);
  40. if (iResult != 0) {
  41. printf("getaddrinfo failed with error: %d/n", iResult);
  42. WSACleanup();
  43. return 1;
  44. }
  45.  
  46. SOCKET ConnectSocket = INVALID_SOCKET;
  47.  
  48. ptr = result;
  49.  
  50. ConnectSocket = socket(ptr->ai_family, ptr->ai_socktype, ptr->ai_protocol);
  51.  
  52. if (ConnectSocket == INVALID_SOCKET) {
  53. printf("Error at socket(): %ld\n", WSAGetLastError());
  54. freeaddrinfo(result);
  55. WSACleanup();
  56. return 1;
  57. }
  58.  
  59. iResult = connect(ConnectSocket, ptr->ai_addr, ptr->ai_addrlen);
  60. if (iResult == SOCKET_ERROR) {
  61. closesocket(ConnectSocket);
  62. ConnectSocket = INVALID_SOCKET;
  63. }
  64.  
  65. freeaddrinfo(result);
  66.  
  67. if (ConnectSocket == INVALID_SOCKET) {
  68. printf("Unable to connect to server!\n");
  69. WSACleanup();
  70. return 1;
  71. }
  72.  
  73. do {
  74. printf("Send a message to the server: ");
  75. fgets(sendbuf, DEFAULT_BUFLEN, stdin);
  76.  
  77. iSendResult = send(ConnectSocket, sendbuf, (int)strlen(sendbuf), 0);
  78. if (iSendResult == SOCKET_ERROR) {
  79. printf("send failed: %d\n", WSAGetLastError());
  80. closesocket(ConnectSocket);
  81. WSACleanup();
  82. return 1;
  83. }
  84. //printf("Bytes sent: %d\n\n", iSendResult);
  85. } while (iSendResult > 0);
  86.  
  87. iResult = shutdown(ConnectSocket, SD_SEND);
  88. if (iResult == SOCKET_ERROR) {
  89. printf("shutdown failed: %d\n", iResult);
  90. closesocket(ConnectSocket);
  91. WSACleanup();
  92. return 1;
  93. }
  94.  
  95. closesocket(ConnectSocket);
  96. WSACleanup();
  97.  
  98. system("pause>nul");
  99.  
  100. return 0;
  101. }
  102.  

Estoy trabajando en Visual Studio Community 2015.
23  Programación / Programación C/C++ / Re: Ayuda Ejercicios C++ en: 11 Diciembre 2015, 20:28 pm
Hay muchos ejercicios en la web, búscale. :) Aunque acá te dejaré 2 sitios en donde puedes ir leyendo, están resueltos en caso de que te tranques, pero el punto no es ver la respuesta, sino intentar hacerlo por ti mismo.

http://foro.elhacker.net/ejercicios/ejercicios_resueltos_c_programacion_estructurada-t201980.0.html

http://www.fisicaeingenieria.es/resources/Problemas+resueltos+de+C$2B$2B.pdf
24  Programación / Programación C/C++ / Re: Clases y .h en C++ en: 11 Diciembre 2015, 20:11 pm
Simplemente incluyes la cabecera donde se encuentra la clase en la que quieres heredar. En C++ simplemente se necesita avisar que tal cosa existe, ya sea una clase, una función, etc,... y que está definida en algún lugar, así que si trabajarás con ella en 'x' file, tienes que indicarle que existe, es decir, el prototipo.

Acá te dejaré un ejemplo que hice rápido y sencillo:

//main.cpp
Código
  1. #include "ejemplo2.h"
  2.  
  3. using namespace std;
  4.  
  5. int main() {
  6.    Persona Pedro(21, (char*)"Pedro");
  7.  
  8.    Pedro.mostrarDatos();
  9.    Pedro.hablar();
  10.    Pedro.caminar();
  11.  
  12.    cout << endl;
  13.  
  14.    Alien Marciano(576, (char*)"AFKG756");
  15.  
  16.    Marciano.mostrarDatos();
  17.    Marciano.hablar();
  18.    Marciano.caminar();
  19.  
  20.    cin.get();
  21.    return 0;
  22. }
  23.  
  24.  

//ejemplo1.h
Código
  1. #ifndef EJEMPLO1_H_INCLUDED
  2. #define EJEMPLO1_H_INCLUDED
  3.  
  4. #include <iostream>
  5. using namespace std;
  6. class Persona {
  7. public:
  8.    Persona(int _edad, char* _nombre) : edad(_edad), nombre(_nombre) { }
  9.    void caminar();
  10.    void mostrarDatos();
  11.    void hablar();
  12. private:
  13.    int edad;
  14.    char* nombre;
  15. };
  16.  
  17. #endif // EJEMPLO1_H_INCLUDED
  18.  
  19.  

//ejemplo1.cpp
Código
  1. #include "ejemplo1.h"
  2.  
  3. void Persona::caminar() {
  4.    cout << nombre << " esta caminando..." << endl;
  5. }
  6.  
  7. void Persona::mostrarDatos() {
  8.    cout << "Nombre: " << nombre << "\nEdad: " << edad << endl;
  9. }
  10.  
  11. void Persona::hablar() {
  12.    cout << nombre << " esta hablando..." << endl;
  13. }
  14.  
  15.  

//ejemplo2.h
Código
  1. #ifndef EJEMPLO2_H_INCLUDED
  2. #define EJEMPLO2_H_INCLUDED
  3.  
  4. #include "ejemplo1.h"
  5.  
  6. class Alien : public Persona {
  7. public:
  8.    Alien(int _edad, char* nombre) : Persona(_edad, nombre) { }
  9. };
  10.  
  11. #endif // EJEMPLO2_H_INCLUDED
  12.  

Como observarás, en ejemplo2.h estoy haciendo herencia de la clase Persona y simplemente coloco la cabecera en donde está esa clase, es decir en ejemplo1.h.
Luego en el constructor de la clase Alien, llamo al constructor de la clase Persona para modificar las variables miembro. Ahora, si quieres incluir más funciones e ir trabajando directamente con esas variables miembro de la clase Persona sin tener que estar llamando funciones, simplemente las cambias de private a protected. Y así será menos tedioso, espero no haberte confundido con eso, es para que lo tengas en cuenta. :)

Sobre tu pregunta sobre cuál lenguaje es mejor, pues depende para qué lo quieras utilizar. Todo lenguaje tiene un gran potencial, pero depende de uno saber aprovecharlo. Un ejemplo sencillo sería, ¿cuál es mejor para aplicaciones de escritorio, C++ o C#? Aunque ambos sirven, C# te simplifica mucho la vida. ¿Y para un juego potente? C++ es el mejor candidato de ambos.

Saludos. :)
25  Programación / Programación C/C++ / Re: Invertir un vector en: 3 Diciembre 2015, 04:56 am
Una cosa, cuando estás dándole los valores al arreglo, te estás comiendo la posición 0, y además que estás pasándote de su tamaño con el "<=", y multiplicar por 1 no tiene ningún sentido. Lo corregí por ti, sería de esta forma:
Código
  1. for(int i = 0; i < dim; i++){
  2.        vettore[i] = i + 1;
  3. }
  4.  

Y para invertirlo, una manera fácil que puedes usar es a través de un arreglo auxiliar, recorrerás del vector original la última posición y se la asignarás a la primera posición de ese arreglo auxiliar, y así sucesivamente hasta llegar a la posición 0 del arreglo original, y la última del arreglo auxiliar. Y luego lo que haces es igualar el vector original a cada uno de los valores del vector auxiliar para que el original sea modificado.
Lo harías así:
Código
  1. void invertir(int vettore[], int tam) {
  2.    int vAux[tam]; //Arreglo auxiliar.
  3.    int aux = 0; //Contador auxiliar para desplazarnos por vAux.
  4.  
  5.    //Llenando el arreglo auxiliar con los valores invertidos.
  6.    for(int i = tam - 1; i >= 0; --i, ++aux) {
  7.        vAux[aux] = vettore[i];
  8.    }
  9.  
  10.    //Asignándole al arreglo original los valores del arreglo invertido.
  11.    for(int i = 0; i < tam; ++i) {
  12.        vettore[i] = vAux[i];
  13.    }
  14. }
  15.  

Y ya sólo muestras el arreglo invertido.
26  Programación / Programación C/C++ / Re: Necesito ayuda con mi código Los recompensaré en: 21 Noviembre 2015, 20:16 pm
Código
  1. int main(void)
  2. {
  3. int j; // <-
  4. clrscr();
  5. marco();
  6. horario(0,0);
  7. cprintf("tu costo seria %i",j); // <-
  8. return 0;
  9. }
  10.  

Estás mandando a imprimir por pantalla la variable 'j' cuando a esta no la igualas a ningún valor.
27  Programación / Programación C/C++ / Re: PROGRAMACION EN C en: 19 Noviembre 2015, 17:39 pm
Es porque te has comido de frente el Main. Le he puesto la función main al código y ha compilado sin problemas.

Acá las respuestas que encontré:
http://www.cplusplus.com/forum/general/42284/
http://forums.codeblocks.org/index.php?topic=19598.0
28  Programación / Programación C/C++ / Re: [Ayuda]Secuencias en: 19 Noviembre 2015, 16:18 pm
Ah pues entonces hay que hacer sólo un cambio pequeñito. Pensé que simplemente había que buscar parejas (independientemente si estaban consecutivas o no), pero bueno nada del otro mundo, reemplazamos esto:

Código
  1. for(int j = 0; j < tamanio - 1; ++j) {
  2.        for(int i = j + 1; i < tamanio; ++i) {
  3.            if(suma_numeros[j] == suma_numeros[i]) {
  4.                cout << "Pareja encontrada: "
  5.                << numeros[j] << " , " << numeros[i] << endl;
  6.                encontrados = true; //Al menos 1 pareja fue encontrada.
  7.            }
  8.        }
  9.    }
  10.  

Por esto:
Código
  1. for(int j = 0; j < tamanio - 1; ++j) {
  2.        if(suma_numeros[j] == suma_numeros[j + 1]) {
  3.            cout << "Pareja encontrada "
  4.            << numeros[j] << " , " << numeros[j + 1] << endl;
  5.            encontrados = true; // Al menos una pareja encontrada.
  6.        }
  7. }
  8.  

Con eso ya sólo tomará en cuenta si son consecutivos. :)
29  Programación / Programación C/C++ / Re: [Ayuda]Secuencias en: 19 Noviembre 2015, 03:23 am
Bueno entonces usas vectores.
Mira acá te lo dejo:
Código
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. const int EOS = -1;
  7.  
  8. int sumaXifres(int n);
  9.  
  10. int main() {
  11.    vector<int> numeros, suma_numeros;
  12.  
  13.    int numero;
  14.    cin >> numero;
  15.  
  16.    bool encontrados = false;
  17.  
  18.    while(numero != EOS) {
  19.        numeros.push_back(numero);
  20.        suma_numeros.push_back(sumaXifres(numero));
  21.        cin >> numero;
  22.    }
  23.  
  24.    int tamanio = numeros.size();
  25.  
  26.    for(int j = 0; j < tamanio - 1; ++j) {
  27.        for(int i = j + 1; i < tamanio; ++i) {
  28.            if(suma_numeros[j] == suma_numeros[i]) {
  29.                cout << "Pareja encontrada: "
  30.                << numeros[j] << " , " << numeros[i] << endl;
  31.                encontrados = true; //Al menos 1 pareja fue encontrada.
  32.            }
  33.        }
  34.    }
  35.  
  36.    if(!encontrados)
  37.        cout << "No se han encontrado parejas..." << endl;
  38.  
  39.  
  40.    return 0;
  41. }
  42.  
  43. int sumaXifres(int n) {
  44.    int suma=0;
  45.  
  46.    while (n!=0) {
  47.          suma += n % 10;
  48.          n = n / 10;
  49.    }
  50.  
  51.    return suma;
  52. }
  53.  

EDIT:
Ahora, por ejemplo, si introduces 2 números iguales:
45
65
76
65
-1

Te arrojará que 65 y 65 son pareja. Para evitar eso puedes agregar al if una condición que diga que si esos números son iguales, entonces no entre al if, y la condición quedaría así:
Código
  1. if(suma_numeros[j] == suma_numeros[i] && numeros[j] != numeros[i]) {
  2.       cout << "Pareja encontrada: "
  3.       << numeros[j] << " , " << numeros[i] << endl;
  4.       encontrados = true; //Al menos 1 pareja fue encontrada.
  5. }
  6.  

Pero si no quieres eso entonces lo dejas como estaba al principio.
30  Programación / Programación C/C++ / Re: [Ayuda]Secuencias en: 18 Noviembre 2015, 22:18 pm
Pero entonces necesitan pedir numero1 también, y sólo piden numero. Lo correcto sería que dentro del while ocupes 2 "cin", uno para numero, y otro para numero1, y luego comparar. Y si alguno de los 2 es -1 entonces finalizas.

Pensé que se referían a que se iba a introducir una cantidad ilimitada de números, y luego comparar cada uno de ellos a ver si alguno coincidía. Pero si sólo irán de 2 en 2, entonces pide 2 números en el while y luego comparas.
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines