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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Calcular máximo de matriz, error
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Calcular máximo de matriz, error  (Leído 5,060 veces)
Puntoinfinito


Desconectado Desconectado

Mensajes: 919


#! /win/archlinux


Ver Perfil WWW
Calcular máximo de matriz, error
« en: 17 Julio 2013, 18:30 pm »

Hola!!  :D

Necesito una función que lea unos numeros de un archivo de texto que luego los cojera y los ordenara para añadirlos por orden a un miembro de una clase (dat.topScore)

Código
  1. void readScore() {
  2.  
  3. char linea[128]; // para la lectura
  4. int lineas = 0; // para ver las lineas del archivo
  5. int temp[128]; /// original
  6. int _temp[128]; // temporal para ordenar
  7. for (int i = 0; i < 128; i++) {
  8. _temp[i] = 0; // añado inicializador
  9. }
  10.  
  11.       /*** obtengo las lineas del archivo que he definido anteriormente ***/        
  12.  
  13. while (!dataFile_o.eof()) {
  14. dataFile_o.getline(linea,sizeof(linea));
  15. temp[lineas] = atoi(linea);
  16. lineas++;
  17. }
  18.  
  19.       /***** Calculo el maximo de la matriz y la guardo en otra (_temp) y
  20.                 para que no se repita el numero le pongo de valor 0 a la matriz
  21.                 original y así evadir el repetimiento ****/
  22.  
  23. for (int i = 0; i < lineas; i++) {
  24. _temp[i] = *max_element(temp,temp+lineas);
  25. for (int z = 0; z < lineas; z++) {
  26. if (_temp[i] == temp[z]) {
  27. temp[z] = 0;
  28. }
  29. }
  30.        cout << _temp[i]; // AQUÍ LO IMPRIME ORDENADO
  31. }
  32.  
  33.        /*** Finalmente guardo la matriz ordenada en un miembro de una clase ***/
  34.  
  35. for (int i = 0; i < lineas; i++) {
  36. _temp[i] = dat.topScore[i]; // NO ENTIENDO PORQUE NO LO GUARDA BIEN (saca todo de ceros)
  37. cout << _temp[i];
  38. }
  39.  
  40. }

El error ya lo he comentado más o menos en el código, cuando hago la impresión durante el primer ciclo for de ordenar sale todo bien luego cuando hago la impresión de nuevo me sale todo de "00000"...

Nose si me explico xD Si hay dudas preguntad porfavor!! Saludos y gracias por leer  :-*


« Última modificación: 17 Julio 2013, 18:31 pm por Puntoinfinito » En línea

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.
eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Calcular máximo de matriz, error
« Respuesta #1 en: 17 Julio 2013, 18:38 pm »

Así a bote pronto no veo dónde has guardado los datos en dat...

No es que te esté guardando mal los datos... es que no los estás guardando.


En línea

Puntoinfinito


Desconectado Desconectado

Mensajes: 919


#! /win/archlinux


Ver Perfil WWW
Re: Calcular máximo de matriz, error
« Respuesta #2 en: 17 Julio 2013, 18:46 pm »

Esque no esta el código completo, pero de donde lee los datos es de aquí:

Código:
ifstream dataFile_o("data/score.dat",ios::app);

Y respondiendo a tu pregunta, los datos los guardo aquí:

Código:
_temp[i] = *max_element(temp,temp+lineas);

Si te fijas cuando hago:

Código:
cout << _temp[i]; // AQUÍ LO IMPRIME ORDENADO

lo imprime todo bien, sin problemas, ordenado... :/
En línea

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.
eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Calcular máximo de matriz, error
« Respuesta #3 en: 17 Julio 2013, 18:58 pm »

Código
  1. _temp[i] = dat.topScore[i];

ahí estás sacando datos de dat y guardándolos en _temp... dat no lo estableces en ninguna parte del código que has puesto.
En línea

