| Ver tema anterior :: Ver siguiente tema |
| Autor | Mensaje |
|---|
Pantalàimon_
Registrado: 17 Jul 2007 Mensajes: 90
| Publicado: 03/10/2007 12:19 pm | | | Título: La cosa más extraña que me ha pasado. |
| Hola.
Tengo un código escrito en c y compilado. Total que cuando llamo al ejecutable por MS-DOS o directamente clicando en este me salen cosas distintas.
¿Esto puede ser? |
|
| Volver arriba | |
 |
gonzalo_s
Registrado: 07 Jun 2005 Mensajes: 40 Ubicación: Santiago
| Publicado: 03/10/2007 1:05 pm | | | Título: |
| | sera posible que estes abriendo dos archivos distintos??, o versiones distintas del archivo?, a mi me ha pasado. |
|
| Volver arriba | |
 |
Pantalàimon_
Registrado: 17 Jul 2007 Mensajes: 90
| Publicado: 03/10/2007 1:39 pm | | | Título: |
| No es eso, ya me he asegurado. Hasta he eliminado el archivo ejecutable y lo he vuelto a compilar. y nada...
He pegado el mismo código en otro archivo de prueba, lo he compilado y me pasa lo mismo con el ejecutable que sale del archivo de prueba.
Por cierto, una cosa que seguramente pueda servir de informacion, uso dev-c++. |
|
| Volver arriba | |
 |
|
rir3760

Registrado: 01 Oct 2004 Mensajes: 3588 Ubicación: Mexico
| Publicado: 03/10/2007 4:12 pm | | | Título: |
| Por lo visto es un problema comun, yo tengo este programa:
| Código: | #include <stdio.h> #include <stdlib.h> #include <time.h>
#define NUM_ELEM 16
int main(void) { int i; srand((unsigned) time(NULL)); for (i = 0; i < NUM_ELEM; i++) printf(" %d", rand() % NUM_ELEM); putchar('\n'); return EXIT_SUCCESS; } |
Y como tu cada ves que lo corro me salen cosas distintas. 
Ya en serio puede deberse a un monton de cosas desde errores en el programa hasta que ese sea el comportamiento esperado. Lo mas sencillo es que publiques el codigo fuente.
Un saludo _________________ The capacity to learn is a gift; The ability to learn is a skill; The willingness to learn is a choice. -- Rebec of Ginaz |
|
| Volver arriba | |
 |
