|
42
|
Programación / Programación C/C++ / Establecer el estado de un determinado bit Encendido/Apagado [C]
|
en: 16 Febrero 2015, 22:07 pm
|
Hola gente.- El caso es que dado un número ingresado por teclado, y la posición del bit que se desea saber el estado, mostrar Encendido/Apagado, practique y busque información en la web pero no pude dar con la solución.- Lo que realmente me complica es el patrón para transformar por ej. Si el ingreso de la posición es 5 la debo transformar a 16 para establecer la máscara, pero no lo encuentro, tal vez esté errado en el concepto, no sé.- #include <stdio.h> int main(void){ unsigned int numero, mask, ch; printf("\n\n Ingrese un entero sin signo...............:"); while ((ch = getchar()) != EOF && ch != '\n'); printf("\n\n Indique que bits desea saber el estado....:"); while ((ch = getchar()) != EOF && ch != '\n'); mask <<= 2; printf(numero & mask ? "\n Encendido" : "\n Apagado"); return 0; }
Como siempre muchas gracias por el tiempo que le dediquen.- Saludos. Daniel
|
|
|
43
|
Programación / Programación C/C++ / Re: De decimal a binario sumando sólo los bits encendidos [C].
|
en: 15 Febrero 2015, 18:24 pm
|
Tenías toda la razón, como esto te lo copié de un post (mío) que si mal no recuerdo se llamaba validar ingreso de datos en c no le di más vueltas al asunto y creí que debía emplearlo siempre.- De cualquier manera dejo la foto del código que estoy finalizando con los apuntes complementarios para luego repasarlos.- Saludos. Daniel
|
|
|
44
|
Programación / Programación C/C++ / Re: De decimal a binario sumando sólo los bits encendidos [C].
|
en: 15 Febrero 2015, 14:04 pm
|
Hola a todos. Gracias a los cuatro por la ayuda que me brindan.- Adopte el while como me sugirieron, luego coloque la línea de código de Blaster (que es similar a la de ivancea96) y todo funciona.- BlackZeroX (Astaroth), no es mi fuerte el inglés.- * No es necesario comparar el valor leído contra INT_MAX ya que no hay forma de que sea mayor que este, esa comparación la debes eliminar. Esta línea no me cierra, si yo no efectuó esa comprobación el resultado es incorrecto.- Por último y para que no piensen que estoy desaparecido escribí esto, pero lo que le sigue en importancia para mí no lo pongo todavía porque ni se me antoja como preguntarlo, ya me caerá la ficha y además quiero practicar un poco para ver si lo logro.- Saludos. Daniel
|
|
|
45
|
Programación / Programación C/C++ / De decimal a binario sumando sólo los bits encendidos [C].
|
en: 14 Febrero 2015, 18:05 pm
|
Hola a todos. Nuevamente con alguna duda y solicitando ayuda.- La duda es sobre cómo establecer el valor correcto de la variable bits, si bien practicando un poco tal vez lograría que si por ej. El ingreso es: 2147483648 en binario 10000000000000000000000000000000 Obtendría el resultado esperado pero no me quedaría claro por qué establecí dicho valor.- Me podrían decir el criterio que debo utilizar para establecer el valor correcto en la variable bits.- //Programa que convierte un número entero sin signo a binario. #include <stdio.h> #include <windows.h> #include <limits.h> void ingreso(); void decimalBinario(int numero); int main(void){ ingreso(); return 0; } void ingreso(){ int ingreso, ch=0, ok=0; do{ printf("\n\n Ingrese un entero sin signo en el rango de 1 a %d...: ", INT_MAX ); ok = scanf("%d", &ingreso ) == 1 && ingreso > 0 && ingreso <= INT_MAX ; while ((ch = getchar()) != EOF && ch != '\n'); }while(!ok); decimalBinario(ingreso); } void decimalBinario(int numero){ int bits=64, i, entero=0; for(i=0; bits > 0; i++){ if(numero & bits){ entero += bits; } else{ } bits /=2; } printf(" ==> decimal %d\n\n", entero ); }
Saludos. Daniel
|
|
|
47
|
Programación / Programación C/C++ / Re: Array de estructura (struct) typedef y punteros[C].
|
en: 11 Febrero 2015, 19:06 pm
|
Hola rir3760. Me queda una duda, el array reg cuando está dentro de la función ingreso ¿no es un puntero al primer elemento del arreglo? y si es así ¿porque no puedo utilizar el operador flecha (->)? y si me acepta el operador punto (.).- #include <stdio.h> typedef struct{ int orden; int celular; char nombre[30]; char apellido[30]; char calle[30]; char ciudad[30]; char correo[50]; }registro; void ingreso(registro *reg, size_t num_regs); int main(void){ registro reg[10]; ingreso(reg, sizeof reg / sizeof reg[0]); return 0; } void ingreso(registro *reg, size_t num_regs){ size_t i; for (i = 0; i < num_regs; i++){ reg[i].orden = i; printf("\n orden = %d", reg [i ]. orden); } }
Saludos. Daniel
|
|
|
48
|
Programación / Programación C/C++ / Re: Array de estructura (struct) typedef y punteros[C].
|
en: 10 Febrero 2015, 22:34 pm
|
Hola a todos. Espero que no me odien por tanta molestias, pero prefiero que me envíen algún mal pensamiento antes que quedarme con alguna duda.- Este programa es para que me digan con teoría que le estoy pasando a la función.- #include <stdio.h> typedef struct{ int orden, celular; char nombre[30], apellido[30], calle[30], ciudad[30], correo[50]; }agenda[10]; void ingreso(agenda *ptrContactos); int main(void){ agenda contactos; ingreso(&contactos); return 0; } void ingreso(agenda *ptrContactos){ int bucle = 0, cont = 1; do{ (*(*ptrContactos + cont)).orden = cont; printf("\n\n orden.....................: = %d", (*(*ptrContactos + cont )). orden); cont++; }while(bucle >= 0 && cont <= 10); }
Este es para que vean que no pretendo que me den todo hecho, me desconecté de internet, cerré la ventana con el manual y lo logré sin ayuda, no es gran cosa pero me da cierta seguridad.- #include <stdio.h> typedef struct{ int dia, mes, año; }_fecha; void funcPuntero(_fecha *ptr); int main(void){ _fecha fecha, *ptrFecha; fecha.dia = 10; fecha.mes = 2; fecha.año = 2015; printf("\n hoy es......: %d/%d/%d", fecha. dia, fecha. mes, fecha. año ); ptrFecha = &fecha; ptrFecha->dia = 11; ptrFecha->mes = 3; ptrFecha->año = 2016; printf("\n otra fecha..: %d/%d/%d", ptrFecha ->dia , ptrFecha ->mes , ptrFecha ->año ); funcPuntero(&fecha); printf("\n hoy es......: %d/%d/%d", ptrFecha ->dia , ptrFecha ->mes , ptrFecha ->año ); return 0; } void funcPuntero(_fecha *ptr){ ptr->dia = 10; ptr->mes = 2; ptr->año = 2015; }
Bueno, en definitiva todo tiene que ver con el primer programa es decir modificar los 7 campos del registro en la función ingreso pasándole un puntero a la estructura agenda pero no copiando todo el array a la función sino tan sólo un puntero al primer elemento.- Gente mil disculpas si ya me dieron la solución a esto pero estoy tan embotado que tal vez no me dí cuenta.- Saludos. Daniel
|
|
|
49
|
Programación / Programación C/C++ / Re: Array de estructura (struct) typedef y punteros[C].
|
en: 9 Febrero 2015, 18:43 pm
|
Hola a todos. Eferion, me parece muy interesante lo de puntero doble, etc. Yo creí que sabía bastante sobre punteros pero veo que tengo que repasarlos, si estaríamos sentados los dos frente a la misma compu te efectuaría una pregunta, pero no es este el caso, seguramente consultando en la web voy a obtener la respuesta a mi duda.- _Enko, 2 aclaraciones en cuanto a tu código, la primera es que todavía no llegue a estudiar memoria dinámica y la restante es que el programa se va a extender bastante porque al pedir el ingreso de los datos voy a validar que sean correctos, por lo tanto tengo que utilizar funciones, no debo hacerlo todo dentro de la función principal (main).- En cuanto a: Pero vale la pena complicar la sintaxis? ……………………………………. ……………………………………. Desde mi punto de vista no merece la pena.
Les aclaro mi punto de vista y el criterio del porqué, yo no puedo estar seguro de hacer sólo programas para terceros, que pasa si me trajeran para corregir o modificar programas hechos por otros, en estos casos puedo encontrarme con una gran diversidad de formas de programar y según me dicta mi sentido común debo tener el mayor conocimiento posible, este es el único motivo por el cual este programa(o todos) los hago un tanto complicado.- Para finalizar, espero alguna respuesta en cuanto a mi planteo para saber cuál es el criterio utilizados por Uds. Al estudiar. Saludos. Daniel
|
|
|
50
|
Programación / Programación C/C++ / Re: Array de estructura (struct) typedef y punteros[C].
|
en: 9 Febrero 2015, 15:44 pm
|
Hola gente. Una vez más acudo a Uds. Para ver si me dan una mano con este nuevo inconveniente.- La línea que figura como comentario me da error, estuve consultando en internet y no logro dar con la solución- #include <stdio.h> typedef struct{ int orden, celular; char nombre[30], apellido[30], calle[30], ciudad[30], correo[50]; }agenda[10]; void ingreso(agenda *ptrContactos); int main(void){ agenda contactos; ingreso(&contactos); return 0; } void ingreso(agenda *ptrContactos){ (*ptrContactos + 3)->orden = 5; //(*(ptrContactos)).orden = 5; printf("\n\n %d", (*ptrContactos + 3)->orden ); }
C:\ProgramasNotepad\Pruebas.c: In function 'ingreso': C:\ProgramasNotepad\Pruebas.c:21:22: error: request for member 'orden' in something not a structure or union (*(ptrContactos)).orden = 3; Saludos. Daniel
|
|
|
|
|
|
|