Autor
|
Tema: que significa y como se llama printf("%4d",1); en c++ (Leído 12,690 veces)
|
minari02
Desconectado
Mensajes: 26
|
Hola que tal? bueno me pues no conozco como funciona ni como se llama esto ("%4d",1); y pues me gustaria saberlo. he buscado en internet sin embargo no he hallado nada, talvez no busco bien o como sea... bueno esto lo he sacado de este codigo: #include <stdio.h> #include <conio.h> void main() { int n,i,j; printf("Introduce el numero por favor: "); scanf("%d",&n); printf("%4d",1); for (i = 2;i <= n;i++) { j = 2; while ((j <= i) && (i % j != 0)) { j++; } if (i == j) printf("%4d",j); } getche(); }
podrían decirme como funciona esa misma parte dentro del código? Gracias.
|
|
|
En línea
|
|
|
|
minari02
Desconectado
Mensajes: 26
|
puede cambiar esto por esto obviamente inclui la libreria iostream y no hay ningun cambio en el funcionamiento sin embargo... aun asi no tengo idea para que es ese 1.
|
|
« Última modificación: 24 Diciembre 2013, 03:44 am por minari02 »
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
puede cambiar esto por esto obviamente inclui la libreria iostream y no hay ningun cambio en el funcionamiento sin embargo... aun asi no tengo idea para que es ese 1. Antes que nada cuando postees código elige las etiquetas GeSHi y toma la C++ y en medio de las etiquetas Code que aparecen "pegas" tu código. Al no hacerlo de esta manera parte del código no sale correcta, especialmente las matrices.El código es otra vez para generar números primos.
El printf("%4d",1) hace lo que dice, imprimir en un espacio de 4 a la izquierda(%4d) el número 1, mientras printf("%4d",j) hace lo propio con el número j.
Y respecto a lo de cout no sé si te estas haciendo la picha un lío, ya que cout se utiliza exclusivamente en C++, mientras printf se puede usar en C/C++, pero lo usual es que se use cout en C++ y printf en C.
Asimismo las librerías a usar se declaran diferentes en C que en C++. Por ejemplo en C podríamos tener <stdio.h> mientras en C++ sería <cstdio>. Es decir en C++ las librerías en general empiezan con <c-----> y en C son del tipo <----.h>.
Por la referencia que haces a iostream parece que programas en C++, sin embargo los códigos que has colgado son puramente C.
Otra cosa es el uso no deseable de la librería conio y su acólita función getch. Al respecto mírate el tema de Lo que no hay que hacer en C/C++. Nivel basico
Además la función main es de tipo int (int main) y al final del código lleva su correspondiente return 0 para ser breves.
Otra observación es que cuando el cuerpo de un if, while, for o similar se limite a una instrucción no hacen falta llaves.
Y por favor, acostúmbrate a indentar el código. Fíjate como de esa manera sale más claro:#include <stdio.h> int main() { int n,i,j; printf("Introduce el numero por favor: "); fflush (stdout); scanf("%d",&n); printf("%4d",1); for (i = 2;i <= n;i++){ j = 2; while (j <= i && i % j != 0) j++; if (i == j){ printf("%4d",j); fflush (stdout); } } return 0; }
Tr hablarçia de fflush pero creo que es pronto Saluditos! ..... !!!!
|
|
« Última modificación: 24 Diciembre 2013, 04:54 am por leosansan »
|
En línea
|
|
|
|
minari02
Desconectado
Mensajes: 26
|
mmm... muchas gracias por las recomendaciones,no sabia que habia que hacer eso antes de pegar el codigo, por cierto... ya he leído la parte de "que no hacer en C/C++ lo que pasa es que el código no es mio lo he encontrado en otra pagina, y pues... con respecto a que las librerías de C++ inician con una c antes pues... francamente no me lo han enseñado así... sin embargo pues... supongo que hay diferentes formas de hacerlo no? jeje... para serte franco no me ha quedado claro, te refieres a que imprime contando desde "j" cuatro números menos? por ejemplo entonces si "j" es un 10 imprimirá un 6?? por cierto la funion getch es para hacer una pausa verdad? pero... es necesario un equivalente aun?? yo no he usado eso y el programa siempre va bien. claro siempre colocando el return 0; al final. Gracias.
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
................................................................. para serte franco no me ha quedado claro, te refieres a que imprime contando desde "j" cuatro números menos? por ejemplo entonces si "j" es un 10 imprimirá un 6?? .............................
No, es que reserva cuatro espacios para imprimir el número j: " 6".Saluditos! ..... !!!!
|
|
|
En línea
|
|
|
|
minari02
Desconectado
Mensajes: 26
|
oh!! o sea que dejara cuatro espacios entre cada numero verdad? y el uno que esta al par... significa que empezara a contar de 1 no? y ese ultimo comando que pusiste fflush(stdout)
es para limpiar el buffer que deja la función printf
verdad? osea que limpia la memoria que dejo la función es algo asi? como se usa exactamente?
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
oh!! o sea que dejara cuatro espacios entre cada numero verdad? y el uno que esta al par... significa que empezara a contar de 1 no? y ese ultimo comando que pusiste fflush(stdout)
es para limpiar el buffer que deja la función printf
verdad? osea que limpia la memoria que dejo la función es algo asi? como se usa exactamente? Cuatro espacios para cada numero: 4, 12, 123,1234
El fflushh (stdout) se usa después de un print sin \n para enviar toda la información a la salida estándar, en este caso la pantalla. Generalmente se omite sin mayores problemas, pero es un detalle de seguridad el ponerlo.Saluditos! ..... !!!!
|
|
|
En línea
|
|
|
|
minari02
Desconectado
Mensajes: 26
|
Hola, al fin he entendido, lamento haberte molestado tanto jajaja tu me has dado este codigo: #include <stdio.h> int main() { int n,i,j; printf("Introduce el numero por favor: "); fflush (stdout); scanf("%d",&n); printf("%4d",1);//desjar una memoria reservada para introducir un numero de cuatro digitos y empezar a contar de 1// for (i = 2;i <= n;i++){//empezar desde 2 hasta que i sea menor o igual que "n" (numero introducido) incrementar 1// j = 2; while (j <= i && i % j != 0)//mientras j sea 2 y sea menor que o igual a i que t no sera 2 por //el incremento y que el resto de la divicion de entre "i" y "j" sea diferente a 0// j++; //hacer incremento en j; if (i == j){//si "i" es igual a "j" imprimir j. printf("%4d",j); fflush (stdout); } } return 0; }
el concepto de % (operador modulo) es que: al dividir dos numero enteros por ejemplo 25/4=5 y sobra 1, el resultado del que deseamos al hacer esto es ese 1 verdad? bueno basando en tu codigo yo lo he transcrito para comprenderlo mejor y lo deje asi mira: #include <iostream> using namespace std; int main() { int a,b,c; cout<<"introduce un numero: "<<endl; cin>>a; for(b = 2; b<=a; b++){//aqui se iniciara a contar desde el 2 como en la La criba de Eratóstenes solo que podria ser //asi for(b = 2; b <= 20; b++;(este seria el algritmo original lo vi ahi): http://es.wikipedia.org/wiki/Criba_de_Erat%C3%B3stenes c = 2; while(c<=b && b % c !=0 )//mientra c=2 y sea <= que c y el resto de la divicion de b/2 sea distinto de 0 c++;//hacer un incremento if(b==c){//si b es igual a c entonces imprimir c. cout<<" "<<c;//he dejado esto para que haya un espacio y que los numeros no esten todos pegados. } } return 0; }
basicamente al hacer b/c c=2 se dece que si se puede dividir entre 2 y el residuo no es cero es un numero primo verdad? ha! por cierto lo que esta entre parentesis puede cambiar, en que casos? cuando se usa la función tambien se usa? El codigo funciona genial, digo... introduje el 100000 y pues en menos de 20 sec se ejecuto. bueno dime en que hay fallas aunque dudo que haya pues solo he reescrito tu codigo jeje... Saludo.
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
Muy bien campeón, veo que al final ye has decantado por el C++.
Sólo un detalle, acostúmbrate a indentar o sangrar el código para su mejor lectura y/o revisión:#include <iostream> using namespace std; int main(){ int a,b,c; cout<<"introduce un numero: "<<endl; cin>>a; for(b = 2; b<=a; b++){//aqui se iniciara a contar desde el 2 como en la La criba de Eratóstenes solo que podria ser c = 2; //asi for(b = 2; b <= 20; b++;(este seria el algritmo original lo vi ahi): http://es.wikipedia.org/wiki/Criba_de_Erat%C3%B3stenes while(c<=b && b % c !=0 )//mientra c=2 y sea <= que c y el resto de la divicion de b/2 sea distinto de 0 c++;//hacer un incremento if(b==c){//si b es igual a c entonces imprimir c. cout<<" "<<c;//he dejado esto para que haya un espacio y que los numeros no esten todos pegados. } } return 0; }
Pero no es la criba de Eratosrenes. Es otro método.¡¡¡¡ Saluditos! ..... !!!!
|
|
« Última modificación: 25 Diciembre 2013, 04:20 am por leosansan »
|
En línea
|
|
|
|
minari02
Desconectado
Mensajes: 26
|
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
que significa "const" despues de la lista de parametros de la función?
Programación C/C++
|
<[(x)]>
|
4
|
6,104
|
24 Diciembre 2010, 23:27 pm
por joshka
|
|
|
recursos visual basic, """"""proceso inmortal"""""
Análisis y Diseño de Malware
|
Dark4ngel
|
7
|
14,158
|
3 Noviembre 2011, 10:42 am
por Dark4ngel
|
|
|
NASM Linux printf - scanf "undefined reference"
ASM
|
Leyer
|
5
|
9,100
|
7 Enero 2012, 20:32 pm
por Eternal Idol
|
|
|
El triunfo del "Youtuber" significa la caída de los servicios de vídeo de la ...
Noticias
|
wolfbcn
|
1
|
2,677
|
6 Diciembre 2013, 20:27 pm
por z3nth10n
|
|
|
[Resuelto] ¿Cómo se llama el "Theme" de Piccolo (DBZ)?
Foro Libre
|
Br1ant
|
3
|
3,028
|
4 Enero 2015, 00:37 am
por Br1ant
|
|