Pantalàimon_
Registrado: 17 Jul 2007 Mensajes: 90
| Publicado: 03/10/2007 9:37 pm | | | Título: |
| | rir3760 escribió: | Por lo visto es un problema comun, yo tengo este programa:
| Código: | #include <stdio.h> #include <stdlib.h> #include <time.h>
#define NUM_ELEM 16
int main(void) { int i; srand((unsigned) time(NULL)); for (i = 0; i < NUM_ELEM; i++) printf(" %d", rand() % NUM_ELEM); putchar('\n'); return EXIT_SUCCESS; } |
Y como tu cada ves que lo corro me salen cosas distintas. 
Ya en serio puede deberse a un monton de cosas desde errores en el programa hasta que ese sea el comportamiento esperado. Lo mas sencillo es que publiques el codigo fuente.
Un saludo |
jjajaja, también podría ser una función rand() pero me parece que no .
Pongo el código:
| Código: | #include<stdio.h>
#define CIFRAS 6
int Num_digitos(int numero) { int indice=0; for(indice=0;numero!=0;indice++) numero/=10; return indice; }
char digito(int numero, int posicion) { int indice; for(indice=0 ; indice<posicion ; indice++) numero/=10; return numero%=10; } int criba(int numero,int factor1,int factor2,int ndig) { int indice,indice1,indice2; char comprovacion[CIFRAS]; for(indice=0;indice<ndig;indice++) comprovacion[indice]=0; for(indice1=0; indice1<ndig/2; indice1++) { for(indice=0; indice<ndig; indice++) { if(digito(numero,indice)==digito(factor1,indice1)&&comprovacion[indice]==0) { comprovacion[indice]=1; break; } } } for(indice2=0; indice2<ndig/2; indice2++) { for(indice=0; indice<ndig; indice++) { if(digito(numero,indice)==digito(factor2,indice2)&&comprovacion[indice]==0) { comprovacion[indice]=1; break; } } } for(indice=0; indice<ndig ; indice++) if(comprovacion[indice]==0) return 0; return 1; }
int main(void) { int i,j,k,factor,numero=1,exp,contador=0; for(exp=1; exp<3 ; exp++) { factor*=10; numero=10*factor*factor; for(j=numero ; j<10*numero ; j++) { //printf("%d %d\n",j,contador); for(k=j/(10*factor)+1; k*k<=j ; k++) { if(j%k==0) { if(criba(j,k,j/k,2*(exp+1))>0) { contador++; printf("%d=%d*%d %d\n",j,k,j/k,contador); } } } } } return 0; } |
A ver que te sale cuando lo compilas. Espero que sea una de las dos cosas que me sale a mí.
PD.:podrían poner el encuadrador de código un poco más ancho o algo para que no quedé tan feo y descolocado el código fuente.
Saludos! |
|
| Volver arriba | |
 |
daltomi
Registrado: 28 Abr 2007 Mensajes: 107 Ubicación: Argentina
| Publicado: 03/10/2007 9:56 pm | | | Título: Nota |
| Utilizando un breakpoint y recorriendo paso por paso, en ésta línea dentro del main:
k = -7 hasta 0.
Te pregunto:¿sigue siendo válido, el código en general, si se arregla éste problema? asi:
|
|
| Volver arriba | |
 |
|
Pantalàimon_
Registrado: 17 Jul 2007 Mensajes: 90
| Publicado: 03/10/2007 10:04 pm | | | Título: |
| Vale, gracias, esto venía por no haber inicializado la variable factor en 1.
Lo raro es que si lo inicializaba por windows el programa salía bien, es decir factor se incializaba con 1 y si lo hacía por ms-dos se incializaba con cualquier valor basura.
Lo extraño es que por windows me funcionara bien.
Muchas gracias. |
|
| Volver arriba | |
 |
rir3760

Registrado: 01 Oct 2004 Mensajes: 3588 Ubicación: Mexico
| Publicado: 04/10/2007 7:26 am | | | Título: |
| En la funcion "Num_digitos" no es necesario inicializar la variable "indice" con el valor cero ya que lo primero que haces con esa variable es asignarle un valor en el bucle for.
Esa misma funcion no reporta correctamente el numero de digitos de numeros como 0, 10, etc. su unico bucle se debe modificar a:
| Código: | for (indice = 1; numero >= 10; indice++) numero /= 10;
/* O tambien */
for (indice = 1; (numero /= 10) > 0; indice++) ; |
En cuanto al "word-wrap" en las secciones de codigo habra que comentarselo a Gorka Urrutia (el administrador del sitio), por el momento la unica solucion consiste en agregar una linea de texto sin espacios fuera de la seccion de codigo, un ejemplo de esto en el tema word-wrap en el codigo fuente.
Si bien con eso se resuelve el problema con el codigo fuente mete otro problema: los parrafos normales son demasiado largos y uno debe realizar el corte de linea de estos manualmente.
Un saludo _________________ The capacity to learn is a gift; The ability to learn is a skill; The willingness to learn is a choice. -- Rebec of Ginaz |
|
| Volver arriba | |
 |
Pantalàimon_
Registrado: 17 Jul 2007 Mensajes: 90
| Publicado: 04/10/2007 9:06 am | | | Título: |
| Pues he probado con mi función y me sigue dando igual bien... no sé. Pero no te preocupes, esta función era una cosa residual que ya he quitado, pues no la utilizo en el programa.
Gracias! |
|
| Volver arriba | |
 |
|
|