|
401
|
Programación / Programación C/C++ / Re: problema con la variable float
|
en: 2 Marzo 2014, 20:15 pm
|
Vamos, que le falta el using namespace st.#include <iostream> #include <conio.h> using namespace std; int main() { float num = 2.576; float num2 = 2.3; cout << num+num2 << endl; getch(); return 0; }
¡¡¡¡ Saluditos! ..... !!!!
|
|
|
402
|
Programación / Programación C/C++ / Re: [C] Rombo con asteriscos
|
en: 2 Marzo 2014, 20:02 pm
|
Siguiendo los pasos del "maestro==rir3760" por usar funciones que no quede:#include<stdio.h> #include <stdlib.h> int main() { int i,n; printf("\n\n"); printf("\nTama\xA4o de la mitad superior: \n"); scanf ("%d",&n); for(i=1;i<=n;i++) repetir (n-i,' ',2*i-1,'*'); for(i=n-1;i>=1;i--) repetir (n-i,' ',2*i-1,'*'); return EXIT_SUCCESS; } void repetir(int reps, char ch,int reps1, char ch1) { int j,k; printf("\t\t"); for (j = 1; j <=reps; j++) putchar(ch); for (k = 1; k <=reps1; k++) putchar(ch1); putchar('\n'); }
Ante el "otro" código, el del printf, tan solo mirar boquiabierto y, como siempre, aprender de sus aportaciones, todo un lujo para el foro.¡¡¡¡ Saluditos! ..... !!!!
|
|
|
403
|
Programación / Programación C/C++ / Re: [C] Rombo con asteriscos
|
en: 2 Marzo 2014, 18:36 pm
|
Sin más comentarios que los que te pongo en el código:#include<stdio.h> int main() { int n,i,j; printf("\nTama\xA4o de la mitad superior: \n"); scanf ("%d",&n); printf("\n\n"); for(i=1;i<=n;i++){ /** fijate que aqui i aumenta **/ printf("\t\t"); for(j=1;j<=n-i;j++)/** cada vez un espacio menos **/ printf(" "); for(j=1;j<=2*i-1;j++)/** cada vez dos "*" mas **/ printf("*"); /** despues de los espacios **/ printf("\n"); } for(i=n-1;i>=1;i--){ /** fijate que aqui i disminuye **/ printf("\t\t"); for(j=1;j<=n-i;j++)/** cada vez un espacio mas **/ printf(" "); for(j=1;j<=2*i-1;j++)/** cada vez dos "*" menos **/ printf("*"); /** despues de los espacios **/ printf("\n"); } return 0; }
¡¡¡¡ Saluditos! ..... !!!!
|
|
|
404
|
Programación / Programación C/C++ / Re: Problema con loop
|
en: 2 Marzo 2014, 18:01 pm
|
Como comentó tan certeramente rir3760, otra forma es con un array de longitud variable, una vez ingresado el número de palabras:#include <stdio.h> #include <stdlib.h> #define NUM_CHARS 128 int main(void) { int num_pals; int i; puts("Numero de productos:"); if (scanf("%d", &num_pals) != 1) return EXIT_FAILURE; while (getchar()!='\n'); char palabra[num_pals][NUM_CHARS]; for (i = 0; i < num_pals; i++){ printf("Nombre del producto no %d:\n", i + 1); scanf("%s", palabra[i]); } /* ... */ return EXIT_SUCCESS; }
En realidad el formato que ha usado rir3760 para el scanf tan sólo asegura que la entrada es un número.
Me explico:
* si introduces as canta error. * si introduces 12 todo O.K * Si introduces 12as por error el scanf toma el 12 y de paso se salta otro scanf porque en el llamado buffer o memoria intermedia queda el resto, en este caso la "as" que toma el siguiente scanf de forma automática. De ahí el uso del while para "limpiar" el buffer. Haz la prueba con él activado y desactivado y veras lo que sucede.
¿Qué habría entonces que hacer?. Sencillamente comprobar que la variable "num_pals" se corresponde con un entero y sólo un entero. Pero imagino que ya tendrás tiempo más adelante de ir viendo esos detallitos que parecen chorradas y que pueden arruinar un código que parecía impecable.
¡¡¡¡ Saluditos! ..... !!!!
|
|
|
405
|
Programación / Programación C/C++ / Re: problema al leer archivo
|
en: 2 Marzo 2014, 01:37 am
|
Saludos, tengo un archivo que tengo que leer e imprimir en pantalla y este archivo es bastante grande, el problema es que no lo imprime completo, pero si le empiezo a quitar lineas ya me lo imprime bien, lo que hace es que mientras mas lineas le agrego, en pantalla las lineas de al principio van desapareciendo, o sea me va cortando la parte de arriba para darle lugar a las lineas que voy agregando abajo,¿a que se debe esto y como puedo solucionarlo??
gracias
Una forma simple es cambiando en propiedades de la consola el alto, que se encuentra en propiedades, y poner un número más alto. Tosco pero efectivo.
El otro recurso es leer por partes el documento.¡¡¡¡ Saluditos! ..... !!!!
|
|
|
406
|
Programación / Programación C/C++ / Re: Problema contador en C
|
en: 2 Marzo 2014, 01:05 am
|
Exacto, por cada paso que da hacia bajo o hacia derecha/izquierda sumar 1
Pero para eso tiene que dar previamente un paso, no puedes ponerlo como algo suelto.
Aunque el código que cuelgas está verde, la verdad es que me ha resultado interesante, o más bien curioso, el ejercicio.
Así que he decidido madurarlo un poco. Tal y como está es funcional, pero muy mejorable, vamos que también está verde .... pero funciona. Ya te toca a ti mejorarlo un poco, al menos tienes una referencia de cómo atacarlo, una al menos.
Fíjate en el detalle de que el contador lo comienzo en dos, ya luego resto justamente dos. ¿Y porqué ese capricho?. Para que no salgan el cero y el uno y se confundan con los ceros y unos que ya habían en la matriz. Una picardía sin más.
Por cierto, no has dejado en la matriz inicial más que un camino, la columna 1, para recorrer el pinball si eliges a la derecha y llegar al final. Creo que deberías cambiar/disminuir los 1 o X.
Y una imagen de que furula:#include <stdio.h> int main() { int inicio,i,j,cont=0,flag=0; char direccion; int matriu[10][10]={ {0,0,0,0,0,0,0,0,0,0}, {0,1,0,0,1,0,0,0,1,0}, {0,1,0,1,0,0,0,1,0,0}, {0,1,0,0,0,0,1,0,0,0}, {0,0,0,0,0,0,0,0,0,1}, {0,1,1,1,1,0,0,0,1,0}, {0,0,0,0,0,0,0,1,0,0}, {0,0,0,0,0,0,1,0,0,0}, {0,0,0,0,0,1,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, }; do{ printf("\nIntroducir el numero de columna por el cual desea lanzar la primera bola (1-10): "); scanf("%d",&inicio); }while(inicio>=11); inicio--; do{ printf("\nEn caso de encontrarse con un obstaculo, en que direccion\n quiere que se dirija la bola, derecha (D-d) o izquierda (I-i): "); scanf(" %c", &direccion); }while(direccion!='D' && direccion!='d' && direccion!='I' && direccion!='i'); for(i=0;i<10;i++) { printf("\t\t"); for(j=0;j<10;j++) { if(matriu[i][j]==1) printf("X "); else printf(". "); } printf("\n"); } i=0,j=inicio,cont=2; matriu[i][j]=cont++; while(i<9){ if ((j==-1 || j==10) ){ puts("FIN ANTES DE TIEMPO"); flag=1; break; } else if (matriu[i+1][j]==0) matriu[++i][j]=cont++; else if (direccion=='D' || direccion=='d'&& matriu[i][j+1]==0 ) matriu[i][++j]=cont++; else if (direccion=='D' || direccion=='d'&& matriu[i][j+1]==1 ){ puts("FIN ANTES DE TIEMPO"); flag=1; break; } else if (direccion=='I' || direccion=='i' && matriu[i][j-1]==0) matriu[i][--j]=cont++; else if (direccion=='I' || direccion=='i' && matriu[i][j-1]==1){ puts("FIN ANTES DE TIEMPO"); flag=1; break; } } if (flag==0) puts("FINAL EXITOSO"); for(i=0;i<10;i++) { printf("\t\t"); for(j=0;j<10;j++) { if(matriu[i][j]==1) printf("X "); else if(matriu[i][j]==0 ) printf(". "); else printf("%d ",matriu[i][j]-2); } printf("\n"); } return 0; }
Mejora lo, es lo que me ha salido a bote pronto y a estas horas ya estoy de retirada.¡¡¡¡ Saluditos! ..... !!!!
|
|
|
408
|
Programación / Programación C/C++ / Re: Problema contador en C
|
en: 1 Marzo 2014, 20:17 pm
|
Cuando postees el 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.¡¡¡¡ Saluditos! ..... !!!!
|
|
|
409
|
Programación / Programación C/C++ / Re: problema con "hola mundo"
|
en: 28 Febrero 2014, 23:02 pm
|
............................................. PD: acostumbrate a usar las etiquetas GeSHi cuando escribas código en un foro para que sea más fácil de leer
Aunque las has usado mejor elige las de C++, así el código sale coloreado y es más fácil de seguir.¡¡¡¡ Saluditos! ..... !!!!
|
|
|
410
|
Programación / Programación C/C++ / Re: Bug en String.h y getline( Eternal Idol, Littlehorse alguien)que opinan?
|
en: 28 Febrero 2014, 21:46 pm
|
Para cuando postees el 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.Como ya te indicó do-while el problema está en un '\n' que queda en el bufffer. En este caso con un simple cin.get() te lo "comes".#include<iostream> #include<cstring> using namespace std; struct pro{ string codigo; string nombre; string descripcion; string laboratorio; double precio; double iva; int existencia; }; void leer(struct pro *apt) { double IVA = 0.16; double total; cout<<"Teclea el Codigo "<<endl; getline (cin,apt->codigo);///YA PASA POR AQUI cout<<"Nombre "<<endl; getline (cin,apt->nombre); cout<<"Descripcion: "<<endl; getline (cin,apt->descripcion); cout<<"Laboratorio: "<<endl; getline(cin,apt->laboratorio); cout<<"Precio: "<<endl; cin>>apt->precio; total=(apt->precio*IVA); apt->iva=total; cout<<"Cuantos hay en existencia"<<endl; cin>>apt->existencia; } void imprimir(struct pro *ap) { cout<<" CODIGO: "<<ap->codigo<<endl; cout<<" NOMBRE: "<<ap->nombre<<endl; cout<<" DESCRIPCION: "<<ap->descripcion<<endl; cout<<" LABORATORIO: "<<ap->laboratorio<<endl; cout<<" PRECIO: "<<ap->precio<<endl; cout<<" IVA: "<<ap->iva<<endl; cout<<" EXISTENCIA: "<<ap->existencia<<endl; } int main () { int n=0; pro * apt=0; cout<<"Numero de elementos"<<endl; cin>>n; cin.get();/// <== AQUI /// apt= new pro[n]; for(int i=0;i<n;i++) leer(&apt[i]); for(int j=0;j<n;j++) imprimir(&apt[j]); delete [] apt ; return 0; }
¡¡¡Que diferencia con las etiquetas Code!!!.¡¡¡¡ Saluditos! ..... !!!!
|
|
|
|
|
|
|