|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - droezva
Páginas: [1]
1
« en: Jueves 3 de Mayo de 2012, 16:34 »
Bueno no entendí, necesitas que el texto que va a encriptar o desencriptar se encuentre en un archivo
2
« en: Miércoles 2 de Mayo de 2012, 23:42 »
Bueno realmente es sencillo el utilizar los parametros para main en teoria cuando compilar tu programa se crea un archivo ejecutable *.EXE en windows ;D entonces desde consola o tambien conocido como simbolo de sistema puedes ejecutar es programa que se creo cuando compilastes y ejecutastes tu programa. bueno digamos que estamos en consola nosotros podemos escribir lo siguiente: c:\FECHA.EXE o c:\FECHA Entonces se ejecutara nuestro programa, ahora si nosotros queremos pasarle algunos datos iniciales a nuestro programa como en este caso que le podamos pasar un numero que sea el mes y otro que sea el año lo tendriamos que hacer asi: c:\FECHA 12 2012 o c:\FECHA.EXE 12 2012 pero para que en nuestro programa entienda que pasamos estos valores tendriamos que colocar ciertos parametros en la funcion main() asi: void main(int argc,char *argv[],char *ent[]) { }
Realmente los nombre pueden ser a tu gusto jejeje!! podrian ser asi: void main(int numeroDeParametro,char *valoresDeParametro[],char *variableEntorno[]) { }
ahora te explico que pasa en main cuando le colocas estos parametros y cuando pasas valores cuando ejecutas tu programa cuando llamas tu programa a ejecutar pasas los siguiente valores de esta forma c:\FECHA 12 2012 En main pasa lo siguiente en argv se asignan los valores que has pasado cuando llamastes a tu programa argv[0] tendra el valor de FECHA (siempre tendra el nombre del programa) argv[1] tendra el valor de 12 argv[2] tendra el valor de 2012 y en la variable argc tendra el valore de 3 si pasaras mas valores el valor de argc corresponderia siempre a los valores que pasastes + 1 que es el nombre del programa void main(int argc,char *argv[]) { // asi podemos hacer uso de estos valores int agno = atoi(argv [2]); }
bueno espero que te sirva la explicación y bueno se me ha acabado el tiempo pero te dejo el programa modificado saludos #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <ctype.h> char *meses[] = {"Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"}; int agnoBisiesto(int agno) { return !(agno%4) && (agno%100 || !(agno%400)); } int diaFecha(int dia, int mes, int agno) { //Algoritmo de Doomsday int modA[2][12]= {{0,3,3,6,1,4,6,2,5,0,3,5},{0,3,4,0,2,5,0,3,6,1,4,6}}; agno--; return ( (agno%7) + ((agno/4)-(3*(agno/100+1))/4) + modA[agnoBisiesto(agno+1)][mes-1] + dia%7 )%7; } int diaFinal(int mes, int agno) { int dias[] = {31,28 + agnoBisiesto(agno),31,30,31,30,31,31,30,31,30,31}; return dias[mes-1]; } void mostrarMes(int mes, int agno) { clrscr(); int diaSem = diaFecha(1,mes, agno); int ultimoDia = diaFinal(mes, agno); int x; printf("%s de %d\n",meses [mes -1],agno ); printf("Dom\tLun\tMar\tMie\tJue\tVie\tSab\n"); for(x = 0; x < diaSem; x++) //Imprime la tabulacion de los dias vacios inciales del Mes for(x = 1; x <= ultimoDia; x++) { if( !( ++diaSem % 7 ) )//si el modulo de diaSem despues de incrementar es 0 inicia en una nuea linea } //Por si te gusta reducir el codido :D //for(x = 0; x < diaSem; printf("\t"), x++); //for(x = 1; x <= ultimoDia; printf("%d%s",x++, (++diaSem % 7 ) ? "\t":"\n" ) ); } /* Funcion para evitar errores al ingresar un valor que no se un numero Se lee primero como cadena y despues se convierte a numero entero -> atoi si es numero es valido se convertira correctamente sino sera un cero */ int leerNum() { char valorTexto[4]; } int mesValido(int mes) { int valido = !(mes < 1 || mes > 12); if (!valido) printf("El %d no es un mes valido (1-12)\n",mes ); return valido; } int agnoValido(int agno) { int valido = !(agno < 1900); if (!valido) printf("El %d no es un agno valido (>=1900)\n",agno ); return valido; } void leerMesAgno(int *mes, int *agno) { printf("Ingrese el mes y agno para visualizarlo\n"); do{ *mes = leerNum(); if (mesValido(*mes)) break; }while(1); printf("Mes Seleccionado: %s(%d)\n",meses [*mes -1],*mes ); do{ *agno = leerNum(); if (agnoValido(*agno)) break; }while(1); } int continuar() { printf("\nDesea ver otro mes (s/n): "); } int main(int argc, char *arg[]) { int mes, agno, resp=1; if(argc==3) { clrscr(); printf("Mes: %d[%s] Agno: %d[%s]\n", mes ,arg [1],agno ,arg [2]); if( (mesValido(mes) && agnoValido(agno)) ) mostrarMes(mes, agno); else printf("Se esperaban 2 parametros: Mes(1-12) y Agno(>=1900)\nEn el Formato(mm yyyy)"); resp = continuar(); } while(resp) { clrscr(); leerMesAgno(&mes, &agno); mostrarMes(mes, agno); resp = continuar(); } }
3
« en: Sábado 28 de Abril de 2012, 21:26 »
Hola que tal, checate este codigo que tenia, lo modifique un poco. Utilizo el Algoritmo DoomsDay para obtener el dia de una fecha dada, con eso se puede saber que dia de la semana es el primer dia del mes que se quiere ver. se validan el mes y año y se imprimen los días del mes. bueno ahi dentro del codigo he colocado algunas explicaciones No dudes en preguntar, Saludos #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <ctype.h> char *meses[] = {"Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"}; int agnoBisiesto(int agno) { return !(agno%4) && (agno%100 || !(agno%400)); } int diaFecha(int dia, int mes, int agno) { //Algoritmo de Doomsday int modA[2][12]= {{0,3,3,6,1,4,6,2,5,0,3,5},{0,3,4,0,2,5,0,3,6,1,4,6}}; agno--; return ( (agno%7) + ((agno/4)-(3*(agno/100+1))/4) + modA[agnoBisiesto(agno+1)][mes-1] + dia%7 )%7; } int diaFinal(int mes, int agno) { int dias[] = {31,28 + agnoBisiesto(agno),31,30,31,30,31,31,30,31,30,31}; return dias[mes-1]; } void mostrarMes(int mes, int agno) { clrscr(); int diaSem = diaFecha(1,mes, agno); int ultimoDia = diaFinal(mes, agno); int x; printf("%s de %d\n",meses [mes -1],agno ); printf("Dom\tLun\tMar\tMie\tJue\tVie\tSab\n"); for(x = 0; x < diaSem; x++) //Imprime la tabulacion de los dias vacios inciales del Mes for(x = 1; x <= ultimoDia; x++) { if( !( ++diaSem % 7 ) )//si el modulo de diaSem despues de incrementar es 0 inicia en una nuea linea } //Por si te gusta reducir el codido :D //for(x = 0; x < diaSem; printf("\t"), x++); //for(x = 1; x <= ultimoDia; printf("%d%s",x++, (++diaSem % 7 ) ? "\t":"\n" ) ); } /* Funcion para evitar errores al ingresar un valor que no se un numero Se lee primero como cadena y despues se convierte a numero entero -> atoi si el numero es valido se convertira correctamente sino sera un cero */ int leerNum() { char valorTexto[4]; } void leerMesAgno(int *mes, int *agno) { printf("Ingrese el mes y agno para visualizarlo\n"); do{ *mes = leerNum(); if (*mes < 1 || *mes > 12) printf("Ingresa un mes valido\n"); else break; }while(1); printf("Mes Seleccionado: %s(%d)\n",meses [*mes -1],*mes ); do{ *agno = leerNum(); if (*agno < 1900) printf("Ingresa un Agno valido\n"); else break; }while(1); } void main() { int mes, agno, resp; do{ clrscr(); leerMesAgno(&mes, &agno); mostrarMes(mes, agno); printf("\nDesea ver otro mes (s/n): "); }while(resp!='n'); }
4
« en: Jueves 26 de Abril de 2012, 10:30 »
Hola!! Lo que tienes que hacer es extraer las variables de struct y practicamente quedaran como globales typedef int matriz[26][280]; struct registro { char name[30]; int color; int efecto; int fondo; int rellenoletra; int letra; int rellenofondo; char archivo[8]; } R; FILE *arch;
y deberan quedar asi typedef int matriz[26][280]; char name[30]; int color; int efecto; int fondo; int rellenoLetra; int letra; int rellenoFondo; char archivo[8]; FILE *arch;
donde utilices a R como aqui void nuevo(int x, int y) { char tecla; int pos,i; R.archivo[0]='\x0';
Solamente usaras archivo void nuevo(int x, int y) { char tecla; int pos,i; archivo[0]='\x0';
ahora el detalle es que como tus variables ya no estan dentro del struct y son practicamente individuales, entonces las tienes que ir guardando una por una dentro del archivo y de igual manera irlas leyendo, lo que muy bien se puede colocar dentro de unos procedimientos, y asi nada mas llamarlos cuando los necesites. void leerArchivo(FILE *arch) { fread(name ,sizeof(char),30,arch ); fread(&color ,sizeof(int),1,arch ); fread(&efecto ,sizeof(int),1,arch ); fread(&fondo ,sizeof(int),1,arch ); fread(&rellenoLetra ,sizeof(int),1,arch ); fread(&letra ,sizeof(int),1,arch ); fread(&rellenoFondo ,sizeof(int),1,arch ); fread(archivo ,sizeof(char),8,arch ); } void escribirArchivo(FILE *arch) { fwrite(name ,sizeof(char),30,arch ); fwrite(&color ,sizeof(int),1,arch ); fwrite(&efecto ,sizeof(int),1,arch ); fwrite(&fondo ,sizeof(int),1,arch ); fwrite(&rellenoLetra ,sizeof(int),1,arch ); fwrite(&letra ,sizeof(int),1,arch ); fwrite(&rellenoFondo ,sizeof(int),1,arch ); fwrite(archivo ,sizeof(char),8,arch ); }
si anteriormente tendias que hacer esto void guardar() { arch =fopen(R. archivo,"a+"); fwrite(&R ,sizeof(struct registro ),1,arch ); }
ahora tendras que hacer esto void guardar() { arch =fopen(archivo ,"a+"); escribirArchivo(arch); }
Saludos Espero y te sirva, va el archivo adjunto Modificado
5
« en: Domingo 22 de Abril de 2012, 06:46 »
Hola que tal, pues al parece no tiene ningún problema tal vez el detalle se da como se crea el contenido de tus dataGrid bueno hay te dejo un ejemplo que hice tratando de ver cual era el problema practicamente es como el que tu comentas, al menos si me funcionó aunque pasaba lo que tu me dices hasta que rellene los datos de esta forma ;D espero que te sirva igual cargo los datos desde una Base de Datos. <%@ Page Language="C#" AutoEventWireup="True" %> <%@ Import Namespace="System.Data" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <script language="C#" runat="server"> ICollection CreateDataSource() { DataView dbv = (DataView)SqlDataSource.Select(DataSourceSelectArguments.Empty); DataTable dt = new DataTable(); DataRow dr; dt.Columns.Add(new DataColumn("StringValue", typeof(string))); for (int i = 0; i < dbv.Table.Rows.Count; i++) { dr = dt.NewRow(); dr[0] = dbv.Table.Rows[i][0]; dt.Rows.Add(dr); } return new DataView(dt); } void Page_Load(Object sender, EventArgs e) { if (!IsPostBack) { dataGrid1.DataSource = CreateDataSource(); dataGrid1.DataBind(); } } ArrayList Seleccionados() { ArrayList lista = new ArrayList(); DataGridItemCollection items = dataGrid1.Items; for (int i = 0; i < items.Count; i++) { CheckBox cb = (CheckBox)items[i].FindControl("checkboxSelect"); if ((cb != null) && cb.Checked) lista.Add( items[i].Cells[0].Text ); } return lista; } void SubmitBtn_Click(Object sender, EventArgs e) { ArrayList lista = Seleccionados(); string text = "Seleccionados:<br />"; for (int i = 0; i < lista.Count; i++) text += (lista[i] + "<br />"); Mensaje.Text = text; } </script> <head runat="server"> <title>CheckBox</title> </head> <body> <asp:SqlDataSource id="SqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ApplicationServices%>" SelectCommand="SELECT descripcion FROM datosGrid"> </asp:SqlDataSource> <form id="Formulario" runat="server"> <h3>Seleccionar Datos</h3> <table cellpadding="5"> <tr valign="top"> <td> <b>Datos</b> <asp:DataGrid id="dataGrid1" BorderWidth="1" AutoGenerateColumns="false" runat="server"> <HeaderStyle BackColor="#006699" /> <Columns> <asp:BoundColumn HeaderText="Item" DataField="StringValue"/> <asp:TemplateColumn HeaderText="Seleccion" > <ItemTemplate> <asp:CheckBox ID="checkboxSelect" runat="server" /> </ItemTemplate> </asp:TemplateColumn> </Columns> </asp:DataGrid> </td> </tr> </table> <asp:Button id="BotonEnviar" Text="Verificar" OnClick="SubmitBtn_Click" runat="server"/> </form> <asp:label id="Mensaje" runat="server"/> </body> </html>
Saludos
6
« en: Domingo 22 de Abril de 2012, 01:28 »
Efectivamente tiene algunos errores bueno ahí te dejo el código donde encontré los errores en comentario, en teoria ya funciona ;D #include <iostream.h> //Error tenias #include <iostream> #include <stdlib.h> int main() { char articulos[10][30]; int cantidades[10][3]; // Error Logico int cantidades[3][10]; debe ser int cantidades[10][3]; for(int i=0;i<10;i++) { cout<<"Ingrese el nombre del articulo Nº"<<i+1<<" : "; cin.getline(articulos[i],30); //Error se debia indicar la posision tenias cin.getline(articulos,30); cout<<"Ingrese la produccion en el primer turno : "; cin>>cantidades[i][0]; //Error tenias cantidades[0]; cout<<"Ingrese la produccion en el segundo turno : "; cin>>cantidades[i][1]; //Error tenias cantidades[1]; cout<<"Ingrese la produccion en el tercer turno : "; cin>>cantidades[i][2]; //Error tenias cantidades[2]; cin.ignore(); } int mayor=0,indmay=0; //total de produccion por articulo cout<<endl<<endl<<"******* Produccion por articulo ******"<<endl; for(i=0;i<10;i++){ // aqui habia un error que redeclaraba la variable i esta fue declara en tu anterior for cout<<"Articulo: "<<articulos[i]; // Error Logico indicaba el arreglo no a las posciciones del arreglo tenias cout<<"Articulo: "<<articulos; cout<<" Produccion total: "<<cantidades[i][0]+cantidades[i][1]+cantidades[i][2]<<endl; //este if detecta el articulo con mayor produccion, y se usará luego. if(mayor<cantidades[i][0]+cantidades[i][1]+cantidades[i][2]) { mayor=cantidades[i][0]+cantidades[i][1]+cantidades[i][2]; indmay=i; } cout<<endl; } cout<<endl<<endl<<"******* Produccion por turno ******"<<endl; //total de produccion por turno int suma; for(i=0;i<3;i++) { cout<<"Turno "<<i+1; suma=0; for(int j=0;j<10;j++) { suma=suma+cantidades[j][i]; } cout<<"Produccion total: "<<suma<<endl; cout<<endl; } cout<<endl<<endl<<"******* Articulo con mayor produccion ******"<<endl; //articulo con mayor produccion. cout<<"Articulo con mayor produccion: "<<articulos[indmay]<<endl; cout<<"Cantidad producida: "<<mayor<<endl; return 0; }
y de todos modos mejore un poco el codigo espero que te sirva saludos La idea es que las constantes serviran para ampliar el rango de productos asi como el de los Turnos sin necesidad de modificar el codigo tan solo con cambiar el valor a las constantes. #include <iostream.h> #include <conio.h> const MAX = 10; //Productos const MAX_T = 3; //Turnos int main() { char articulos[MAX][30]; int cantidades[MAX][MAX_T], totalXArticulos[MAX], sumaTurnos[MAX_T], indexMayor=0; for(int i = 0; i < MAX_T; sumaTurnos[i++]=0); // Inicializar en 0 a sumaTurnos for(i = 0; i < MAX; i++) { totalXArticulos[i] = 0; cout<<"Ingrese el nombre del articulo Nº "<<i+1<<" : "; cin.getline(articulos[i],30); for(int j = 0; j < MAX_T; j++) { cout<<"Ingrese la produccion del turno "<<j+1<<": "; cin>>cantidades[i][j]; sumaTurnos[j] += cantidades[i][j]; // suma[j] = suma[j] + cantidades[i][j]; totalXArticulos[i] += cantidades[i][j]; } if(totalXArticulos[i] > totalXArticulos[indexMayor]) indexMayor = i; cin.ignore(); clrscr(); } cout<<"*******Total de Produccion por articulo ******"<<endl; for(i = 0; i < MAX; i++) cout<<"Articulo: "<<articulos[i]<<" -> Produccion total: "<<totalXArticulos[i]<<endl; cout<<endl<<endl<<"******* Produccion por turno ******"<<endl; for(i = 0; i < MAX_T; i++) cout<<"Turno: "<<i+1<<" -> Produccion total: "<<sumaTurnos[i]<<endl; cout<<endl<<endl<<"******* Articulo con mayor produccion ******"<<endl; cout<<"Articulo con mayor produccion: "<<articulos[indexMayor]<<endl; cout<<"Cantidad producida: "<<totalXArticulos[indexMayor]<<endl; return 0; }
Saludos
7
« en: Martes 17 de Abril de 2012, 05:42 »
checate este proyecto que hice en donde desde la base de datos saco los formulario y los ligo a una opción de un menú, espero que te sirva este ejemplo jejeje esta en NetBeans 7 Saludos y cualquier cosa preguntas!!
8
« en: Lunes 9 de Abril de 2012, 07:10 »
Hola Saludos Bueno creo que se puede resolver asi: Utilizo la Clase "Class", para obtener la clase buscada utilizamos su método forName(String ClassName) el parámetro ClassName debe de llevar el nombre de la clase, lo que regresa el método forName es la clase segun el nombre que hemos dado, una vez teniendo la Clase podemos invocar el método llamado newInstance() que crea un nuevo objeto o nueva instancia de la clase y la podemos utilizar directamente o asignarlo a una variable, en tu caso ya sabemos que son Objetos que heredan de JFrame por lo que hacemos un cast. String formulario = "crearFrame.NewJFrame"; //crearFrame es el paquete y NewJFrame es el nombre de la clase ((JFrame) Class. forName(formulario ). newInstance()). setVisible(true);
ó String formulario = "crearFrame.NewJFrame"; frame.setVisible(true);
y así logramos llamar nuestro formulario dado su nombre mediante una String. Espero que te sirva, talvez algo tarde!! jejeje!! Código Completo package crearFrame; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JFrame; public class crearFrame { public static void main (String[] args ) { String formulario = "crearFrame.NewJFrame"; // este puede ser el campo de tu BD que contiene tu formulario try { ((JFrame) Class. forName(formulario ). newInstance()). setVisible(true); /*Asignandolo a una variable; JFrame frame = (JFrame) Class.forName(formulario).newInstance(); frame.setVisible(true); */ Logger. getLogger(crearFrame. class. getName()). log(Level. SEVERE, null, ex ); Logger. getLogger(crearFrame. class. getName()). log(Level. SEVERE, null, ex ); Logger. getLogger(crearFrame. class. getName()). log(Level. SEVERE, null, ex ); } } }
9
« en: Viernes 26 de Marzo de 2010, 19:12 »
Espero que te sirva: public class NewClass { public static void main (String args []) { // Tienes que inicializar cada uno de los elementos del arreglo en este caso con objetos de tipo ArratList // ya que al crear el arreglo de ArrayList cada elemento tiene null. for (int i=0;i<20;i++) // Aqui tenias a.add(new Integer(i)); // Ahi estabas accediendo al arreglo "a" y los arreglos no cuentan con un metodo add // tienes que acceder a cada elemento del arreglo a[i] para hacer uso del metodo add // de cada uno de los ArrayList del arreglo. for (int i=0;i<20;i++) for (int i=0;i<20;i++) } }
Ahi comentas cualquier duda.
10
« en: Viernes 26 de Marzo de 2010, 08:02 »
Hola te dejo la forma en que puedes contar las letras en un texto una vez que leiste el texto. queda asi: public class Ejercicio { public static void main (String a []) { String miTexto = "si jAva puede leer y contar cuandas letras ay en unA oracion"; System. out. println("El texto contiene "+ contar (miTexto, 'a', true) +" veces la letra a"); System. out. println("El texto contiene "+ contar (miTexto, 'a', false) +" veces la letra a"); System. out. println("El texto contiene "+ contar (miTexto, 'E', false) +" veces la letra E"); System. out. println("El texto contiene "+ contar (miTexto, 'e', true) +" veces la letra e"); } // texto: el texto donde de donde se contaran las letra // letra: letra a buscar para contar // distincion: definir si vamos a hacer diferencia entre Mayúscula y Minúscula public static int contar (String texto, Character letra, boolean distincion ) { //en si se utiliza una expresion regular para reemplazar todo letra diferente a la buscada por "" lo que hace que nada mas que las letra buscada // y de esa cadena optemos la longitud if(distincion) // si deseas que SI exista distincion entre mayúsculas y minúsculas return texto.replaceAll("[^"+letra+"]","").length(); else // si deseas que NO exista distincion entre mayúsculas y minúsculas return texto.toLowerCase().replaceAll("[^"+letra.toString().toLowerCase()+"]","").length(); } }
Espero que t sirva, culquier duda ahi Comentas!!!
11
« en: Sábado 6 de Marzo de 2010, 17:33 »
Hola Mira ahi te mando un ejemplo espero que te sirva!! Mira en el ejemplo tiene dos forma de resolver este problema: 1.- Mediante Lista independientes: 2.- Utilizando Arreglos de Componentes en este Caso List ( Recomendado ) Bueno espero que te sirva alguna duda, no dudes en preguntar Espero que te Sirva.
12
« en: Viernes 26 de Febrero de 2010, 07:50 »
Hola, pues bueno aqui te dejo la solución que encontre, la verdad no soy muy bueno en las cuestiones de matematicas y trigonometria pero es lo que mas o menos se, y por otra parte pues en C# no he programado realmente mucho nada mas lo que he leido. Pero lo he implementedo en java espero te sirva y de todos modos tambien lo escribi en C#(no es seguro que funcione ya que no tengo como compilarlo ) Supongo que necesitas algo asi : las / es la linea recta que une los dos puntos y los * son los puntos(x,y) que vas a calcular a distancias en incremento de 2. Y |.............. *(10,6) |............/ |........../*(x1,y1) distancia 4 |.. 8.54 / |......../*(x1,y1) distancia 2 |......./ | ..... *(2,3) | --------------------------------------- X import java.text.DecimalFormat; public class Main { public static void main (String[] args ) { double x1, x2, y1, y2, hipo, nuevaX, nuevaY, tan, nuevaDistancia ; final double DISTANCIA_INC = 2; int j = 1; x1 = 2; y1 = 3; //Coordenadas del 1er punto x2 = 10; y2 = 6; //Coordenadas del 2do punto hipo = Math. sqrt(Math. pow(x2 -x1, 2)+Math. pow(y2 -y1, 2)); //Calculo la distancia entre los dos puntos = hipotenusa tan = Math. atan((y2 -y1 )/(x2 -x1 )); // Radianes del Angulo Opuesto System. out. println("Punto Inicial-> x: " + x1 + " , y: " + y1 ); System. out. println("Punto Final-> x: " + x2 + ", y: " + y2 ); System. out. println("Distancia entro los Puntos: " + hipo ); System. out. println("Coordenas de (X,Y) de los puntos intermedios"); System. out. println("por la recta de los dos puntos desplanzandose cada " + DISTANCIA_INC + " unidades"); // La nuevaDistancia se ira incrementando en 2 unidades, simulando la construcción de un triangulo con una // hipotenusa de 2, 4, 6 hasta < a la distancia entre los dos puntos. for(nuevaDistancia = 0; nuevaDistancia < hipo; nuevaDistancia+=DISTANCIA_INC) { nuevaY = Math. sin(tan ) * nuevaDistancia + y1 ; // Calculo de la Y a la nuevaDistancia nuevaX = Math. cos(tan ) * nuevaDistancia + x1 ; // Calculo de la X a la nuevaDistancia // Asi obtenemos la nueva cordenada que pasa por la recta entre los dos punto System. out. println("(" + j ++ + ")"+" Distancia: " + nuevaDistancia + " | X: " + formato. format(nuevaX ) + " | Y: " + formato. format(nuevaY )); } //El ultimo punto lo mostramos directo System. out. println("(f) Distancia: " + hipo + " | X: " + x2 + " | Y: " + y2 ); } }
Salida del programa de JAVA: Punto Inicial-> x: 2.0 , y: 3.0 Punto Final-> x: 10.0, y: 6.0 Distancia entro los Puntos: 8.54400374531753 Coordenas de (X,Y) de los puntos intermedios por la recta de los dos puntos desplanzandose cada 2.0 unidades (1) Distancia: 0.0 | X: 2 | Y: 3 (2) Distancia: 2.0 | X: 3.87 | Y: 3.7 (3) Distancia: 4.0 | X: 5.75 | Y: 4.4 (4) Distancia: 6.0 | X: 7.62 | Y: 5.11 (5) Distancia: 8.0 | X: 9.49 | Y: 5.81 (f) Distancia: 8.54400374531753 | X: 10.0 | Y: 6.0
y en C# tal vez tenga errores es que no tengo para probarlo!! class calcular { public static main() { float x1, x2, y1, y2, hipo, nuevaX, nuevaY, tan, nuevaDistancia ; const float DISTANCIA_INC = 2; x1 = 2; y1 = 3; x2 = 10; y2 = 6; hipo = Math.Sqrt(Math.Pow(x2-x1,2)+Math.Pow(y2-y1,2)); tan = Math.atan((y2-y1)/(x2-x1)); Console.WriteLine("Punto Inicial-> x: {0}, y: {1}", x1, y1); Console.WriteLine("Punto Final-> x: {0}, y: {1}", x2, y2); Console.WriteLine("Coordenas de (X,Y) de los puntos intermedios"); Console.WriteLine("por la recta de los dos puntos desplanzandose cada {0} unidades", DISTANCIA_INC); Console.WriteLine(""); Console.WriteLine("Distancia: 0 | X: {0} | Y: {1}", x1, y1); for(nuevaDistancia = 0; nuevaDistancia < hipo; nuevaDistancia+=DISTANCIA_INC) { nuevaY = Math.sen(tan) * nuevaDistancia + y1; nuevaX = Math.cos(tan) * nuevaDistancia + x1; Console.WriteLine("Distancia: {0} | X: {1} | Y: {2}", i, nuevaX, nuevaY); } Console.WriteLine("Distancia: {0} | X: {1} | Y: {2}", hipo, x2, y2); } }
Pero Bueno Espero que te ayude y sirva para resolver el problema; en C# no lo he compilado no tengo con que, lo hice en Bloc de nota guiandome del que hice en JAVA con lo que he leido en C#.
13
« en: Viernes 26 de Febrero de 2010, 03:34 »
Bueno te dejo una explicación y el desarrollo de la solucion espero que te sirva /* Lo que te hiso falta fue utilizar el metodo para intercambiar valores entre dos variables sin perder ninguno de los dos, lo que hace es almacenar el valor de una de las variables en una variable temporal. Normalmente esto se ve en temas de Ordenamiento de Vectores y cosas asi. Ejemplo: temp = v[0]; v[0] = v[4]; v[4] = temp; Bueno si lo que se quiere es invertir la cadena que la vamos a tratar como un vector, analisando que el problema vemos que el primer elemento corresponde con el ultimo algo asi: cadena = "abcde"; |-----------| | |----| | [a][b][c][d][e] Intercambiando quedaria asi |-----------| | |----| | [e][d][c][b][a] Podemos ver que nada mas tenemos que hacer dos veces el procesos de intercambiar los valores. el a con e y el de b con d, puesto que c esta en el centro no hay que hacerlo. Observando esto determinamos que para invertir la cadena tenemos que hacer (n / 2) veces el intercambio, donde n es la longitud de la cadena. */ #include <stdio.h> #include <string.h> #define N 100 void main() { char cadena[N]; int i, mitad, lon=0; char *cad = NULL, temp; cad = cadena; mitad = lon / 2; for( i=0; i < mitad; i++) { temp = *(cad+i); *(cad+i) = *(cad+lon-1-i); *(cad+lon-1-i) = temp; } }
14
« en: Jueves 25 de Febrero de 2010, 03:46 »
Hola, pues aqui esta mi ayuda!! espero y te sirva y sea lo que necesitabas. Cualquier duda o comentario me comentas. 'Funcion para saber hacia donde se ordenaran los elementos de los vectores Function CondicionDireccion(v1 As Integer, v2 As Integer, D As String) As Boolean Dim R As Boolean If "ASC" = UCase(D) Then If v1 > v2 Then R = True Else R = False End If ElseIf "DES" = UCase(D) Then If v1 < v2 Then R = True Else R = False End If End If CondicionDireccion = R End Function 'los parametros son 'M as MSFlexGrid el componente donde se encuentra los datos 'FI as Integer es el valor de la fila donde inician los datos 'FF as Integer es el valor de la fila donde finalizan los datos 'CI as Integer es el valor de la columna donde inician los datos 'CI as Integer es el valor de la columna donde finaliza los datos 'Direccion as String es el valor que indica la direccion de Ordenamiento ASC o DES Sub OrdenarMatrix(M As MSFlexGrid, FI As Integer, FF As Integer, CI As Integer, CF As Integer, Direccion As String) Dim vector() As Integer Dim longVector As Integer longVector = ((FF - FI + 1) * (CF - CI + 1)) ReDim vector(longVector - 1) As Integer Dim index As Integer Dim temp As Integer 'Los datos de la matriz son ingresados a un vector mediante 'el recorrido fila columna index = 0 For i = FI To FF For j = CI To CF vector(index) = M.TextMatrix(i, j) index = index + 1 Next j Next i 'El vector es ordenado por medio del Método de la Burbuja For i = 0 To longVector - 2 For j = i + 1 To longVector - 1 If CondicionDireccion(vector(i), vector(j), Direccion) = True Then temp = vector(i) vector(i) = vector(j) vector(j) = temp End If Next j Next i 'El vector ya ordenado es vaciado a la matrix index = 0 For i = FI To FF For j = CI To CF M.TextMatrix(i, j) = vector(index) index = index + 1 Next j Next i End Sub Private Sub btnOrdenar_Click() OrdenarMatrix MSFlexGrid1, 0, 4, 0, 3, "ASC" OrdenarMatrix MSFlexGrid2, 0, 4, 0, 0, "DES" End Sub Private Sub Form_Load() MSFlexGrid1.TextMatrix(0, 0) = 5 MSFlexGrid1.TextMatrix(0, 1) = 8 MSFlexGrid1.TextMatrix(0, 2) = 4 MSFlexGrid1.TextMatrix(0, 3) = 13 MSFlexGrid1.TextMatrix(1, 0) = 21 MSFlexGrid1.TextMatrix(1, 1) = 53 MSFlexGrid1.TextMatrix(1, 2) = 90 MSFlexGrid1.TextMatrix(1, 3) = 9 MSFlexGrid1.TextMatrix(2, 0) = 2 MSFlexGrid1.TextMatrix(2, 1) = 1 MSFlexGrid1.TextMatrix(2, 2) = 0 MSFlexGrid1.TextMatrix(2, 3) = 57 MSFlexGrid1.TextMatrix(3, 0) = 56 MSFlexGrid1.TextMatrix(3, 1) = 7 MSFlexGrid1.TextMatrix(3, 2) = 20 MSFlexGrid1.TextMatrix(3, 3) = 18 MSFlexGrid1.TextMatrix(4, 0) = 10 MSFlexGrid1.TextMatrix(4, 1) = 15 MSFlexGrid1.TextMatrix(4, 2) = 27 MSFlexGrid1.TextMatrix(4, 3) = 34 MSFlexGrid2.TextMatrix(0, 0) = 8 MSFlexGrid2.TextMatrix(1, 0) = 6 MSFlexGrid2.TextMatrix(2, 0) = 20 MSFlexGrid2.TextMatrix(3, 0) = 11 MSFlexGrid2.TextMatrix(4, 0) = 5 End Sub
Nos vemos Exito. Ahi te adjunto el proyecto!!
15
« en: Miércoles 24 de Febrero de 2010, 09:58 »
Fijate que he estado viendo el problema nada mas que no entiendo como deseas ordenar la matriz, si deseas que cada columna quede ordenada o cada fila o que se ordenen los numeros segun lo muestras, si me explicas un poco mas te prodría ayudar!!
Saludos!!
16
« en: Miércoles 24 de Febrero de 2010, 09:44 »
Hola que tal, pues ya tenía rato que no programaba en Pascal pero me acorde de algunas cosillas!!! te dejo un ejemplo de validación que yo utilizaba. Este ejemplo es muy sencillo nada mas esta validado para capturar los digitos, la tecla de retroceso y el enter para indicar que terminamos de ingresar el numero, cabe mencionar que no saldra de la captura de numero hasta que se capture aunque sea un digito. Esta claro que se puede mejorar mucho más. pero bueno creo que te puede servir. uses crt; function leerNumero(longitud: integer): string; var numero : string; tecla : char; i,x,y : integer; begin x := whereX; y := whereY; numero := ''; i := 1; repeat tecla := readKey; case tecla of '0'..'9' : {Teclas del 0 al 9} if i <= longitud then begin numero := numero + tecla; i := i + 1; end; chr(8) : { Tecla de retroceso para borrar el ultimo digito} if i > 1 then begin i := i - 1; numero[i] := ' '; gotoxy(x,y); write(numero); numero := copy(numero,1,i-1); end end; gotoxy(x,y); write(numero); until ( tecla = chr(13) ) and ( length(numero) > 0 ); leerNumero := numero; end; var numeroTxt : string[20]; numeroLong : longInt; estado : integer; begin clrscr; write('Ingrese un numero maximo de 20 digitos: '); numeroTxt := leerNumero(20); writeln; writeln('Usted ingreso: ',numeroTxt); {Conversion del Texto a Entero} val(numeroTxt,numeroLong, estado); writeln('El valor desde la variable longInt: ',numeroLong); readKey; end.
Espero que te sirva.
17
« en: Miércoles 24 de Febrero de 2010, 07:49 »
Oyes me da mucho gusto que te sirvió la información. Éxito. Nos Vemos..
18
« en: Lunes 22 de Febrero de 2010, 09:41 »
Hola, bueno lo que te suguiero es que recorras tu array con un for e ir validando cada uno de los elementos del array con la función isdigit() o si es el signo +. Aunque si el caso es de almacenar un numero positivo pues tambien podrias tratar de convertir esa cadena en un int con la funcion atoi, esta funcion regresa 0 cuando no se ha logrado convertir la cadena a un valor entero. y podrias verificar si es positivo o negativo. Bueno espero que te sirva.
19
« en: Domingo 21 de Febrero de 2010, 05:06 »
Hola. Bueno a primera vista parece ser que no has relacionado el ArrayList donde guardas los Objetos Tipo Detalle a una Factura, te falta algo asi como: fact1.setRefDetalle(deta1);
Esto antes de usarlo en el for-each. En la parte de la Definición de los ArrayList segun la Sintaxis Adecuada se debe indicar el tipo de Elementos que va almacenar, de la Siguiente forma: ArrayList<Detalle> deta1 = new ArrayList<Detalle>();
Por otra parte te recomendaria que en la parte del for-each lo manejes de la siguiente forma: ArrayList<Detalle> detalleFatura = fact1.getRefDetalle(); for (Detalle deta : detalleFatura) { System. out. println("" + deta. getRefArticulo(). getCodigo()+" "+deta. getRefArticulo(). getDescripcion()); }
Al parecer el error se da ya que el método getRefDetalle() del Objeto fact1 debe de regresar un Objeto ArrayList pero como no se le ha relacionado ningun Objeto pues esta vacio. Bueno espero que te sirva. y espero que con esto puedas resolver tu problema.
20
« en: Jueves 19 de Noviembre de 2009, 06:21 »
Curioso en mi prueba si funciona correctamente pero bueno de todos modos te dejo la prueba que hice yo, chekeala y me comentas Valores iniciales num1 = 187 num2 = 0 num3 = 0 num1 num1 > 0 num3=(num3*10) num2=(num1 % 10) num1=(num1/10) num3=(num3+num2) 187 true 0 = 0*10 7=187 % 10 18 = 187/10 7=0 + 7 18 true 70 8=18 % 10 1 = 18/10 78=70+8 1 true 780 = 78*10 1=1%10 0 = 1/10 781=780+1 0 false
Coloco otra forma en la que puede funcionar que es practicamente similar al que tu comentas por excepto la condición del while y la eliminación del paso despues de terminar el ciclo: Var Entero: num1, num2 Inicio Leer( num1 ) num2 <- 0 Mientras( num1 > 0 ) num2 <- num2 * 10 + num1 mod 10 num1 <- num1 div 10 FinMientras Fin
Bueno ahi nos vemos!!
21
« en: Sábado 14 de Noviembre de 2009, 05:12 »
Hola que tal espero que te pueda servir esto. Algoritmo InvertirNumero Var Entero: num0, num1, num2 Inicio Leer( num0 ) num1 <- 0 num2 <- 0 Mientras( num0 > 0 ) num2 <- num2 * 10 num1 <- num0 mod 10 num0 <- num0 div 10 num2 <- num2 + num1 FinMientras Fin
22
« en: Miércoles 28 de Octubre de 2009, 20:27 »
Esto tambien puede resolver el problema //maxValue es el valor maximo que deseas que salga nada mas que funciona hasta el 0 al 9 :D int maxValue = 5, i, j = maxValue; for(i = 1; i<=maxValue; cadena+=i++); i = 1; while(j != 0) { salida = cadena.substring(0,(i < maxValue)?i++:j--); }
23
« en: Miércoles 28 de Octubre de 2009, 00:03 »
Bueno soy nuevo aqui y vi este TEma y pues me intereso proponer una solucion al problema algo tarde creo. Pero espero que sirva. import java.util.*; public class Cadena { public static void main (String args []) { /* Se utilizo parte del codigo que propuso el usuario "cuper90" inicio codigo cuper90 **/ String palabra = "supercalifragilistico"; char[] letras; for(int i=0; i<palabra.length(); i++){ letrasOrdenadas.add(palabra.charAt(i)); } /** fin codigo cuper90 **/ /* El Objeto letrasOrdenadas(TreeSet) mediante el metodo toString regresa una cadena que es la misma si mandase a imprimir la variable directamente con el metodo el println(); una vez que tenemos la cadena devuelta con toString() utilizamos la metodo replaceAll que utiliza una sencilla expresión regular que busca los "[" que aparecen al inicio, las ",", el corchete "]" que aparece al fina y los espacios en blanco en blanco remplazandolos por "", el metodo replaceAll() regresa una cadena resultante con los reemplazos hechos, la cual la convertimos a su vez en un arreglo de char con el metodo toChatArray() y este arreglo es asignado a la variable letras que es un array. */ letras = letrasOrdenadas.toString().replaceAll("[\[|\]|,| ]", "").toCharArray(); /* Podemos recorre correctamente el arreglo de tipo char **/ for(int i = 0; i < letras.length ; i ++) } }
Páginas: [1]
|
|
|