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

#341
Hola a todos.

Lenguaje....................: "C"

Sistema operativo.....: Windows XP

Compilador.................: MinGW

Problema....................:Esta estructura puede tener el mismo problema que plantea rir3760 en este post. 
                              http://foro.elhacker.net/programacion_cc/operadores_a_nivel_de_bits_lenguaje_c-t410671.0.html
                                                       
Error...........................: Ninguno.

Otras Observaciones..:http://foro.elhacker.net/programacion_cc/de_minuscula_a_mayuscula_a_nivel_de_bits_en_lenguaje_c-t405856.0.html


Código.........................:


//Con uniones y campos de bit.

#include <stdio.h>

union caracteres
{
unsigned char c;
struct c_bits
{
unsigned b0:1;
unsigned b1:1;
unsigned b2:1;
unsigned b3:1;
unsigned b4:1;
unsigned b5:1;
unsigned b6:1;
unsigned b7:1;
} bits;
};

int main(void){
union caracteres caracter = {110};

printf("\n\n union caracteres caracter = {110};");
printf("\n\n La variable caracter contiene la letra...: \"%c\"", caracter.c);

printf("\n\n caracter.bits.b5 = 0; //Apaga el bits 5 para que la letra 'n' se transforme en 'N'");
caracter.bits.b5 = 0;
printf("\n\n Ahora la variable caracter contiene la letra...: \"%c\"", caracter.c);

printf("\n\n");
return 0;
}


//Con máscaras y operaciones a nivel de bit.

#include <stdio.h>

int main(void){
char letra = 'n';

printf("\n\n char letra = 'n';");
printf("\n\n La variable letra contiene la letra...: \'%c\'", letra);

letra &=0xDF;
printf("\n\n letra &=0xDF; // 0xDF es en binario = 1101 1111 --> pones a 0 el bit 5");

printf("\n\n Ahora la variable letra contiene la letra...: \'%c\'", letra);

printf("\n\n");
return 0;
}


Saludos y como siempre muchas gracias.
Daniel 
#343
Hola a todos.
Gracias a , ivancea96,Rir3760,yoel_alejandro por la ayuda, me interesa el código de estos último dos que luego de debelar las dudas que expongo a continuación voy a correrlos y estudiarlos.-

unsigned despliegaMascara = 1 << 31;
engelx ¿me podrías decir cuál es el valor final de despliegaMascara?, no logro mostrarlo con un printf y mil disculpas por la ignoracia al suponer que podía ser una función.-

putchar(valor & despliegaMascara ? '1' : '0');
En esta línea valor en cada iteración se mueve un bits a la izquierda ¿ con despliegaMascara no debería pasar lo mismo ?.-

Demás esta aclarar que la ayuda de cualquiera es bienvenida.-

Saludos.
Daniel 
#344
Hola angelx.
Sí, me quedan dudas sobre tu explicación, no porque este mal hecha( todo lo contrario) solo que siempre tardo en que me caiga la ficha, cuando esto ocurra los volveré a consultar.-

Saludos.
Daniel
#345
Hola a todos.
Estoy estudiando "Operadores a nivel de bits" y no sólo deseo aprender la sintaxis sino también interpretar lo que hace cada línea de código.-

Lenguaje: "C"

Problema: (dudas) Expuesta en el código. 
                                                                                 
Error: Ninguno.

Otras Observaciones: Ninguna.

Código:


# include <stdio.h>

void despriegaBits(unsigned valor);

int main(void){
unsigned x; //No entiendo esta declaracion de variable, cual es el tipo?
printf("\n\n Introduzca un entero sin signo....:");
scanf("%u", &x);

despriegaBits(x);

return 0;
}

void despriegaBits(unsigned valor){
unsigned c; //No entiendo esta declaracion de variable, cual es el tipo?

unsigned despliegaMascara = 1 << 31; //Esta sentencia como se llama?, pareceria una funcion, pero no
                                             //tiene parentesis, me desconcierta, y lo mas importante, como funciona?, que hace?.

printf("\n %10u = ", valor);

for(c = 1; c <= 32; c++){
putchar(valor & despliegaMascara ? '1' : '0');
valor <<= 1;

if(c % 8 == 0){
putchar(' ');
}
}
putchar('\n');
}


Desde ya muchas gracias por la ayuda que puedan brindarnos.-
Saludos.
Daniel
#346
Hola welchu.
Te  pongo un complemento más que me había olvidado.-
El else tiene que quedar así:
else{
cadena[MAX-1] = '\0'; /* Esta es la linea que me faltaba  */
while((ch = getchar()) !='\n' && ch!=EOF);
}


Saludos.
Daniel
#347
Hola welchu.
Fíjate si esto también te puede ayudar, el caso que en la función de amchacon no podes llamarla siempre porque si ingresas 6 o más caracteres(relacionado con mi programa) el bucle while queda "patinando" porque nunca encuentra el [Enter] o salto de línea para finalizar.-
Ejemplo: si ingresas "Daniel" el programa leerá "Danie"  5 caracteres y el sexto es para el '\n' que en este caso quedará en el buffer de teclado haciendo que el bucle while nunca finalize.-
Bueno no hace tanto que estudio c y si me equivoco me lo dirán.-


Citarfgets leerá hasta n-1 caracteres o hasta que lea un retorno de línea (\n).
En este último caso , el carácter de retorno de línea también es leído.-   

#include<stdio.h>
#include<string.h>

#define MAX 6

int main(void){
char cadena[MAX]={'\0'}, *p=NULL;
unsigned int ch=0;

printf("\n\n ----- Programa que muestra el comportamiento de fgets -----");
printf("\n\n Ingrese una frase....:");
fgets(cadena, MAX, stdin);
if((p=strchr(cadena, '\n'))){
*p='\0';
}
else{
while((ch = getchar()) !='\n' && ch!=EOF);
}
printf("\n Ingreso..............:%s", cadena);

printf("\n\n Pulse [Enter] para finalizar..."); getchar();
return 0;
}
   

Saludos.
Daniel
#348
Hola
Mil disculpas, creí que había incluido el código en el post y lo borre para hacer otra practica, me quede sin nada.-
Saludos.
#349
Hola
Ya casi lo tengo gracias a que pude copiar de los ejemplos de Leo y wiD^.-
Lo que necesitaría son 2 cositas más:
La primera.
char *ptrPalabras[15];
¿Esto me asegura un array de punteros de N punteros y un ancho máximo
de 15 caracteres para cada palabra?.-
La segunda.
printf("\n %s", *(palabras+i));




No me funciona, por favor si lo desean un poco de teoría del porque.-
Leo para vos que dedicas mucho tiempo mostrando códigos, discúlpame si no los tomo completos es que tomando trozos de cada ejemplo me resulta beneficioso pata mi aprendizaje.-

Saludos.
#350
Hola.
rir3760 si en algún post no respondo a tus ayudas es porque me lleva tiempo asimilarlas.-
Voy al grano, sigo con mis prácticas de punteros y el programa que estoy haciendo es para que el operador ingrese por ejemplo 8 nombres y luego ordenarlos.-
Hay 2 cosas que no sé hacer, la primera, alguien me podría decir como pasar un array de punteros a función y la segunda, ¿como puedo hacer para que la cantidad de punteros se pida que se ingrese por teclado y no ponerlo a mano?.-

printf("\n Ingrese un entero para establecer la cantidad de nombres a ordenar...:");

Aclaro que el programita es para poner algo sino me van a tirar de las orejas.-
Otra cosita, la validación de ingreso de entero la copié de un post de rir3760, ya la adopte como definitiva, funciona a la perfección.-

#include <stdio.h>
#include <stdlib.h>

void ingresoCorrecto(int*, int);

int main(void){
char *ptrNombres[] = {"Rosita", "Alberto", "Claudio", "Yanina", "Pedrito", "Jorge", "Daniel", "Leo"};
int indice=0, longitud=0;

longitud = sizeof ptrNombres / sizeof *ptrNombres;

printf("\n");
for(indice=0; indice<longitud; indice++){
printf("[%d] %s - ", indice, ptrNombres[indice]);
}

ingresoCorrecto(&indice,longitud);

printf("\n Su eleccion fue...: %s", ptrNombres[indice]);

return 0;
}

void ingresoCorrecto(int *ingreso, int longitud){
int ch=0, ok=0, temp=0;
do{
printf("\n\n ingrese un entero del [0] al [%d] para extraer un nombre..:", longitud-1);
ok = scanf("%d", &temp) == 1 && temp >= 0 && temp <= longitud-1;
while ((ch = getchar()) != EOF && ch != '\n');
}while(!ok);
*ingreso = temp;
}


Saludos.