|
331
|
Programación / Programación C/C++ / Prioridad y asociatividad de los operadores en C. (Programa propio)
|
en: 6 Abril 2014, 21:16 pm
|
Hola a todos y que tengan un muy buen día.- Por el enunciado se darán cuenta de lo que deseo hacer, si me dejan ser prejuicio muchos dirán que ganas de complicarse por algo que el compilador de C lo efectúa perfectamente, si bien esto es cierto tengo mucha fe que este hilo me proporcionara mucho conocimiento (intuición, corazonada).- Lo primero que deseo hacer es poner en una variable int (9 - 2) y borrarlo de la variable cadena, si bien logro extraer la cadena con un inicio correcto pero no logro el corte en el último paréntesis.- Por último ¿lo harian de otra manera?.- #include <stdio.h> #include <string.h> int main(){ char cadena[100] = "3 * 5 + (9 - 2) + 5", *enc = NULL; return 0; }
Saludos y desde ya muchas gracias. Daniel
|
|
|
333
|
Programación / Programación C/C++ / Operadores, Prioridad y asociatividad en lenguaje C.
|
en: 4 Abril 2014, 02:55 am
|
Hola a todos y que tengan un muy buen día.- En este caso estoy estudiando operadores, Prioridad y asociatividad y realmente estoy trabado, en el programa, la segunda sentencia logro establecer qué el resultado sea 119 (creo estar en lo correcto).- #include <stdio.h> int main(){ int a = 3 + 4 *(8 * (4 - ( 9 + 3) /6)); //67 int b = 4 * 3 * 5 + 8 * 4 * 2 - 5; //119 printf("\n El resultado de 3 + 4 *(8 * (4 - ( 9 + 3) /6)) es...: %d", a ); printf("\n\n El resultado de 4 * 3 * 5 + 8 * 4 * 2 - 5 es........: %d", b ); return 0; }
4 * 3 * 5 + 8 * 4 * 2 - 5
4 * 3 = 12 12 * 5 = 60
8 * 4 = 32 32 * 2 = 64
64 + 60 = 124
124 – 5 = 119
Pero la primera ni hay logro plasmar los pasos, bueno espero como siempre que me ayuden a descifrar el enigma que me tiene bastante ocupado.- Por otro lado, quisiera saber si les parece muy difícil hacer un programa para emular el compilador, o sea, mostrar paso a paso la fórmula para llegar al resultado final, alguien lo hizo alguna vez.- Saludos. Daniel
|
|
|
334
|
Programación / Programación C/C++ / Re: Descomponer un numero entero en lenguaje C.
|
en: 1 Abril 2014, 20:49 pm
|
Hola a todos. fgets - 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.- unsigned int descartar=0, numeroFinal=0, i=0, ok=0, longitud=11; char digitos[12] = {'\0'}, cualDescartar[3] = {'\0'};
fgets(digitos , longitud , stdin );
Para dejarlo en mi caso del todo claro, ¿esta es la manera correcta de declarar el array y fgets(longitud) para capturar un máximo de 10 dígitos? Saludos. Daniel
|
|
|
335
|
Programación / Programación C/C++ / Re: Descomponer un numero entero en lenguaje C.
|
en: 1 Abril 2014, 20:09 pm
|
Hola Ivancea99.- Bueno no tengo nada para agregar es tal cual como dice leo, me pasa exactamente lo mismo. EDITO: Sin intercambiar los char, sólo con declarar cualDescartar con dimensión mayor de 2 funciona Me gustó, funciona correctamente de esta manera, espero que a alguien más le pase lo mismo para que entre todos encontremos la explicación.- Saludos. Daniel
|
|
|
337
|
Programación / Programación C/C++ / Re: Descomponer un numero entero en lenguaje C.
|
en: 1 Abril 2014, 19:23 pm
|
Hola a todos y que tengan un muy buen día.- Muchas gracias eferion por la orientación, ahora el caso es que funciona pero me queda una duda que me ha hecho practicar todo un día y tuve que hacer algo muy rebuscado porque de lo contrario me desaparecía el contenido de la variable digitos, si lo desean pueden correrlo sin la variable _digitos y con ella para ver lo que pasa, por favor si alguien encuentra el porqué le agradecería me lo diga para no dar esto por terminado y desconocer el error.- #include <stdio.h> #include <stdlib.h> #include <limits.h> #include <string.h> int verifica(char ingreso[], int ok, int longitud, int maxDescartar); int main(){ unsigned int descartar=0, numeroFinal=0, i=0, ok=0, longitud=11; char digitos[12] = {'\0'}, _digitos[12] = {'\0'}, cualDescartar[2] = {'\0'}; printf("\n ---------- Programa que descompone un numero entero sin signo ----------"); do{ ok=0; printf("\n\n Ingrece un numero entero sin signo [minimo 100 maximo %u].........: ", UINT_MAX ); fgets(digitos , longitud , stdin ); ok = verifica(digitos, ok, longitud, i); }while(ok); for(; digitos[i] != NULL; i++){ printf(" [%d] = %c \n", i , digitos [i ]); } do{ longitud=2; ok=0; printf("\n\n Indique con un entero sin signo del [0] al [%d] que numero desea descartar..: ", i -1); fgets(cualDescartar , longitud , stdin ); ok = verifica(cualDescartar, ok, longitud, i); }while(ok); descartar = atoi(cualDescartar ); for(i=descartar; digitos[i] != NULL; i++){ digitos[i] = digitos[i+1]; } numeroFinal = atoi(digitos ); printf("\n\n El numero final es = %d", numeroFinal ); return 0; } int verifica(char ingreso[], int ok, int longitud, int maxDescartar){ long long temp=0, auxiliar=0; int ch=0, i=0, ingresoInt=0; char *p=NULL; if((p =strchr(ingreso , '\n'))){ *p='\0'; } else{ ingreso[longitud] = '\0'; while((ch = getchar()) !='\n' && ch !=EOF ); } for(; ingreso[i] != NULL; i++){ if(ingreso[i] <= 47 || ingreso[i] >= 58){ ok=1; return ok; } } if(longitud == 11){ for(i=0; ingreso[i] != NULL; i++){ auxiliar = ingreso[i] - 48; temp=10*temp+auxiliar; } if(temp <= 99 || temp > UINT_MAX){ ok=1; return ok; } } else{ ingresoInt = atoi(ingreso ); if(ingresoInt > maxDescartar){ ok=1; return ok; } } return ok; }
Saludos. Daniel
|
|
|
338
|
Programación / Programación C/C++ / Descomponer un numero entero en lenguaje C.
|
en: 31 Marzo 2014, 16:00 pm
|
Hola a todos y que tengan un muy buen dia. Lenguaje………………....: “C” Sistema operativo……: Windows XP Compilador……………...: MinGW Problema………………...: No puedo concluir el programa porque no logro mover asía la izquierda los dígitos restantes e insertar el ‘\0’.- Error………………………...: Ninguno. Otras Observaciones: Para todo aquellos que tengan mucho tiempo, me podrían indicar que debo cambiar para obtimizarlo . Código……………………..:#include <stdio.h> #include <stdlib.h> #include <limits.h> #include <string.h> int verifica(char ingreso[], int ok, int longitud, int maxDescartar); int main(){ unsigned int descartar=0, numeroFinal=0, i=0, ok=0, longitud=11; char digitos[12] = {'\0'}, cualDescartar[2] = {'\0'}; printf("\n ---------- Programa que descompone un numero entero sin signo ----------"); do{ ok=0; printf("\n\n Ingrece un numero entero sin signo [minimo 100 maximo %u].........: ", UINT_MAX ); fgets(digitos , longitud , stdin ); ok = verifica(digitos, ok, longitud, i); }while(ok); for(; digitos[i] != NULL; i++){ printf(" [%d] = %c \n", i , digitos [i ]); } do{ longitud=2; ok=0; printf("\n\n Indique con un entero sin signo del [0] al [%d] que numero desea descartar..: ", i -1); fgets(cualDescartar , longitud , stdin ); ok = verifica(cualDescartar, ok, longitud, i); }while(ok); descartar = atoi(cualDescartar ); //En este lugar va lo que me falta... return 0; } int verifica(char ingreso[], int ok, int longitud, int maxDescartar){ long long temp=0, auxiliar=0; int ch=0, i=0, ingresoInt=0; char *p=NULL; if((p =strchr(ingreso , '\n'))){ *p='\0'; } else{ ingreso[longitud] = '\0'; while((ch = getchar()) !='\n' && ch !=EOF ); } for(; ingreso[i] != NULL; i++){ if(ingreso[i] <= 47 || ingreso[i] >= 58){ ok=1; return ok; } } if(longitud == 11){ for(i=0; ingreso[i] != NULL; i++){ auxiliar = ingreso[i] - 48; temp=10*temp+auxiliar; } if(temp <= 99 || temp > UINT_MAX){ ok=1; return ok; } } else{ ingresoInt = atoi(ingreso ); if(ingresoInt > maxDescartar){ ok=1; return ok; } } return ok; } /* sprintf(digitos, "%d", 56789); */
Saludos y muchas pero muchas gracias por el tiempo dedicado a este tema.- Daniel
|
|
|
339
|
Programación / Programación C/C++ / Re: Operadores a nivel de bits (lenguaje C).
|
en: 20 Marzo 2014, 20:39 pm
|
Hola a todos. Se que dijiste que ibas a investigar todo esto, y deseo que lo hagas pero no me costaba nada dedicar 5 minutos a aclarar unas cosas que te hubieran demandado quiźa 2 horas (y así usas esas 2 horas en investigar otros temas No te das una idea lo que se estima estas frases cuando uno tiene 62 años y a nadie al alcance para pedir ayuda, lo digo más que nada por la seguridad que brinda el hecho de saber que podes levantar el tubo y tener la respuesta a tú duda o mandar un mail y del otro lado contar con un amigo que tiene todas las respuestas a tus inquietudes, bueno por algo será, por lo menos cuento con Uds.- Gracias eferion y a vos rir3760 por la participación, en cuanto a este tema para mí lo podemos dar por solucionado.- Saludos. Daniel
|
|
|
340
|
Programación / Programación C/C++ / Re: Operadores a nivel de bits (lenguaje C).
|
en: 19 Marzo 2014, 13:59 pm
|
Hola a todos. Como siempre en este foro la ayuda es muy abundante y esmerada, con los últimos 2 post me queda bien claro como imprimir un número en binario, que es en definitiva lo que quería aprender.- En definitiva voy a tratar de interpretar el código de rir3760, voy a correrlo, pero de principio no entiendo que valores arrojan size_t i y size_t j y para que el doble for, ya me pongo a buscar información.-
Saludos. Daniel
|
|
|
|
|
|
|