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 ... 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
261  Programación / Programación C/C++ / Re: Dudas con size_t en lenguaje C. en: 23 Enero 2016, 14:15 pm
Hola a todos.
Muchas pero muchas gracias a los que se ocuparon del tema, pero como a menudo no logro hacerme entender, lo que necesito en concreto es saber que hacen estas 2 lineas, que incidencia tiene sobre el programa. -

size_t index = 0;
const size_t BUFFER_LEN = 512;


Saludos.-
262  Programación / Programación C/C++ / Dudas con size_t en lenguaje C. en: 22 Enero 2016, 23:29 pm
Hola, a todos.
El caso es que en este tiempo de estudio de C me tope un montón de oportunidades con el tipo size_t, cada vez que esto ocurría consultaba en Internet, pero nunca lo pude comprender del todo, en el programa que dejo a continuación el autor lo utiliza y desearía que me digan (si lo desean) el efecto que tiene en el mismo,-

Código
  1. #include <stdio.h>
  2.  
  3. const size_t BUFFER_LEN = 512;
  4.  
  5. int main( void ){
  6. char buffer[BUFFER_LEN];
  7. char *pS[3] = { NULL };
  8. char *pbuffer = buffer;
  9. size_t index = 0;
  10. int i;
  11.  
  12. printf("\n Introduzca 3 mensajes en total menos de %u caracteres.", BUFFER_LEN-2);
  13.  
  14.  
  15. for( i=0 ; i<3 ; i++ ){
  16. printf("\n Ingrese %s Mensaje....:", i>0? "otro" : "primer" );
  17. pS[i] = &buffer[index];
  18. for( ; index<BUFFER_LEN ; index++)
  19. if((*(pbuffer+index) = getchar()) == '\n'){
  20. *(pbuffer+index++) = '\0';
  21. break;
  22. }
  23.  
  24. if((index == BUFFER_LEN) && ((*(pbuffer+index-1) != '\0') || (i<2))){
  25. printf("\nSe agoto el espacio en el bufer.");
  26. return 1;
  27. }
  28. }
  29.  
  30. printf("\nLas cadenas introducidas son...:\n\n");
  31. for( i = 0 ; i<3 ; i++ )
  32. printf("%s\n", pS[i]);
  33.  
  34. printf("\n El bufer tiene %d caracteres sin usar.\n", BUFFER_LEN-index);
  35.  
  36. return 0;
  37. }

Tengo muchas dudas más con este programa que luego les iré consultando (de ser necesario modificaré el enunciado). -

Saludos.
263  Programación / Programación C/C++ / Re: Establecer la cantidad de dígitos a la derecha de la coma [lenguaje C] en: 19 Enero 2016, 14:27 pm
Hola, Yoel.
Maravilloso, posibilita un máximo de 14 dígitos, más que suficiente. -

Saludos.
Daniel
264  Programación / Programación C/C++ / Re: Establecer la cantidad de dígitos a la derecha de la coma [lenguaje C] en: 19 Enero 2016, 00:48 am
Hola, Yoel Alejandro. -
Estebe haciendo muchas pruebas y el resultado es siempre correcto, solo falla cuando introduzco más de 9 dígitos a la derecha de la coma, pero eso no es inpedimento y en todo caso se puede limitar. -
kondrag_X1 voy a informarme sobre lo que propones porque me quede muy intrigado, no sé por dónde empezar. -

Saludos.
265  Programación / Programación C/C++ / Re: Establecer la cantidad de dígitos a la derecha de la coma [lenguaje C] en: 13 Enero 2016, 18:16 pm
Hola a todos.
0xFer, mil disculpas por no prestar demasiada atención a lo que proponías en este post:http://foro.elhacker.net/programacion_cc/super_solucionado_separar_parte_decimal_y_parte_fraccionaria_en_lenguaje_c-t446426.0.html si bien es efectivo cuando la variable se inicializa a mano no sirve cuando la misma se le aplica el valor por teclado, no sirve porque aparentemente no se puede establecer cuantos decimales tiene un tipo de coma flotante, pero como Danielito es un tanto obsesivo sigue intentando.-
Lo que traigo ahora es la siguiente formula que en un papel y con la calculadora funciona, pero en el ordenador da resultado erróneo, yo quiero creer en una frase que me dijo un conocido (mío) exprogramador: Todo lo que puedas hacer con un lápiz y un papel yo lo puedo hacer con el ordenador.-

Un Ej. con el número .2155
.2155 * 10 = 2.155 le restamos la parte entera y nos queda .155 (1 decimal)
.155 * 10 = 1.55 le restamos la parte entera y nos queda .55 (2 decimales)
.55 * 10 = 5.5 le restamos la parte entera y nos queda .5 (3 decimales)
.5 * 10 = 5.0 le restamos la parte entera y nos queda cero (4 decimales)

