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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: 1 ... 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 [24] 25 26 27 28 29 30 31 32 33 34 35 36 37
231  Programación / Programación C/C++ / Re: Medir velocidad de ejecución de un programa en lenguaje C.- en: 3 Abril 2016, 23:06 pm
Ivancea96, cuando corro lo que me sugeriste agregar me pasa esto:



compila a la perfección solo que cambie el %i por %li (me daba error).-

Daniel.



MAFUS.
Lo tuyo funciona solo que no se cierra el programa hasta apretar Enter por lo tanto en segundos el tiempo tomado no es tan preciso. -
En cuanto a Windows el que dejo a continuación, funciona (no lo verifique, pero debe ser muy parecido al de ivancea96 ) como lo posteo, pero si lo aplico al programa me hace exactamente lo mismo que al principio. -
desconozco que efecto extraño produce el programa que ordena que si le agrego esas pocas líneas revienta, seguiremos investigando, igual espero que alguien se ilumine y pueda hallar la solución. -

Código
  1. #include <stdio.h>
  2. #include <time.h>
  3.  
  4. int main( void )
  5. {
  6. long int i=0;
  7. clock_t comienzo;
  8.  
  9. comienzo=clock();
  10. for( i=0; i<10000; i++ ){
  11. printf("*");
  12. }
  13.  
  14. printf( "\n Sgundos transcurridos.....: %f s\n", (clock()-comienzo)/(double)CLOCKS_PER_SEC );
  15.  
  16. return 0;
  17. }

Daniel.
232  Programación / Programación C/C++ / Medir velocidad de ejecución de un programa en lenguaje C.- en: 3 Abril 2016, 21:49 pm
Hola, gente.
Esta vez los molesto por poco, me podrían decir que tengo que agregar a mi código para medir el tiempo que tarda en ejecutarse, busqué en foros y lo que intené no funcionó. -
Es probable que me quieran dar un tirón de orejas por tratar de reinventar la rueda, pero créanme que es tan solo para practicar con punteros y de paso cotejarlo con el método de la burbuja y saber que es más rápido si un doble for o un bucle while. -

Código
  1. #include <stdio.h>
  2.  
  3. void ordenar(size_t *ptrV, size_t elementos);
  4. void mostrar(size_t *ptrV, size_t elementos);
  5.  
  6. int main( void ){
  7. size_t vector[] = {99, 8, 13, 6, 104, 40, 7, 2, 1}, *ptrV = vector;
  8. static size_t elementos = sizeof (vector) / sizeof (size_t);
  9.  
  10. ordenar(ptrV, elementos);
  11. mostrar(ptrV, elementos);
  12.  
  13. return 0;
  14. }
  15.  
  16. void ordenar(size_t *ptrV, size_t elementos){
  17. size_t i, tmp = 0;
  18.  
  19. while(1){
  20. if( *(ptrV+i) >  *(ptrV+(i+1)) ){
  21. tmp = *(ptrV+i);
  22. *(ptrV+i) = *(ptrV+(i+1));
  23. *(ptrV+(i+1)) = tmp;
  24. }
  25. if( i+1 == elementos ){
  26. if( tmp == 0) break;
  27. else{tmp = 0; i = -1;}
  28. }
  29. i++;
  30. }
  31. }
  32.  
  33. void mostrar(size_t *ptrV, size_t elementos){
  34. size_t i;
  35.  
  36. for( i = 0; i < elementos; i++ )
  37. printf( " %u", *(ptrV+i) );
  38. }

Desde ya muchas gracias. -

Saludo.
Daniel

233  Programación / Programación C/C++ / Re: No puedo compilar nada en: 30 Marzo 2016, 21:11 pm
Hola, idzen.
Yo estoy estudiando C y me encanta utilizar Notepad++ como ide y MinGW como compilador, ambos son gratuitos, si lo vas a utilizar no te desanimes si no compila en el primer intento tenes que configurar correctamente Variables de entorno en Windows, te puedo ayudar a lograrlo. -