0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Calcular máximo de matriz, error
« Respuesta #4 en: 18 Julio 2013, 00:59 am »

Código
  1. _temp[i] = dat.topScore[i];

ahí estás sacando datos de dat y guardándolos en _temp... dat no lo estableces en ninguna parte del código que has puesto.

Exacto, te cargas lo que haya en _temp, la asignación está al revés.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Calcular máximo de matriz, error
« Respuesta #5 en: 18 Julio 2013, 02:11 am »

Necesito una función que lea unos numeros de un archivo de texto que luego los cojera y los ordenara para añadirlos por orden a un miembro de una clase (dat.topScore)
El problema me parece que ya esta resuelto.

Otras dos recomendaciones son:

Si quieres que todos los elementos de un array se inicializen a cero:
Código
  1. int _temp[128]; // temporal para ordenar
  2. for (int i = 0; i < 128; i++) {
  3.   _temp[i] = 0; // añado inicializador
  4. }
Puedes hacerlo de una forma mas breve, indicando el valor del primer elemento:
Código
  1. int _temp[128] = {0}; // _temp[0] es cero, los elementos restantes se inicializan a cero

Y para controlar la lectura de datos en un bucle no se recomienda el uso de la función miembro eof:
Código
  1. while (!dataFile_o.eof()) {
  2.   dataFile_o.getline(linea,sizeof(linea));
  3.   temp[lineas] = atoi(linea);
  4.   lineas++;
  5. }
Ello porque eof resultara en el valor verdadero solo después del fallo de una operación de lectura. En su lugar puedes utilizar el resultado de getline directamente (y de paso reduces el numero de sentencias):
Código
  1. while (dataFile_o.getline(linea,sizeof(linea))){
  2.   temp[lineas] = atoi(linea);
  3.   lineas++;
  4. }

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Calcular máximo de matriz, error
« Respuesta #6 en: 18 Julio 2013, 08:47 am »

Si quieres que todos los elementos de un array se inicializen a cero:
Código
  1. int _temp[128]; // temporal para ordenar
  2. for (int i = 0; i < 128; i++) {
  3.   _temp[i] = 0; // añado inicializador
  4. }
Puedes hacerlo de una forma mas breve, indicando el valor del primer elemento:
Código
  1. int _temp[128] = {0}; // _temp[0] es cero, los elementos restantes se inicializan a cero

Además de las dos mencionadas, creo que la forma más común de inicializar la memoria es utilizar la función memset.

Código
  1. memset( _temp, 0, sizeof( _temp ) );

En línea

Puntoinfinito


Desconectado Desconectado

Mensajes: 919


#! /win/archlinux


Ver Perfil WWW
Re: Calcular máximo de matriz, error
« Respuesta #7 en: 18 Julio 2013, 11:58 am »

 :-X ... Supongo que el descuido ese será por estar ya unas cuantas horas programando... jjajaj como no me he fijadoo. Gracias!!

Y por las recomendaciones ya lo he implementado, gracias por la ayuda :)

Saludos!!
En línea

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Calcular determinante de una matriz NxN
Programación C/C++
amchacon 1 15,437 Último mensaje 13 Febrero 2013, 20:35 pm
por leosansan
Help! Calcular máximo de 3 numeros usando función
Programación C/C++
sora_ori 5 4,048 Último mensaje 18 Febrero 2013, 23:34 pm
por BatchianoISpyxolo
Calcular el máximo usando operador '?'
Programación C/C++
85 5 5,035 Último mensaje 22 Febrero 2013, 16:32 pm
por rir3760
maximo de una matriz? « 1 2 3 »
Programación C/C++
feedf 21 21,339 Último mensaje 2 Julio 2013, 10:59 am
por amchacon
Máximo de cada fila de una matriz
.NET (C#, VB.NET, ASP)
gabyricardo1992 3 3,413 Último mensaje 17 Septiembre 2013, 08:05 am
por gabyricardo92
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines