Saludos,
Me gustaría saber (si alguien me puede echar una mano) en como determinar que imprima ciertos carácteres. Por ejemplo:
#define MIN 0
#define MAX 10
void uno() {
int i=0;
for(i=MIN; i<MAX; i++) {
printf("%c\n", i);
}
}
Esto imprimiria el valor de i de 0 a 9 de la tabla ascii (Esto son caracteres de control).Me interesa el algoritmo.
¿Cómo debería hacer para que imprimiera de 0 a 2 y de 6 a 9? ¿Es sencillo o estoy intentando subir peldaños demasiado rápido?
Gracias de antemano.
Haces dos bucles uno del 0 al 2 y el otro del 6 al 9?
Gracias, ahora lo veo claro.
Y gracias por su rápida respuesta.
for(i=MIN; i<MAX; i++) {
for(j=MIN2; j<MAX2; j++){
printf("%c\n%c\n", i,j);
}
}
Ahora veo que así planteado no es la solución.Imprimiría 0,6,0,7 ..
¿O entendí mal?
Yo tenía pensado, de 0 a 9, si "i" es menor a 3 y mayor a 5, imprimir caracter...
¿Podría ser algo así?
Cita de: Jaes en 5 Noviembre 2012, 04:53 AM
Y gracias por su rápida respuesta.
for(i=MIN; i<MAX; i++) {
for(j=MIN2; j<MAX2; j++){
printf("%c\n%c\n", i,j);
}
}
Ahora veo que así planteado no es la solución.Imprimiría 0,6,0,7 ..
¿O entendí mal?
Yo tenía pensado, de 0 a 9, si "i" es menor a 3 y mayor a 5, imprimir caracter...
¿Podría ser algo así?
Ahí no se sabe que es MIN2 y MAX2
De todas formas es mejor dos bucles separados que hacer un bucle con 10 comparaciones cuando sabes que de 3 a 5 no quieres hacer nada.
¿Esto debería funcionar?
Para probar el código pongo valores que si imprimira
for(i=48; i<91; i++) {
if ((i>=48)&&(i<58)&&(i>=65)&&(i<91)){
printf("%c\n", i);
}
}
¿Esto debería funcionar? no me imprime nada.
Para que funcione hay que cambiar el AND logico del medio por un OR logico, de esta manera imprimira
el numero si este es >= 48 Y < 58 O >= 65 Y < 91
for(i=48; i<91; i++) {
if (((i>=48)&&(i<58)) || ((i>=65)&&(i<91)))
printf("%d\n", i);
}
Saludos!
Cita de: Jaes en 5 Noviembre 2012, 03:32 AM
¿Cómo debería hacer para que imprimiera de 0 a 2 y de 6 a 9? ¿Es sencillo o estoy intentando subir peldaños demasiado rápido?
Para que lo veas mejor he puesto a imprimir enteros:#include <stdio.h>
void uno(int MIN, int MAX) ;
void uno(int MIN, int MAX) {
int i;
for(i=MIN; i<=MAX; i++) {
printf("%d ", i);
}
}
int main(){
int MIN1 =0,MAX1 =2,MIN2=6,MAX2= 9;
uno(MIN1,MAX1);
puts("\n");
uno(MIN2,MAX2);
return 0;
}
Saludos!.
Muchas gracias por responder.
Como proponía NaderST el Código de Leonsansan funciona a la perfección. Pero me voy a quedar con el de Hrlash.
Gracias por esta bienvenida tan luminosa.
Mi agradecimiento más sincero por la ayuda recibida,
El problema del ciclo de HRSLASH es la comprobación del if en cada ciclo. El código es correcto y si tu pregunta era como saltar esos números pues con el if perfecto.
En este caso el testeo del if no importa demasiado porque son 43 iteraciones del for, pero si tuvieras 5 millones de iteraciones sí tendría más importancia.
CitarSin iteraciones, sólo tienes que poner en MIN y MAX los valores que deseas imprimir, por ejemplo:
#include <stdio.h>
void uno(int MIN, int MAX) ;
void uno(int MIN, int MAX) {
int i;
for(i=MIN; i<=MAX; i++) {
printf("%c ", i);
}
}
int main(){
int MIN1 =48,MAX1 =57,MIN2=65,MAX2= 90;
uno(MIN1,MAX1);
puts("\n");
uno(MIN2,MAX2);
return 0;
}
Saludos!.
void dos() {
int i=0;
int j=0;
for(i=48; i<127; i++) {
if (((i>=MIN)&&(i<MAX))||((i>=MIN2)&&(i<MAX2)) ||(i>=MIN3)&& (i<MAX3)){
for(j=48; j<127; j++) {
if (((j>=MIN)&&(j<MAX))||((j>=MIN2)&&(j<MAX2)) ||(j>=MIN3)&& (j<MAX3)){
printf("%c%c\n", i, j);
}
}
}
}
}
Esto imprime todas las combinaciones de letras mayus/minus con números pero al compilar con gcc en la shell no puedo ver todos. ¿Esto tambien ocurre en el compilador de C en windows?
@Jaes también depende de la codificación que esté usando tu Shell. Estoy en Linux así que de momento no te puedo ayudar.
Cita de: Jaes en 6 Noviembre 2012, 19:26 PM
Esto imprime todas las combinaciones de letras mayus/minus con números
CitarPerdona mi observación, pero construir una función que lo haga todo no tiene como mucho sentido, para eso lo incluyes en la función main.
En el lado opuesto está mi función, que hace algo repetitivo y que puede ser invocada cada vez desde main. Fíjate en la simplicidad: un solo for y nigún if.
Con números, mayúsculas y minúsculas quedaría así:
#include <stdio.h>
void uno(int MIN, int MAX) ;
void uno(int MIN, int MAX) {
int i;
for(i=MIN; i<=MAX; i++) {
printf("%c ", i);
}
}
int main(){
int MIN1 =48,MAX1 =57,MIN2=65,MAX2= 90,MIN3=97,MAX3= 122;
uno(MIN1,MAX1);
puts("\n");
uno(MIN2,MAX2);
puts("\n");
uno(MIN3,MAX3);
return 0;
}
Saludos!.