saludos.
Daniel
234  Programación / Programación C/C++ / Re: Pasar cifra numérica a letra en lenguaje C en: 28 Marzo 2016, 03:58 am
Hola, MAFUS.
Funciona a la perfección, tome la segunda opción porque todavía tengo que repasar memoria dinámica, dejo el programa funcionando para que si alguien pasa por esto tenga alguna idea.-
No prometo nada, pero si logro mejorarlo lo corrijo. -

Código
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #include <windows.h>
  4.  
  5. int ingreso( int monto[] );
  6. void mostrar( int monto[], int contador );
  7.  
  8.  
  9. int main( void ){
  10. int monto[3], contador = 0;
  11.  
  12. contador = ingreso( monto );
  13. mostrar( monto, contador );
  14.  
  15. return 0;
  16. }
  17.  
  18. int ingreso( int monto[] ){
  19. int ch, ok, contador ;
  20.  
  21. do{
  22. system("cls||clear");
  23. ok = 1; contador = 0;
  24. printf("\n\n Ingrese monto del cheque (superior a \"0\" e inferior a \"1000\")....:" );
  25. while(( ch = getchar()) != '\n'){
  26. if( isdigit(ch) ){
  27. if( contador < 3 ){
  28. monto[contador] = ch - '0';
  29. contador++;
  30. }
  31. else{
  32. ok = 0;
  33. }
  34. }
  35. else{
  36. ok = 0;
  37. }
  38. }
  39. if( ok == 0 || monto[0] == '0'){
  40. printf( "\n Ingreso incorrecto...\n\n\tPulse <Enter> para intentarlo nuevamente..." );
  41. getchar();  
  42. ok = 0;
  43. }
  44. }while(!ok);
  45.  
  46. return contador;
  47. }
  48.  
  49. void mostrar( int monto[], int contador ){
  50. char  *unidades[] = { "", "uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve", "diez" },
  51.      *decenas[]  = { "veinte", "treinta", "cuarenta", "cincuenta", "sesenta", "setenta", "ochenta", "noventa" },
  52.  *centenas[] = { "", "Ciento", "Doscientos", "Trescientos", "Cuatrocientos", "Quinientos",
  53. "Seiscientos", "Setecientos", "Ochocientos", "Novecientos" },
  54.  *especiales[] = { "Diez", "Once", "Doce", "Trece", "Catorce", "Quince", "Dieciseis", "Diecisiete",
  55.  "Dieciocho", "Diecinueve", "Veinti" };
  56. int tmp = monto[0]-2;
  57. char m = toupper(decenas[tmp][0]);
  58.  
  59. if( contador == 1 ){
  60. tmp = monto[0];
  61. m = toupper(unidades[tmp][0]);
  62. printf( "\n %c%s", m, &unidades[tmp][1] );
  63. }
  64.  
  65. if( contador == 2 ){
  66. if( monto[0] == 1)
  67. printf( "\n %s ", especiales[monto[1]] );
  68. else if( monto[1] == 0 ){
  69. printf("\n %c%s", m, &decenas[tmp][1] );
  70. }
  71. else if( monto[0] == 2 && monto[1] > 0 )
  72. printf( "\n %s%s", especiales[10], unidades[monto[1]] );
  73. else{
  74. printf("\n %c%s y %s", m, &decenas[tmp][1], unidades[monto[1]]);
  75. }
  76. }
  77.  
  78. if( contador == 3 ){
  79. if( monto[0] == 1 && monto[1] == 0 && monto[2] == 0)
  80. printf( "\n %s ", "Cien" );
  81. else
  82. printf( "\n %s ", centenas[monto[0]] );
  83.  
  84. if( monto[1] == 0 )
  85. printf( "%s", unidades[monto[2]] );
  86. else if( monto[1] == 1 ){
  87. tmp = monto[2];
  88. m = tolower(especiales[tmp][0]);
  89. printf( "%c%s", m, &especiales[tmp][1] );
  90. }
  91. else if( monto[2] == 0)
  92. printf( "%s", decenas[monto[1]-2] );
  93. else if( monto[1] == 2 )
  94. printf( "%s%s", "veinti", unidades[monto[2]] );
  95. else
  96. printf( "%s y %s", decenas[monto[1]-2], unidades[monto[2]] );
  97. }
  98. }

