Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - NOB2014

#261
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
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,-

#include <stdio.h>

const size_t BUFFER_LEN = 512;

int main( void ){
char buffer[BUFFER_LEN];
char *pS[3] = { NULL };
char *pbuffer = buffer;
size_t index = 0;
int i;

printf("\n Introduzca 3 mensajes en total menos de %u caracteres.", BUFFER_LEN-2);


for( i=0 ; i<3 ; i++ ){
printf("\n Ingrese %s Mensaje....:", i>0? "otro" : "primer" );
pS[i] = &buffer[index];
for( ; index<BUFFER_LEN ; index++)
if((*(pbuffer+index) = getchar()) == '\n'){
*(pbuffer+index++) = '\0';
break;
}

if((index == BUFFER_LEN) && ((*(pbuffer+index-1) != '\0') || (i<2))){
printf("\nSe agoto el espacio en el bufer.");
return 1;
}
}

printf("\nLas cadenas introducidas son...:\n\n");
for( i = 0 ; i<3 ; i++ )
printf("%s\n", pS[i]);

printf("\n El bufer tiene %d caracteres sin usar.\n", BUFFER_LEN-index);

return 0;
}


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

Saludos.
#263
Hola, Yoel.
Maravilloso, posibilita un máximo de 14 dígitos, más que suficiente. -

Saludos.
Daniel
#264
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
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.- 

#include <stdio.h>
#include <float.h>

int main( void ){
double numero , decimal;
int entero, contador = 0, ok, ch;

do{
printf("\n Ingrese un numero con decimales...: ");
ok = scanf( "%lf", &numero ) == 1 && numero > 0.00 && numero <= DBL_MAX;
while ((ch = getchar()) != EOF && ch != '\n');
}while(!ok);

entero = (int)numero;
decimal = numero - entero;

while(decimal != 0 ){
decimal = decimal * 10;
decimal = decimal - (int)decimal;
printf("\n Decimal...: %g", decimal);
getchar();
contador ++;
}

printf("\n Total de digitos despues de la coma..:%d\n", contador);

return 0;
}






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

Saludos.
#266
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.-

#include<stdio.h>

int main( void ){
int numero = 1854, i, b = 1, temp = 0, x;

for( i = 0; i < 32; i++ ){
temp += numero & b;
x = numero & b;
if( x > 0 ) printf("\n bit encendido ==> [%d] = %d", i, x);
b *= 2;
}

printf( "\n\n La direccion de memoria %p contiene el valor %d\n\n", &numero, temp );

return 0;
}


gracias ivancea96 por la aclaración.-   
A seguir intentando.
Saludos
#267
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. -


while(x <= 6 ){
decimal *=10;
x++;
temp = decimal + 1e-9;
if( temp == decimal ) {break;}
printf("\n decimal = %g ==> temp = %d", decimal, temp);
}




Saludos.
#268
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
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
Mil disculpas, el bucle es while y el operador es el que tipea el teclado.-