|
831
|
Programación / Programación C/C++ / Re: necesito darle valores a esta matriz y que me de un resultado ayuda porfa
|
en: 8 Mayo 2013, 19:25 pm
|
Lo primero es lo primero, antes de empezar la eliminación gaussiana darle "contenido" a la matriz a[fil]col[]:for (i=0;i<fil;i++){ for (j=0;j<col;j++) { printf("a[%d][%d]= ",i+;1,j+1); scanf (" %lf",a[i][j]) } }
Lo segundo es lo de casi siempre, para poner código clickea en donde pone GeSHi y seleccionas C++, aunque sea el código en C, así sale coloreado, y en medio de las etiquetas que aparecen "pegas" tu código. Si te fijas en el que has puesto hay partes de la matriz que no aparecen, por no poner las mencionadas etiquetas.Y después de "rellenar" la matriz y, antes de empezar con Gauss, revisa los índices de los for que tienes puestos, están mal y sin inicializar y comentas los "nuevos" problemas que tengas, pero cuelga el código entre etiquetas code.
Saluditos!. ....
|
|
|
832
|
Programación / Programación C/C++ / Re: Problema con una funcion
|
en: 8 Mayo 2013, 19:02 pm
|
Problema con el buffer, que en este caso se soluciona dejando un espacio en blanco en los scanf. Esto me da como salida: MENU 1...Para los dias de la semana 2...SALIR Ingrese su opcion y presione enter: 1 Ingrese la inicial del dia: s El dia de la semana que le corresponde es el 7 MENU 1...Para los dias de la semana 2...SALIR Ingrese su opcion y presione enter: 1 Ingrese la inicial del dia: d El dia de la semana que le corresponde es el 1 MENU 1...Para los dias de la semana 2...SALIR
Y el código con los espacios puestos://Ultimo Programa de funciones #include <stdio.h> #include <conio.h> //Prototipos int menu(void); int semana(char); //Programa Principal int main() { int opcion; char dia; float valor; while((opcion=menu())!=2) { switch(opcion) { case 1: clrscr(); printf("\nIngrese la inicial del dia: "); scanf(" %c",&dia); printf("\nEl dia de la semana que le corresponde es el %d",semana(dia)); break; } return 0; } } //Funciones int menu(void) { int opc; clrscr(); printf("\t\t\tMENU"); printf("\n1...Para los dias de la semana"); printf("\n2...SALIR"); do { printf("\n\nIngrese su opcion y presione enter: "); scanf(" %d",&opc); if(opc<1 || opc>2) { printf("\nHa ingresado un valor incorrecto!!!"); getch(); } }while(opc<1 || opc>2); return opc; } int semana(char fdia) { int fndia; switch(fdia) { case 'd': fndia=1; break; case 'l': fndia=2; break; case 'm': fndia=3; break; case 'M': fndia=4; break; case 'j': fndia=5; break; case 'v': fndia=6; break; case 's': fndia=7; break; } return fndia; }
Saluditos!. ....
|
|
|
833
|
Programación / Programación C/C++ / Re: Les presento mi calculadora de ncr!!!(ahora si que si!!!)
|
en: 8 Mayo 2013, 14:39 pm
|
[Recopilatorio] Sources interesanteshola, se preguntarán alguno que diablos es ncr, bueno mas especificamente es una parte del Teorema del binomio. Mas especificamente es: Entonces como en mis ratos libres y de oseo aprendo C, y dado que no tengo para comprarme una calculadora de esas Casio y que solo tengo una de esas chinas o japonesas, en fin, me hice mi propia calculadora para eso que entrega detalladamente los resultados para comprobarlos(si quieren a mano)... .................................................. El uso de los factoriales para el cálculo de los números combinatorios tiene el inconveniente de su tamaño, desbordan las posibilidades de C/C++ desde 14 o 15. Una muestra de la salida de tu código: Ingrese n y k: 16 14 n! = 2004189184 k! = 1278945280 (n - k)! = 2 k! * (n - k)! = -1737076736 n! / [k! (n - k)!] = -1 -------------------------- Resultado final (ncr): -1
Decepcionante, ¿verdad?.
Para evitarlo existe otra forma de calcular los números combinatorios que técnicamente consiste en dividir las variaciones de n tomados de p en p entre las permutaciones de p. Vamos que con un ejemplo se ve que es más fácil de lo que parece:
Combinaciones(15,4)= 15/4 * 14/3 * 13/2 * 12/1.
Y aún así se puede mejorar la eficiencia del cálculo. Por ejemplo:
Combinaciones(15,12)=15/12*14/11*13/10*12/9*11/8*10/7*.....
Muy largo, ¿verdad?. Pero eso se puede remediar aprovechado una propiedad de los números combinatorios que establece que :
Combinaciones(n,p)=Combinaciones(n,n-p)
Y aplicada al caso último daría:
Combinaciones(15,12)=Combinaciones(15,3)=15/3 *14/2 *13/1
Mucho más breve que el anterior método.
Así, aprovechando estas dos propiedades, la primera para cuando es inferior a la mitad de n y la segunda para cuando es superior surge el código mágico que te permitirá "meter" de exponente 20 y más sin problemas de que el C/C++ "cruja" soltando números "raros" porque se salen de sus capacidades:#include <stdio.h> #include <stdlib.h> int comb(int n,int p) { int i; if (n < 0 || p < 0 || p > n) return 0; float c = 1; if (p>n/2) p=n-p; for ( p; p>=1; p--,n--) c*= (float)n/p; return (int)c; } int main() { int n, p, num , y; while (1){ printf("\n\nIngrese n (0 para SALIR): " ); if (n==0) break; fflush( stdout); scanf(" %d", &n); printf("\nIngrese p : " ); fflush( stdout); scanf(" %d", &p); printf("\ncombinaciones(%d,%d)= %d",n,p,comb(n,p)); fflush( stdout); } return 0; }
Y ahora puedo meter números más grandes:Ingrese n (0 para SALIR): 40 Ingrese p : 35 combinaciones(40,35)= 658008 Ingrese n (0 para SALIR): 35 Ingrese p : 12 combinaciones(35,12)= 834451776
Saluditos!. ... P.D: Más en http://foro.elhacker.net/programacion_cc/teorema_binomial-t388312.0.html
|
|
|
834
|
Programación / Programación C/C++ / Re: revienme este programa me da error en la variable del nombre de la clase
|
en: 7 Mayo 2013, 22:35 pm
|
yo hago como se me vienen las ideas q es no a lo lo y para el de la imgen del leon yo soy honesto nunca hables de alguien sin conocerlo xq t puedes llevar un castigo
El de la imagen del "LEÓN" no te deja nunca colgado, al final siempre creo que las cosas las haces con mucha voluntad. Pero en serio, lee antes un buen manual de C++ o fíjate en los "muchos" códigos que te hemos pasado ya.
Como no se entiende bien lo qie quieres, sigo el juego de adivinar y esto te puede servir de orientación:#include <iostream> #include<cstdlib> #include <cmath> using namespace std; int main() { int op; float radio,area, longitud; while(1){ cout<<"introduzca una opcion: 1->Area, 2->Volumen, 0->Salir: "; cin>>op; if (op==0) return 0; cout<<"introduzca el Radio:"; cin>>radio; if(op==1) cout<<"Area= "<<4*3.1415*pow(radio,2)<<endl; else if (op==2) cout<<"Volumen= "<<4*3.1415*pow(radio,3)/3<<endl; else cout<<"Opcion erronea. Vuelva a intentarlo"<<endl; } }
Y conste que todo lo que te digo es en plan de buen rollo, amigo carrlos.Saluditos!. .... P.D:Paso ya de los castigos. .....
|
|
|
835
|
Programación / Programación C/C++ / Re: revienme este programa me da error en la variable del nombre de la clase
|
en: 7 Mayo 2013, 22:04 pm
|
¿Haces caso de algo de lo que se te dice?
Ni debroma, él sigue ese método de códigos estrámboticos para que acabemos haciéndole la tarea. Sólo el ver como coloca las librerías da.... pena. Pero en fin, él es así. Si fuera más sincero no se llevaría las reprimendas que le estoy dedicando, aunque al final soy uno de los tontos que le acaba haciendo la tarea. Y además siempre actúa de la misma forma, abre un primer tema donde sabe que va a "recibir" y luego vuelve y abre otro tema pero con lo mismo.
Saluditos!. ......
|
|
|
837
|
Programación / Programación C/C++ / Re: me podrian revisar estos programas
|
en: 7 Mayo 2013, 20:52 pm
|
si ya lo que pasa es que la puse en el main y no e el encabezada del programa
Ejem ......, después de 89 post que llevas ya deberías al menos saber usar las librerías básicas y dónde ponerlas.
Y respecto al código que has posteado aquí, como los demás, insisto que es inconexo, sin sentido aparente.
"Intuyo" que quieres saber el área de un círculo, cosa que será a partir del radio del mismo que debes entrar como dato y como pones la librería math haciendo uso de la misma, cosa que en este caso estaría de más . Y puestos a hacer adivinanzas, por el if que pones con opcion==1 adivino que querrás calcular otra cosa, y no se me ocurre otra que la longitud de la circunferencia del círculo. Pero eso, son meras especulaciones o adivinanzas. Si estuviera en lo cierto a lo mejor lo que sigue te sirve:#include <iostream> #include<cstdlib> #include <cmath> using namespace std; int main() { int op; float radio,area, longitud; while(1){ cout<<"introduzca una opcion: 1->Area, 2->Longitud, 0->Salir: "; cin>>op; if (op==0) return 0; cout<<"introduzca el Radio:"; cin>>radio; if(op==1) cout<<"Area= "<<3.1415*pow(radio,2)<<endl; else if (op==2) cout<<"Longitud= "<<2*3.1415*radio<<endl; else cout<<"Opcion erronea. Vuelva a intentarlo"<<endl; } }
Es elemental, pero es lo que "destila" de tus comentarios. Procura ser al menos concreto con el objetivo del código, ya que en el mismo no lo eres.
Saluditos!. ....
|
|
|
838
|
Programación / Programación C/C++ / Re: Time.h [HELP]
|
en: 7 Mayo 2013, 19:47 pm
|
Hola a todos compañeros!
Bueno...como siempre me surgen dudas y esta vez está referida al uso de la función time().
Quisiera poder obtener la hora del sistema y almacenarla en un archivo .txt pero cuando la intento sacar me devuelve un número ENORME que para mí no tiene sentido alguno.
Para que conste, lo primero que deberías es colgar el código o trozo donde podamos averiguar el posible error. No somos adivinos.
Para que no te vuelvas loco buscando ejemplos, te dejo un cronómetro simple De ahí podrás sacar conclusiones en cuanto a las variables para guardar el tiempo:#include <stdio.h> #include <time.h> #include <windows.h> struct tm *tiempo; time_t t; void cronometro(void); int main(void) { cronometro(); return 0; } void cronometro(void) { int hora,minuto,limite,segundo; t=time(NULL); tiempo = localtime(&t); limite=tiempo->tm_min+2; while(1) { Sleep (1000); t=time(NULL); tiempo = localtime(&t); hora=tiempo->tm_hour; minuto=tiempo->tm_min; segundo=tiempo->tm_sec; printf("%d:%d:%d\r",hora,minuto,segundo); } }
Saluditos!. .....
|
|
|
|
|
|
|