Saludos.
Daniel
235  Programación / Programación C/C++ / Re: Pasar cifra numérica a letra en lenguaje C en: 28 Marzo 2016, 01:54 am
Hola.
Nada de eso, es lo que muestra la captura.



Gracias.
Daniel

Perdón por leer apurado, por Ej. 35 todo número que tenga 2 cifras, para escribir Treinta y cinco, debo pasar treinta a Treinta. - 
236  Programación / Programación C/C++ / Pasar cifra numérica a letra en lenguaje C en: 28 Marzo 2016, 00:23 am
Hola, gente.
Tengo un error que por más que investigo no logro solucionar, hice un montón de pruebas como con la función printf para saber si accedía a la posición de memoria correcta y realmente en todos los casos imprimía la fila correcta y el contenido de la primer columna, pero siempre al acceder a esta parte del programa el mismo se cierra. -
Un favorcito más, si alguien conoce otra manera para lograr lo mismo le agradecería me dé alguna pista. - 


lineas 67 y 73
Código
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #include <windows.h>
  4.  
  5. int ingreso( int monto[] );
  6. void mostrar( int monto[], int contador );
  7.  
  8.  
  9. int main( void ){
  10. int monto[3], contador = 0;
  11.  
  12. contador = ingreso( monto );
  13. mostrar( monto, contador );
  14.  
  15. return 0;
  16. }
  17.  
  18. int ingreso( int monto[] ){
  19. int ch, ok, contador ;
  20.  
  21. do{
  22. system("cls||clear");
  23. ok = 1; contador = 0;
  24. printf("\n\n Ingrese monto del cheque (superior a \"0\" e inferior a \"1000\")....:" );
  25. while(( ch = getchar()) != '\n'){
  26. if( isdigit(ch) ){
  27. if( contador < 3 ){
  28. monto[contador] = ch - '0';
  29. contador++;
  30. }
  31. else{
  32. ok = 0;
  33. }
  34. }
  35. else{
  36. ok = 0;
  37. }
  38. }
  39. if( ok == 0 || monto[0] == '0'){
  40. printf( "\n Ingreso incorrecto...\n\n\tPulse <Enter> para intentarlo nuevamente..." );
  41. getchar();  
  42. ok = 0;
  43. }
  44. }while(!ok);
  45.  
  46. return contador;
  47. }
  48.  
  49. void mostrar( int monto[], int contador ){
  50. char  *unidades[] = { "", "uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve", "diez" },
  51.      *decenas[]  = { "veinte", "treinta", "cuarenta", "cincuenta", "sesenta", "setenta", "ochenta", "noventa" },
  52.  *centenas[] = { "", "Cien", "Doscientos", "Trescientos", "Cuatrociento", "Quinientos",
  53. "Seiscientos", "Setecientos", "Ochocientos", "Novecientos" },
  54.  *especiales[] = { "Diez", "Once", "Doce", "Trece", "Catorce", "Quince", "Dieciseis", "Diecisiete",
  55.  "Dieciocho", "Diecinueve", "Veinti" };
  56. int tmp;
  57.  
  58. if( contador == 1 ){
  59. printf( "\n %s", unidades[monto[0]] );
  60. }
  61.  
  62. if( contador == 2 ){
  63. tmp = monto[0]-2;
  64. if( monto[0] == 1)
  65. printf( "\n %s ", especiales[monto[1]] );
  66. else if( monto[1] == 0 ){
  67. decenas[tmp][0] = toupper(decenas[tmp][0]);  
  68. printf( "\n %s", decenas[monto[0]-2] );
  69. }
  70. else if( monto[0] == 2 && monto[1] > 0 )
  71. printf( "\n %s%s", especiales[10], unidades[monto[1]] );
  72. else{
  73. decenas[tmp][0] = toupper(decenas[tmp][0]);  
  74. printf( "\n %s y %s", decenas[monto[0]-2], unidades[monto[1]] );
  75. }
  76. }
  77.  
  78. if( contador == 3 ){
  79. printf( "\n %s ", centenas[monto[0]] );
  80. if( monto[1] == 0 )
  81. printf( "%s", unidades[monto[2]] );
  82. else if( monto[1] == 1 )
  83. printf( "%s", especiales[monto[2]] );
  84. else
  85. printf( "%s y %s", decenas[monto[1]-2], unidades[monto[2]] );
  86. }
  87. }
  88.  
  89.  
  90. /*
  91. Ejercicio 6-1. Escriba un programa que solicite un número entero positivo menor que 1000
  92. y a continuación, cree y genere un valor de tipo string que es el valor del entero en palabras.
  93. Por ejemplo, si 941 es introducido, el programa creará la cadena "Novecientos cuarenta y uno".
  94. */