El resultado es infalible, en el papel, pero en el programa que dejo a continuación no.- 

Código
  1. #include <stdio.h>
  2. #include <float.h>
  3.  
  4. int main( void ){
  5. double numero , decimal;
  6. int entero, contador = 0, ok, ch;
  7.  
  8. do{
  9. printf("\n Ingrese un numero con decimales...: ");
  10. ok = scanf( "%lf", &numero ) == 1 && numero > 0.00 && numero <= DBL_MAX;
  11. while ((ch = getchar()) != EOF && ch != '\n');
  12. }while(!ok);
  13.  
  14. entero = (int)numero;
  15. decimal = numero - entero;
  16.  
  17. while(decimal != 0 ){
  18. decimal = decimal * 10;
  19. decimal = decimal - (int)decimal;
  20. printf("\n Decimal...: %g", decimal);
  21. contador ++;
  22. }
  23.  
  24. printf("\n Total de digitos despues de la coma..:%d\n", contador);
  25.  
  26. return 0;
  27. }





Si todavía alguien desea decirme el porqué, muy pero muy agradecido.-

Saludos.
266  Programación / Programación C/C++ / Re: Establecer la cantidad de dígitos a la derecha de la coma [lenguaje C] en: 10 Enero 2016, 21:58 pm
Hola MAFUS.
Me parece genial la idea, de echo es lo primero que pense para hacer que el programa logre el cometido pero luego recordé que las operaciones a nivel de bist se pueden aplicar únicamente a variables enteras, pero mirando el video se me antojo que lo puedo intentar con desplazamiento de bits, siempre utilizo el ampersand(&) para hacer este tipo de prácticas, el programa que dejo a continuación es una muestra de ello.-

Código
  1. #include<stdio.h>
  2.  
  3. int main( void ){
  4. int numero = 1854, i, b = 1, temp = 0, x;
  5.  
  6. for( i = 0; i < 32; i++ ){
  7. temp += numero & b;
  8. x = numero & b;
  9. if( x > 0 ) printf("\n bit encendido ==> [%d] = %d", i, x);
  10. b *= 2;
  11. }
  12.  
  13. printf( "\n\n La direccion de memoria %p contiene el valor %d\n\n", &numero, temp );
  14.  
  15. return 0;
  16. }

gracias ivancea96 por la aclaración.-   
A seguir intentando.
Saludos
267  Programación / Programación C/C++ / Re: Establecer la cantidad de dígitos a la derecha de la coma [lenguaje C] en: 10 Enero 2016, 16:05 pm
Hola.
Bueno el obsesivo Daniel sigue practicando, les dejo lo que cambie dentro del bucle, lo que muestra printf no se refleja en el bucle, al ser iguales las 2 cifras ¿por qué no sale del mismo? o lo que muestra printf no es real o exacto. -

Código
  1. while(x <= 6 ){
  2. decimal *=10;
  3. x++;
  4. temp = decimal + 1e-9;
  5. if( temp == decimal ) {break;}
  6. printf("\n decimal = %g ==> temp = %d", decimal, temp);
  7. }
  8.  



Saludos.
268  Programación / Programación C/C++ / Re: Establecer la cantidad de dígitos a la derecha de la coma [lenguaje C] en: 9 Enero 2016, 20:15 pm
Hola.
ivancea96 es eso precisamente lo que quiero lograr, saber la cantidad de dígitos que hay después de la coma y lo que dice MAFUS es correcto (resultado = 5 dígitos).-
Me cuesta creer que haya algo que en C no se pueda hacer, seguiremos intentando, no me voy a dar por vencido tan pronto.-     

Saludos.
269  Programación / Programación C/C++ / Re: Establecer la cantidad de dígitos a la derecha de la coma [lenguaje C] en: 9 Enero 2016, 17:47 pm
Hola
Lo que sucede es que el manual de donde saque el ejercicio dice que utilice el tipo float, en realidad tube que hacerlo con double porque si se ingresa por Ej. 123.045 el cero inmediatamente después de la coma hace que el resultado sea incorrecto (solo en este caso, cero después de la coma), no dice que se pueda hacer con cadena.-
Tal vez lo que estoy pidiendo no se pueda, caso contrario vos o ivancea92 ya lo hubieran descubierto.-

Saludos y gracia por ocuparse.
270  Programación / Programación C/C++ / Re: Establecer la cantidad de dígitos a la derecha de la coma [lenguaje C] en: 9 Enero 2016, 17:11 pm
Mil disculpas, el bucle es while y el operador es el que tipea el teclado.-
Páginas: 1 ... 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