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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Duda ordenar estructuras c++ en: 31 Enero 2016, 12:12 pm
Hola buenas , voy directo al grano , llevo ya dandole vueltas a como ordenar una estructura  y nada me da errores y tal , os pongo el codigo , yo por ahora no encuentro el fallo

//OS PONGO TAMBIEN EL CARGAR Y MOSTRAR NO VAYA A SER QUE ESTE AHI EL FALLO .

//BIBLIOTECAS
#include <iostream>
using namespace std;
#include <string>
#include <fstream>

//VARIABLES CONSTANTES Y DEFINICIONES TYPEDEF
const int MAX_JUGADORES = 10;

typedef struct{

   string name;
   float puntuacion;

}tJugador;

//PROTOTIPOS
int cargarLista(tJugador players[]);
void mostrar(tJugador players[] , int num);
void ordenar(tJugador player[]);

//PROGRMA
int cargarLista(tJugador players[]){
ifstream cargar;
   bool centinela;

   int contador, numJugadores;

   contador= 0;
   numJugadores = 0;

   centinela = false;

   cargar.open("top.txt");

   if (cargar.is_open()) {

      cargar >> players[contador].name;

      if (players[contador].name == "-1")//-1 centinela

         centinela = true;

      while ((centinela == false) && (num < MAX_JUGADORES)) {

         cargar >> players[contador].puntuacion;

         contador++;
         numJugadores++;

         cargar >> players[contador].name;

         if (players[contador].name == "-1")

            centinela = true;
      }
   }
   else  cout << "Error al cargar el fichero" << endl;





   cargar.close();
return numJugadores;//PODRIAMOS DEVOLVER DIRECTAMENTE LA VARIABLE contador.
}

void mostrar(tJugador players[] , int num){


for(int contador = 0; contador < num; contador++) {
            cout << players[contador].name << "  " << players[contador].puntuacion << endl;
         }
         cout << endl;

}
void ordenar(tJugador player[]){

//-------------- Método de ordenación -----------------------------
         for (int contador = 0; contador < MAX_JUGADORES - 1; contador++) {  //SERIA MAX_JUGADORES O LE PASO LA VARIABLE NUM?
         // Desde el primer elemento hasta el penúltimo
            for (int j = MAX_JUGADORES - 1; j > contador; j--) {
            // Desde el último hasta el siguiente a contador
               if (players[cont].puntuacion < lista[cont - 1].puntuacion) {
                  int tmp;
                  tmp = players[cont].puntuacion;
                  players[cont].puntacion = players[cont - 1].puntuacion;
                  players[cont - 1].puntuacion = tmp;
               }
            }
         }
         //-----------------------------------------------------------------

}
//MAIN
int main(){
int num =0;
tJugador players[MAX_JUGADORES + 1];
   //+1 debido a que contacmos con el jugador conectado.
num=cargarLista(players);
ordenar(players)
mostrar(players, num)

return 0;
}


//FICHERO
el fichero top.txt seria :


daniel 99
alfonso 77
pedro 100
laura 5
-1

//PUEDE QUE HABER ALGUN ERROR DE SINTAXIS , DEFINICION O ALGUN CARACTER , POR QUE LO HECHO POR ENCIMA , LA COSA ES SI EL ALGORITMO ESTA BIEN PLANTEADO
2  Programación / Programación C/C++ / duda array [c++] en: 15 Enero 2016, 00:53 am
Hola buenas,si este tema no es adecuado aquí perdón soy nuevo jeje , tengo una duda con la que me estoy comiendo la cabeza y no consigo como sacarla.

Imaginaos que creamos una array de tamaño 13 donde en cada posición hay un número.Entoces digamos que va a haber 10 rondas, en la primera ronda, se muestran los 3 primeros valores de la array, en la segunda  los 4, en la quinta los 5 y así sucesivamente hasta llegar a la ronda 10 (mostrándose en la última ronda los 13 números).

La duda viene ahora, de primeras pues se me ocurre hacer a lo bruto las 10 rondas, es decir, hacer el código dela primera ronda mostrando los 3 primeros valores, hacer el código de la segunda ronda con los 4 primeros valores y así hasta la ronda 10, pero imaginaos que no son 10 rondas, si no 100, como tenga que hacer las 100 rondas a lo bruto me tiro horas picando código jeje.

Entonces ¿hay alguna forma de manera automática en la que cada vez que se pasa de ronda al mostrar el array se muestra el valor siguiente  y los anteriores claro?


Y ya por último, suponer que estamos en la ronda 7, y quiero volver a empezar desde la primera ronda, ¿cómo se podría volver al principio?



Gracias de antemano.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines