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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Mensajes
Páginas: 1 ... 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 [29] 30 31 32 33 34 35 36 37
281  Programación / Programación C/C++ / Lenguaje C:apuntador a arreglo de enteros y arreglo de apuntadores a enteros. en: 26 Noviembre 2015, 21:25 pm
Hola a todos y que tengan un muy buen día.

Código:
int (*a)[35]; //declara un apuntador a un arreglo de 35 enteros.

int *a[35]; //declara un arreglo de 35 apuntadores a enteros.

Estudiando apuntadores en c me encontré con estas 2 declaraciones pero no las entiendo, alguien seria tan amable de poner algunas líneas de código para comenzar a entender algo del tema?.-
Es todo, intenté hacer un poco de práctica pero no logro hacer que el programa corra y no tengo nada para mostrar.-

Saludos.
Daniel
282  Programación / Programación C/C++ / Re: De binario a decimal -> sprintf no da el resultado esperado (lenguaje c) en: 11 Noviembre 2015, 13:04 pm
Hola ivancea96 .-
Muchas gracias por ocuparte, hice la prueba de esta manera entero=(int)opUno; y me da el mismo resultado, si no tienen una sugerencia más sencilla tendré que hacer que se muestre primero la elección de las operaciones y luego utilizar float o int según sea la misma.- 

Saludos.
Daniel
283  Programación / Programación C/C++ / De binario a decimal -> sprintf no da el resultado esperado (lenguaje c) en: 11 Noviembre 2015, 03:15 am
Hola a todos.
Como lo dice el enunciado, no logro ingresar más de 8 dígitos para pasar de binario a decimal, si ingreso 8 o menos dígitos el resultado es correcto, pero si por Ej. ingreso 110011001 me aparece un número mayor a 1 en el noveno dígito y de la manera que está validado regresa a la función principal,-
Cómo he buscado y buscado en la web y no ayo la manera de solucionarlo recurro una vez más a Uds.
El error está en la función decimal que se encuentra en la línea 99, dejo todo el programa por si a alguien se le ocurre alguna sugerencia para mejorarlo, me parece que error de lógica no tiene, me parece. -

Código
  1. #include <stdio.h>
  2. #include <limits.h>  
  3. #include <float.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6.  
  7. void sumar(float, float);
  8. void restar(float, float);
  9. void dividir(float, float);
  10. void multiplicar(float, float);
  11. void porcentaje(float, float);
  12. void binario(float, float);
  13. void decimal(float, float);
  14. void hexadecimal(float, float);
  15.  
  16. int main(void){
  17. void ( * calc[] ) (float, float) = { sumar, restar, dividir, multiplicar, porcentaje, binario, decimal, hexadecimal };
  18. float opUno, opDos;
  19. int  operador, ch, ok, opc;
  20.  
  21. while( opc != 1 ){
  22. system( "clear" );
  23. opUno = 0.00;
  24. do{
  25. printf( "\n Introduzca un numero..........:" );
  26. ok = scanf("%f",&opUno) == 1 && opUno > 0.00 && opUno <= FLT_MAX;  
  27. while ((ch = getchar()) != EOF && ch != '\n');
  28. }while(!ok);
  29.  
  30. do{
  31. printf( "\n 1 - Sumar\n 2 - Restar\n 3 - Dividir\n 4 - Multiplicar\n 5 - Porcentaje" );
  32. printf( "\n 6 - Binario\n 7 - Decimal\n 8 - Hexadecimal\n\n Introduzca opcion..............:" );
  33. ok = scanf("%d",&operador) == 1 && operador >= 1 && operador <= 7;  
  34. while ((ch = getchar()) != EOF && ch != '\n');
  35. }while(!ok);
  36.  
  37. if( operador >= 6 ){
  38. (* calc[ operador-1 ]) (opUno, opDos);
  39. }
  40. else{
  41. if( operador == 5){
  42. printf( "\n Introduzca el porcentual.......:" );
  43. }
  44. else{
  45. printf( "\n Introduzca segundo operando....:" );
  46. }
  47. do{
  48. ok = scanf("%f",&opDos) == 1 && opDos > 0.00 && opDos <= FLT_MAX;  
  49. while ((ch = getchar()) != EOF && ch != '\n');
  50. }while(!ok);
  51.  
  52. (* calc[ operador-1 ]) (opUno, opDos);
  53. }
  54.  
  55. do{
  56. printf( "\n\n 1 - para finalizar \n 2 - Otra operacion\n\n Introduzca opcion....:" );
  57. ok = scanf("%d",&opc) == 1 && opc >= 1 && opc <= 2;  
  58. while ((ch = getchar()) != EOF && ch != '\n');
  59. }while(!ok);
  60. }
  61.  
  62. return 0;
  63. }
  64.  
  65. void sumar( float opUno, float opDos ){
  66. printf( "\n resultado ==> %5.3f\n", opUno + opDos );
  67. }
  68.  
  69. void restar( float opUno, float opDos ){
  70. printf( "\n resultado ==> %5.3f\n", opUno - opDos );
  71. }
  72.  
  73. void dividir( float opUno, float opDos ){
  74. printf( "\n resultado ==> %5.3f\n", opUno / opDos );
  75. }
  76.  
  77. void multiplicar( float opUno, float opDos ){
  78. printf( "\n resultado ==> %5.3f\n", opUno * opDos );
  79. }
  80.  
  81. void porcentaje(float opUno, float opDos){
  82. float porc, restado, sumado;
  83. porc = (opUno * opDos)/100;
  84. restado = opUno - porc;
  85. sumado  = opUno + porc;
  86.  
  87. printf( "\n Porcentual = %5.3f  Restado = %5.3f  Sumado = %5.3f", porc, restado, sumado );
  88. }
  89.  
  90. void binario( float opUno, float opDos ){
  91. int entero, i, bits=sizeof(int)*8;
  92. entero=(int)opUno;
  93.  
  94. printf("\n El numero %d en binario es: ", entero);
  95. for(i=0;i<bits;++i)
  96. if (((entero>>(bits-i-1))&1)==1) printf("1"); else printf("0");
  97. }
  98.  
  99. void decimal( float opUno, float opDos ){
  100. char cadena[33];
  101. int elementos, decimal = 0, operando = 1, i;
  102.  
  103. elementos = sprintf(cadena,"%1.0f",opUno);
  104.  
  105. for( i = 0; i < elementos; i++){
  106. printf("\n %c", cadena[i]);
  107. if( cadena[i] > '1' ){
  108. printf( "\n El numero ingresado es incorrecto para esta operacion" );
  109. printf( "\n Pulse [Enter] para continuar... " ); getchar();
  110. return;
  111. }
  112. }
  113.  
  114. for( --elementos; elementos >= 0; elementos-- ){
  115. if( cadena[elementos] == '1' ){
  116. decimal += operando;
  117. }
  118. operando *= 2;
  119. }
  120.  
  121. printf( "\n Decimal %d", decimal );
  122. }
  123.  
  124. void hexadecimal( float opUno, float opDos ){
  125. int entero;
  126. entero=(int)opUno;
  127. printf("\n El numero %d en hexadecimal es: %X\n", entero, entero);
  128. }

Saludos y muchas gracias desde ya.-
Daniel
284  Programación / Programación C/C++ / Re: De binario a decimal en lenguaje C. en: 7 Noviembre 2015, 22:12 pm
Hola furciorifa.
Gracias por ocuparte, me gustaría que me digas que modificar para hacerlo más legible, pero si no me lo comentas de una es evidente que no te place hacerlo.-

Saludos.
Daniel
285  Programación / Programación C/C++ / De binario a decimal en lenguaje C. en: 7 Noviembre 2015, 18:14 pm
Hola, gente, que tengan un muy buen día.-
Les dejo este código para que me digan de que otra manera se puede lograr lo mismo, los consulto porque siempre los expertos como Uds. tienen una manera distinta de lo que yo me pude imaginar, no realice muchas pruebas pero las que realice me dan el resultado correcto, la lógica me parece que es coherente.-
En cuanto al float es porque forma parte de una calculadora que además de sumar, restar, etc., transforma un decimal en binario, en hexadecimal y viceversa.-

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main(void){
  5. char cadena[33];
  6. float binario = 1100110;
  7. int elementos, decimal = 0, operando = 1;
  8.  
  9. sprintf(cadena,"%1.0f",binario);
  10. elementos = strlen(cadena) ;
  11.  
  12. for(--elementos; elementos >= 0; elementos-- ){
  13. if( cadena[elementos] == '1' ){
  14. decimal += operando;
  15. }
  16. operando *= 2;
  17. }
  18.  
  19. printf( "En binario %s  ==> en decimal %d", cadena, decimal );
  20.  
  21. return 0;
  22. }
Bueno es todo.-
Saludos.
Daniel
286  Sistemas Operativos / GNU/Linux / Ubuntu 15.04 funciona desde el DVD pero no desde el rígido. en: 25 Agosto 2015, 18:44 pm
Hola gente, que tengan un muy buen día.
Paso a explicarles lo que me pasa, soy nuevo en Linux y si no encuentro la solución en un tiempo prudencial tengo miedo de acobardarme (espero que eso no ocurra) el caso es que instalé Ubuntu 15.04, si lo uso desde el DVD todo funciona normalmente, pero si lo utilizo desde el rígido pasan pocos minutos y queda todo congelado, principalmente si abro el navegador,
tengo 2 GB de RAM y comparto Ubuntu con W7.-       

Espero que puedan darme alguna idea del porque me pasa esto.-
Un fuerte abrazo para todos.-
Daniel.
287  Programación / Programación C/C++ / Re: Multiplicar 2 cedenas y poner el resultado en otra cadena (lenguaje C) en: 1 Octubre 2014, 04:18 am
Hola Blaster.
Le encontré 2 cosas que se deben cambiar.
Si el operando más a la izquierda tiene menos cifras que el de la derecha, el resultado es erróneo.
456 x 1234
La otra, si el operando más a la derecha tiene más de una cifra, el resultado también falla.-   
456 x 12
T. Collins gracias por colaborar, el inglés no es mi fuerte.-
Bueno seguiré picando código para ver si lo logro.-

Saludos.
Daniel   
288  Programación / Programación C/C++ / Re: Multiplicar 2 cedenas y poner el resultado en otra cadena (lenguaje C) en: 1 Octubre 2014, 00:33 am
Hola Blaster.
Genial amigo gracias funciona perfecto, pero ahora necesito algo más, hay alguna fórmula matemática para establecer las cifras totales que tendrá el resultado de una multiplicación.-
Por ejemplo el programa siguiente tuve que hacer la cuenta en un papel para establecer los elementos de mult[11] y otra cosita, que asegura que el último elemento de multi tendrá el ‘\0’ no encuentro esa parte.-
 
Código
  1. #include<stdio.h>
  2.  
  3. int main(void){
  4. char a[] = "4294967295", b[] = "2", mult[11];
  5. int i, j, result = 0, resto = 0, operUno = 0, operDos = 0;
  6.  
  7. for(i = j = 10; i >= 0; i--, j--){
  8. operUno = a[i] - '0', operDos = b[0] - '0';
  9. result = operUno * operDos + resto;
  10. if (result >= 10){
  11. resto = result / 10;
  12. result -= resto * 10;
  13. }
  14. else
  15. resto = 0;
  16. mult[j] = result;
  17.    }
  18. if(resto){
  19. for( i = 10; i > 0; i--)
  20. mult[i] = mult[i - 1];
  21. mult[0] = resto;
  22. }
  23. for(i = 0,j = 10; i < 10 ; i++, j--)
  24. if(j % 3 == 0)
  25. printf(".%d", mult[i]);
  26. else
  27. printf("%d", mult[i]);
  28.  
  29. return 0;
  30. }

Lo último que hice es para que quedara más paquete, lo que pasa es que  con 9 cifras el resultado me lo muestra así .000.000.000, luego lo arreglo.-       

Saludos.
Daniel   
289  Programación / Programación C/C++ / Re: Multiplicar 2 cedenas y poner el resultado en otra cadena (lenguaje C) en: 30 Septiembre 2014, 04:22 am
Hola a todos.
Gracias a ivancea96 pude arrancar con la idea, es obvio que me faltan un montón de detalles, pero lo que me trae en este momento y sin ello no puedo seguir es que sintaxis debo utilizar para copiar resultadoInt en resultadoChar[j] y si me pudieran decir si estoy bien rumbeado.-

Código
  1. #include<stdio.h>
  2.  
  3. int main(void){
  4. char a[] = "214", b[] = "3", resultadoChar[3];
  5. int i, j, resultadoInt=0, resto=0, operUno=0, operDos=0;
  6. for(i=2; i>=0; i--, j++){
  7. operUno = a[i] - '0';
  8. operDos = b[0] - '0';
  9. resultadoInt = (operUno * operDos) + resto;
  10. resto = 0;
  11. if(resultadoInt > 9){
  12. resultadoInt -= 10;
  13. resto++;
  14. }
  15. //copiar resultadoInt en resultadoChar[j];
  16. }
  17.  
  18. for(i=0; i<3; i++){
  19. printf("%c", resultadoChar[i]);
  20. }
  21.  
  22. return 0;
  23. }

Saludos.
Daniel  
290  Programación / Programación C/C++ / Re: Multiplicar 2 cedenas y poner el resultado en otra cadena (lenguaje C) en: 29 Septiembre 2014, 00:26 am
Hola ivancea96.
Por lo que tengo visto no te debe gustar postear códigos por lo menos en los que yo te he leído parece una constante, podrías ponerme algún ejemplo con código (una acepción) o un poco más de teoría.-
Desde ya muchas gracias.-


Saludos.
Daniel   
Páginas: 1 ... 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