|
Mostrar Mensajes
|
Páginas: 1 2 3 4 5 [6] 7
|
51
|
Programación / Programación C/C++ / Re: Ayuda con Suma binaria (tiene codigo)o reprobare el semestre en menos de 1 hora
|
en: 6 Diciembre 2012, 01:13 am
|
#include <stdio.h> #include <conio.h> #include <stdlib.h> char a[5]; //variable para el primer valor a sumar char b[5]; //variable para el primer valor a sumar long resultado; //variable para el resultado char resultado_str[5]; //variable para obtener el resultado en binario int main () { printf("Introduzca primer n£mero: "); scanf("%s", &a ); //lectura del primer numero printf("Introduzca segundo n£mero: "); scanf("%s", &b ); //lectura del segundo numero resultado = strtol (a , NULL , 2) + strtol (b , NULL , 2); //suma de los dos valores usando la funcion strtol itoa(resultado , resultado_str , 2);//como se obtiene un resultado decimal se convierte a entero con esta función y se le asigna a la variable resultado_str printf("El resultado es %s",resultado_str ); //imprime el resultado return 0; }
|
|
|
52
|
Programación / Java / Re: Problema al mostrar return de metodo
|
en: 6 Diciembre 2012, 00:51 am
|
creaste el procedimiento fraccionMostrar() para no usarlo? xD package primerasClases; public class FraccionAplicacion { public static void main (String[] args ) { // creo el objeto fraccion Fraccion f1 = new Fraccion(2,2); Fraccion f2 = new Fraccion(2,2); Fraccion.fraccionSumar(f1, f2).fraccionMostrar(); } }
|
|
|
54
|
Programación / Java / Re: matices
|
en: 2 Diciembre 2012, 15:33 pm
|
solo un error en la línea donde mandas a imprimir: System. out. print(x [i ][j ]+"\t");
estabas imprimiendo la primera dimensión, la cual es un arreglo de 3, por eso te imprimió así, es la ubicación en la memoria, recuerda que al ser un arreglo bidimensional tienes que chequear las dos dimensiones, para algo hiciste los dos for, no? Lo otro no lo entendí, si te explicas mejor como funciona ese juego podría ayudarte Saludos
|
|
|
55
|
Programación / Java / ayuda con unos algoritmos de mi SUDOKU en Java :D
|
en: 29 Noviembre 2012, 19:53 pm
|
Hola foreros, he estado haciendo un proyecto que me mandaron de la universidad; un SUDOKU, la verdad ya lo tengo casi terminado, sólo que tengo un gran problema de lógica, he creado funciones para generar las pistas del SUDOKU, para chequear si un número se encuentra en fila o columna y para chequear si se encuentra en un cuadrante, todo funciona de maravilla, le he agregado una función para un nuevo botón llamado "rendirse" y la función que cumple es rellenar las casillas del SUDOKU faltantes y corregir las existentes que no sean parte de las pistas que se cargaron en un principio, el algoritmo me funciona correctamente, sólo que a la hora de cargar la función quedan varias casillas trancadas; es decir, no hay forma de poner ningún número del 1 al 9 porque o está en fila o columna o está en cuadrante y como el valor de la función que busca el valor correcto se inicializa en 0, queda en 0 y ese es el valor que pone, lo que quiero es que me ayuden a mejorar los algoritmos o darme consejos de como podría hacerlo ya que no veo manera de modificar el algoritmo de tal manera que prevenga esa situación, acá les dejo una imagen: Funciona así: utiliza dos arreglos bidimensional de 9x9, uno para manejar el SUDOKU y otro para saber en que posiciones se crean las pistas. int size = 9; Object load [][]= new Object [size][size]; Object filas [][]= new Object [size][size]; int pistas = 25, total_pistas = 0; así genera las pistas: do {
f = (int) Math.round((Math.random()*8)); c = (int) Math.round((Math.random()*8)); if (filas[f][c] != null) continue; valor = getValorCorrecto(filas, f, c); if (valor != 0) { filas[f][c] = valor; load [f][c] = true; total_pistas++; } } while (total_pistas < pistas);
esta es la función para saber si existe o no en la fila y la columna public boolean isInFilayColumna(Object [][] filas, int f, int c, int valor) { int j = 0; boolean duh = false; for (j = 0; j < 9; j++) { if (filas[j][c] == valor || filas[f][j] == valor) { duh = true; break; } } return duh; } esta es la función para saber si existe o no en el cuadrante public boolean isInCuadrante(Object filas[][], int x, int y, int valor) { boolean duh = false; int startx = 0, starty = 0, endx = 0, endy = 0, i, j; //COORDENADAS X if (x >= 0 && x <= 2) { startx = 0; endx = 2; } else if (x >= 3 && x <= 5) { startx = 3; endx = 5; } else if (x >= 6 && x <= 8) { startx = 6; endx = 8; } //COORDENADAS Y if (y >= 0 && y <=2) { starty = 0; endy = 2; } else if (y >= 3 && y <=5) { starty = 3; endy = 5; } else if (y >= 6 && y <= 8) { starty = 6; endy = 8; } for (i = startx ; i <= endx; i++) { for (j = starty; j <= endy; j++) { if (filas[i][j] == valor) { duh = true; break; } } } return duh; } y esta es la función que me corrige el SUDOKU public void corregir_sudoku(Object filas[][], Object check [][], JTable tabla) { int i,j, valor; valor = 0; for (i = 0; i < 9; i++) { for (j = 0; j < 9; j++) { if ((filas[i][j] != null && isInFilayColumna(filas, i, j, (int)filas[i][j]) && isInCuadrante(filas, i, j, (int)filas[i][j]) || filas [i][j] == null)) { valor = getValorCorrecto(filas, i, j); filas[i][j] = valor; tabla.setValueAt(valor, i, j); } } } } Saludos!
|
|
|
57
|
Programación / Java / Problemas con manejo de memoria dinamica
|
en: 3 Febrero 2012, 17:51 pm
|
Hola a todos, estoy haciendo un programa que me mandaron en la universidad pero estoy algo confundido, el programa lo que hace es crear un registro con una clase, en el menu de opciones esta la opcion de buscar y eliminar, igual la de mostrar todo, luego de que se cierra el programa se guarda lo que estaba en la clase en el archivo. Podrian hecharle una ojeada al codigo y corregirle los errores? acá esta el código
package procesamiento;
/** * * @author Jose Angel */ import java.util.Scanner; import java.io.*;
public class Main {
public Main() { }
public static Articulo aux, aux2, aux_elim, primero; //Auxiliares necesarios para llevar el control de la memoria dinámica public static int i,j,respuesta_eliminar; //i,j son contadores, respuesta_eliminar es el codigo que se usara para eliminar public static char respuesta_control, talla; // respuesta_control es para llevar el control del ciclo central, talla para guardar el valor de la talla antes de meterlo en la memoria dinámica public static boolean encontrado, existe; //valores booleanos que ayudan en la busqueda y en la eliminacion public static int opcion, numero, buscar; //otros valores, opcion para el menu, numero es el codigo que se le asignara a cada articulo, buscar es el id que se usara para buscar. public static String nombre, color; //otros valores que se usan para agarrar valores antes de meterlos a la clase. public static float precio; //otro valor que se usa para agarrar un valor antes de meterlo a la clase. public static void main(String[] args) { aux2 = null; primero = null; do { encontrado = false; existe = false; //los valores de arriba deben inicializarce en false. Scanner teclado= new Scanner(System.in); //lectura desde el teclado para inicializar el menu System.out.println("Que desea hacer? \n1.- Agregar (1)\n2.- Buscar (2)\n3.- Eliminar (3)\n4.- Mostrar Todo (4)\n5.- Salir (5)"); opcion = teclado.nextInt();//lectura de entero desde el teclado. switch (opcion) { case 1: //opcion agregar aux = new Articulo();//crea un nuevo nodo en la clase articulo if (primero == null) { primero = aux; } Scanner lector_n= new Scanner(System.in); // todos los scanners que vienen aca son para leer los datos necesarios para llenar los campos de la clase System.out.println("Escriba el nombre del producto:"); nombre = lector_n.next(); aux.nombre = nombre; Scanner lector_t = new Scanner(System.in); System.out.println("Escriba la talla del producto:"); talla = lector_t.next(). charAt(0);//lectura de la primera letra de lo que se escribe desde el teclado aux.talla = talla; Scanner lector_c = new Scanner(System.in); System.out.println("Escriba el color del producto:"); color = lector_c.next(); aux.color = color; Scanner lector_p = new Scanner(System.in); System.out.println("Escriba el precio del producto:"); precio = lector_p.nextFloat(); //lectura del numero decimal que se escribe desde el teclado aux.precio = precio; numero++; aux.codigo = numero;//asignacion de el codigo al producto aux2 = aux; aux.guia = aux2; System.out.println(aux2.guia); break; case 2: Scanner buscador = new Scanner(System.in); System.out.println("Escriba el codigo del producto que desea buscar"); buscar = buscador.nextInt() ;//se lee el entero que seria el codigo que se esta buscando // aux2 = primero; System.out.println(aux2.guia); for (int b = 0; i < numero; i++) {//se hace el recorrido a la clas if (aux2.codigo == buscar) //si se encuentra encontrado va a ser igual a true { encontrado = true; break; }
aux2 = aux2.guia; } if (encontrado == true) //si encontrado fue true mostrara todos los datos de la clase que buscamos por el codigo System.out.println("Nombre: " + aux2.nombre + " Talla: " + aux2.talla + " Color:" + aux2.color + " Precio:" + aux2.precio+ " Codigo:" + aux2.codigo ); else System.out.println("No encontrado."); break; case 3: //ESTA PARTE NO ESTA BIEN AUN Scanner eliminar= new Scanner(System.in); System.out.println("Inserte el codigo del producto que desea eliminar"); respuesta_eliminar = eliminar.nextInt(); aux2 = primero;//nos situamos al inicio de la lista while (aux2.guia != null){ //si el nodo a eliminar fuera el primero if (aux2.codigo == respuesta_eliminar){ //guardamos en un auxiliar del siguiente //del que vamos a eliminar Articulo auxiliar = aux2.guia.guia; aux2.guia = null; aux2.guia = auxiliar; }
aux2 = aux2.guia; } break; case 4: while (aux2 != null) { //aca se hace el recorrido a todo lo que esta en la clase y lo muestra en pantalla System.out.println("Nombre: " + aux2.nombre + " Talla: " + aux2.talla + " Color:" + aux2.color + " Precio:" + aux2.precio+ " Codigo:" + aux2.codigo ); aux2 = aux2.guia;//esto es para que se vaya incrementando las direcciones. } break; case 5: break; default: System.out.println("Opcion "+ opcion + " es inválida"); break; } Scanner lectura= new Scanner(System.in);//nueva lectura desde teclado para saber si se hara alguna otra cosa en el menu System.out.println("Desea continuar?"); respuesta_control = lectura.next(). charAt(0); }while (respuesta_control == 's' || respuesta_control == 'S' ); //aca empieza lo que tiene que ver con el archivo FileWriter archivo = null; // este valor hace referencia al nuevo archivo que crearemos PrintWriter escritor = null; // este valor hace referencia al escritor que usaremos para escribir (obviamente D:) try { archivo = new FileWriter("c:/nuevoarchivo.txt"); //aqui seleccionamos el nuevo archivo que usaremos para escribir (si no existe igualmente se crea) escritor = new PrintWriter(archivo); //esto es lo que nos ayudara a escribir en el archivo while (aux2 != null){ //hacemos un recorrido a toda la clase escritor.println("Nombre: " + aux2.nombre + " Talla: " + aux2.talla + " Color:" + aux2.color + " Precio:" + aux2.precio+ " Codigo:" + aux2.codigo ); //y empezamos a escribir linea por linea todos los valores que hay en la clase aux2 =aux2.guia;//incrementa las direcciones } } catch (Exception e) { e.printStackTrace(); } finally { try { // Nuevamente aprovechamos el finally para // asegurarnos que se cierra el fichero. if (null != archivo) archivo.close(); } catch (Exception e2) { e2.printStackTrace(); } } } }
Gracias de antemano Saludos
|
|
|
59
|
Programación / Programación C/C++ / Función de inclusión de valores a una matriz
|
en: 21 Septiembre 2011, 02:35 am
|
Hola foreros, justo ahora estoy tratando de hacer una función para añadir valores a un arreglo bidimensional, el problema es que mis conocimientos no son suficientes para desarrollar esto xD; mis conocimientos son muy limitados (me familiarizo más con lua (una extensión de c++)). Por si no he dejado claro, la función debería funcionar así:
agregar("nombre1", "nombre2", "nombre3")
deberia retornar un arreglo bidimensional con cada uno de esos valores "como primer campo" y el segundo campo sería "posición del campo en el arreglo + 10000".
a lo que me refiero es a esto: nombre1 10000 nombre2 10001 nombre3 10002
Espero puedan ayudarme, Saludos y gracias de antemano
|
|
|
|
|
|
|