Mostrar Mensajes

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 - galoroca2013

Páginas: [1]
1
De todo un poco... / Re:devolucion y cambio
« en: 27 de Enero 2014, 11:21 »
Hola Cesar buenos días, ¡ gran foro es éste! y tú "eres excelente" transmitiendo tus conocimientos, graciasssss

Un saludo

2
De todo un poco... / Re:devolucion y cambio
« en: 25 de Enero 2014, 14:08 »
Bueneos días Cesar; Por  eso me devuelve NULL o fichero no encontrado? Una pregunta Cesar el NULL que és lo que hace realmente en un programa? porque estoy hecha todo un lio.......

Que tengas buen fin de semana y muchas gracias!!
 




3
De todo un poco... / Re:devolucion y cambio
« en: 24 de Enero 2014, 10:48 »
Hola Cesar buenos días, mira calcularCambio tiene que calcular el número de monedas a devolver; siempre y cuando se tenga dentro de ellas la unidad(1) porque de lo contrario dará un error. No sé si me explique bien pero es la idea.  Nuevamente gracias por tu ayuda, ya no me siento tan sola en esto y te lo debo a ti; necesitaba a alguien que me ayudara; hay muchas cosas que no entiendo yo he tratado de realizarlas leyendo aquí en este gran foro y buscando en los libros, pero no es nada fácil y menos cuando se estudia a distancia.

Espero que pases un buen día.

Un saludo



4
De todo un poco... / Re:devolucion y cambio
« en: 23 de Enero 2014, 23:53 »
Muchísimas gracias Cesar, yo estoy muy al pendiente de cualquier información que me puedas enviar.

Que tengas buena noche

Un saludo

5
De todo un poco... / Re:devolucion y cambio
« en: 23 de Enero 2014, 10:30 »
Hola Cesar buenos días gracias por tan excelente explicación ¡como lo haces siempre ! espero que te llegue. Quedo al pendiente de cualquer aporte de tun parte; espero que tengas un buen dia y nuevamente gracias.
Código: [Seleccionar]
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;

public class cambio
{
private static boolean t = false;
private static boolean h = false;
private static String fichero_entrada = null;
private static String fichero_salida = null;
private static String fichero_solucion;
private int[][] matrizCambio;
private int[] vectorMonedas;
private int cantidad;
private int[] vectorSeleccion;
public cambio(int i, int[] js) {
// TODO Auto-generated constructor stub
}
public static void main(String[] args){
//Argumentos de prueba - Borrar
//args = new String [] {"-t","-h", "fichero_entrada","fichero_salida"};
if(args.length<=1){
for(int i=0;i<args.length;i++){
if(args[i].equals("-h")){
h = true;
}
else if(args[i].equals("-t")){
t = true;
}
else if(fichero_entrada == null){
fichero_entrada = args[i];
}
else{
fichero_salida = args[i];
}
}
if(h){
System.out.println("----------------------------- AYUDA --------------------------------");
System.out.println("cambio [-t][-h] [<fichero_entrada>][<fichero_salida>]");
System.out.println("   -t: Traza cada paso del algoritmo y describe utilización del algoritmo");
System.out.println("   -h: Muestra una ayuda y la sintaxis del comando");
System.out.println("   fichero_entrada: Se leen los datos del S.M No. de tipo de monedas y la cantidad que se desea devolver");
System.out.println("   fichero_salida: Almacena la salida, si el fichero ya existe el comando dara un error");
System.out.println("----------------------------------------------------------------------------------------------------------");
}
if(fichero_entrada != null){
ArrayList<String> lista=leerFichero(fichero_entrada);
// if(tieneSolucion(lista)){
String resultado = calcularCambio(lista);
if(fichero_salida !=null){
guardarSolucion(fichero_salida, resultado);
}
System.out.println("Resultado: "  + resultado);
//  }
//  else{
//  System.ot.println("No tiene solucion");
//
//    }
} else{
System.out.println("Faltan argumentos");
}
}
}
private static String calcularCambio(ArrayList<String> lista) {
// TODO Auto-generated method stub
return fichero_solucion;
}
private static ArrayList<String> leerFichero(String rutaFichero){
ArrayList<String>lista=new ArrayList<String>();
try {
Scanner s=new Scanner(new File(rutaFichero));           
while (s.hasNext()){
lista.add(s.next());
}
s.close();
}catch (FileNotFoundException e) {
System.out.println(e);
}
return lista;
}
/**
* Metodo con el que guardamos la solucion en el fichero de salida
*
* @param String filename, con el que indicamos el nombre del nuevo sifhero de salida.
* @param ArrayList<Integer> lista, con los valores que vamos a guardar en el fichero.
* */
private static void guardarSolucion(String filename, String resultado) {
BufferedWriter bufferedWriter = null;
//Crea un nuevo bufferedWritter y comprueba si hay excepciones
try {
bufferedWriter = new BufferedWriter(new FileWriter(filename));
bufferedWriter.write("resultado: "+ resultado);
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
finally {
//Cierra el bufferedWritter
try {
if (bufferedWriter != null) {
bufferedWriter.flush();
bufferedWriter.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
void Cambio(int cantidad, int[]  monedas){
this.cantidad = cantidad;
this.vectorMonedas = monedas;
matrizCambio = calcularMonedas(cantidad, monedas);
vectorSeleccion = seleccionarMonedas(cantidad, monedas, matrizCambio);
}
public int[] getVectorSeleccion(){
return this.vectorSeleccion;
}
private int[][] calcularMonedas(int cantidad, int[]  monedas){
int[][] matrizCambio = new int[monedas.length + 1][cantidad + 1];
for (int i = 0; i < monedas.length; i++)
matrizCambio[i][0] = 0;
for (int j = 1; j <= cantidad; j++)
matrizCambio[0][j] = 99;
for (int i = 1; i <= monedas.length; i++)
for (int j = 1; j <= cantidad; j++) {
if (j < monedas[i - 1]) {
matrizCambio[i][j] = matrizCambio[i - 1][j];
} else {
int minimo = 0;
minimo = min(matrizCambio[i - 1][j] , matrizCambio[i][j- monedas[i - 1]] + 1);
matrizCambio[i][j] = minimo;
}
cambio c = new cambio(24, new int[]{1,6,10});
c.getVectorSeleccion();
}
return matrizCambio;
}
private int[] seleccionarMonedas(int c, int[] monedas, int[][]tabla ){
int i,j;
int[] seleccion = new int[monedas.length];
for(i = 0; i< monedas.length; i++){             seleccion[i]=0;         }         i= monedas.length;         j= c;         while(j>0){
if(i>1 && tabla[i][j]==tabla[i-1][j]){
i--;
}
else{
seleccion[i-1]++;
j = j - monedas[i-1];
}
}
return seleccion;
}
private int min(int a, int b){
if(a<b)
return a;
else
return b;
}
}

6
De todo un poco... / Re:devolucion y cambio
« en: 23 de Enero 2014, 00:27 »
Hola Cesar espero que te llegue esta mensaje; antes de cualquier cosa gracias por responder tan pronto, gracias por tan excelente foro y gracias por todo lo aprendido; así mismo los animo a seguir con esta idea; para nosotros los principiantes en la programación es un soporte único; sigan Adelante que pocos foros de programación son tan buenos como este.
Por otra parte contesto a la pregunta; implemente el programa en una sola clase por sugerencia de mi tutor, porque cuando inicie la asignatura no sabia nada bsolutamente nada de programación en Java, él me dijo que eso facilitaria la implementación en el desarrollo de la practica, dijo que así no se me complicaria; por lo que también estoy muy agradecida con él.  Si revisas en mis mensajes anteriores he manifestado mi interés en realizar un curso via online con ustedes de Java, debido a que las otras asignaturas que tengo que homologar están basadas en Java.
Por último te copio nuevamente lo que he realizado de la práctica a ver si la puedes ver, es de anotar que es mi primer programa en Java y que todo lo que he realizado lo he hecho ayudada por este gran foro.

...

 

7
Hola buenas tardes antes de cualquier cosa mis felicitaciones por tan excelente Foro, es lo mejor que he encontrado en la red.

Así mismo agradezco cualquier tipo de ayuda que me pùedan prestar. Estoy haciendo el programa de "devolucion y cambio" en java pero no me funciona y no encuentro donde está el error. El enunciado es el siguiente:

EJERCICIO A RESOLVER

Se tiene un conjunto de N tipos de monedas, cada una con un valor xi. Se supone que contamos con una cantidad ilimitada de monedas de cada tipo. El problema consiste en hallar el número mínimo de monedas que necesitamos para dar una cierta cantidad C.
Hay que tener en cuenta que un algoritmo voraz que eligiese siempre la moneda de mayor valor que se pueda tomar para acercarse a la cantidad C no funcionaría para cualquier conjunto de tipos de monedas. Por ejemplo, si tenemos monedas de valores 1, 6 y 10, y la cantidad a completar fuera 24, la estrategia voraz elegiría las siguientes monedas: 10, 10, 1, 1, 1 y 1. Es decir se darían 6 monedas, cuando es posible devolver esa cantidad con solo 4 monedas de valor 6.

2.2.- Argumentos y parámetros La práctica se invoca usando la siguiente sintaxis:
cambio [-t][-h] [fichero_entrada] [fichero_salida]
Los argumentos son los siguientes:
-t: traza cada paso de manera que se describa la aplicación del algoritmo utilizado.
-h: muestra una ayuda y la sintaxis del comando.
fichero_entrada: es el nombre del fichero del que se leen los datos del sistema monetario: número de tipos de monedas y sus valores y la cantidad que se desea devolver.
fichero_salida: es el nombre del fichero que se creará para almacenar la salida. Si el fichero ya existe, el comando dará un error. Si falta este argumento, el programa muestra el resultado por pantalla.

2.3- Datos de entrada
El fichero de datos de entrada consta de:
Una primera línea que indica la cantidad que se desea devolver, C.
Una segunda línea que indica el valor de N que es el número de tipos de moneda del sistema monetario.  N líneas con un valor cada una que expresa el valor de una moneda. Estas líneas estarán ordenadas de forma creciente. La entrada termina cuando se llega al final del fichero.  Por ejemplo, supongamos que se desea devolver la cantidad C=24, que el sistema monetario dispone de 3 tipos de moneda y sus valores son 1, 6 y 10. El fichero de entrada contendría:
24
3
1
6
10

2.4- Datos de salida
La salida es una secuencia de líneas indicando en cada línea la cantidad de cada tipo de moneda que hay que utilizar, solo si dicha cantidad es distinta de 0.
En el ejemplo, la salida sería:
4 monedas de 6
Mi programa esta desarrollado con una sola clase

Si alguien me puede indicar dónde y como solucionar el error quedaré muy agradecida.
Un saludo.

 

8
Hola Cesar buenas tardes nuevamente ¡Felicitaciones! por este foro; yo estoy haciendo dos programa en java de "mensajeria urgente" y otro sobre devolución de cambio. Yo ya tengo realizados los dos programas, sin embargo me hace falta la parte de Leer y Escribir. He copiado los códigos que has dejado aquí y cuando los compilo funcionan perfectamente sin embargo, no sé cómo invocarlos para ver qué es lo que hacen; por otro lado quisiera saber ¿en qué parte de mis programas puedo ingresar este código para que me funcione.

Es de anotar que estoy homolando mi título de Ingeniera de Sistemas aquí en España y no tenía conocimiento alguno de Java, todo lo he aprendido a través de este excelente foro que tienes y buscando información a través de internet.

Bueno Cesar quedo al pendiente de cualquier ayuda que me puedas prestar y muchas gracias por todo.

Olga Rodríguez

P.D. Los programas los tengo hechos en una sola clase porque el profesor me dijo que así se me facilitaria el desarrollo de las prácticas por no tener conocimiento alguno de Java.

9
Hola Gracias por tomarte el tiempo para ayudarnos, son excelentes tus explicaciones y han sido de gran ayuda.
Un saludo

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".