Saludos.
Daniel
237  Programación / Programación C/C++ / Re: Comportamiento de la función fgets(lenguaje C). en: 24 Marzo 2016, 23:01 pm
Hola, MAFUS.
ahora sí que queda todo clarísimo ;-) ;-) ;-), gracias por el tiempo que le dedicaste y te debo una cerveza con maníes. -

Saludos.
Daniel

238  Programación / Programación C/C++ / Re: Duda con la función fgets (lenguaje C). en: 24 Marzo 2016, 02:47 am
Hola, MAFUS.
Ahora si me que más claro, por lo menos la primer pregunta, en cuanto a la segunda no logro interpretarte demasiado, no obstante, hice mis propias pruebas y en la práctica pasa lo siguiente:
si por Ej. la cadena soporta 10 caracteres, si ingreso 9 o menos se ejecuta la línea que está a continuación del if, en cambio si ingreso 10 o más caracteres se ejecutan las líneas que estan a continuación del else, o sea en la práctica todo funciona correctamente, en la teoria no me queda claro lo siguiente:
De las dos formas (ingrece menos de 10 o ingrece mas de 9 ) el caracter \n va a estar siempre y como está escrito el programa nunca deberia ejecutarse la sentencia else.-
espero encontrar la explicación a esto.- 

Saludos.
Daniel
239  Programación / Programación C/C++ / Comportamiento de la función fgets(lenguaje C). en: 23 Marzo 2016, 05:02 am
Hola.

Código
  1. fgets( word[i], MAX_COL , stdin );
  2.  
  3. if((p=strchr(word[i], '\n'))){
  4. *p='\0';
  5. }
  6. else{
  7. while((ch = getchar()) !='\n' && ch!=EOF);
  8. word[i][MAX_COL] = '\0';
  9. }


En este trozo de código está mi gran duda, según lo que tengo leído es que si ingreso menos caracteres que  MAX_COL fgets los guarda desde el buffer de teclado en la variable indicada, en este caso word y también el carácter de nueva línea (\n) que se produce al apretar < Enter >, la primera duda, ¿es estrictamente necesario remplazar el carácter \n por \0? -
En el caso de ingresar más caracteres del establecido por MAX_COL fgets lee  MAX_COL – 1 y en la última casilla de memoria asignada a MAX_COL copia el carácter \n, de ser esto cierto la otra duda es:  ¿la sentencia else no se ejecuta nunca en este caso, o estoy equivocado?

Es todo y desde ya muchas gracias por el tiempo que le dediquen al tema,-

Saludos.
Daniel

240  Sistemas Operativos / Windows / Re: Instalar Windows XP sin tener copia de los drivers. en: 12 Marzo 2016, 03:20 am
Hola.
Muchas gracias por ocuparte, tienes toda la razón debo tener problemas con la tarjeta gráfica, lo que ocurre es que me pidieron mas por ella que lo que sale la maquina completa,
AMD phenom II x 2 560 procesador, 2.0 GB RAM, NVIDIA GeForce 7025/NVIDIA nForce 630a crei ilusamente que si ponia otro sistema operativo más antiguo podria solucionarlo.-
Bueno, vere si la descarto o sigo renegando.-

Saludos.
Daniel
Páginas: 1 ... 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 [24] 25 26 27 28 29 30 31 32 33 34 35 36 37
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines