Java - Ayuda con codigo

   
Vista:

Ayuda con codigo

Publicado por francisco (1 intervención) el 02/02/2011 22:28:04
Hola. Necesito ayuda con un codigo. Es de una clase queue con una extension en la que no logro que pase un test.

Nodo

class Nodo{ //creación clase Nodo

public Object valor;
public Nodo sgte;

public Nodo(Object x){ //constructor utiliza sólo un parámetro.
valor=x;
}

}

Queue

class Queue{


protected Nodo primero; //se maneja el primer Nodo de la lista
protected int largo; //contador de elementos de la lista

public Queue() {
reset();
}

public void reset() { //reinicia la lista
primero=null;
largo=0;
}

public boolean empty(){ //ve si está vacía
if(primero==null) return true;
else return false;
}

public boolean full() { //Queue nunca se llena.
return false;
}

public void push(int x){

Nodo n = new Nodo(x); //valor a agregar.

if (primero==null) { //si el Queue está vacío.
primero = n;
primero.sgte = primero;
largo = 1;
}
else { //Si no, se agrega al final
Nodo aux=primero;
while(aux.sgte != primero)
aux=aux.sgte;
aux.sgte=n;
n.sgte=primero;
++largo;
}
}

public int pop(){

if(primero==null) {largo=0; } //si la lista está vacía.
else{
if(largo==1){ //si hay solo un elemento.
int b=primero.dato;
primero=null;
largo=0;
return b;
}
else{ // Si no referencia el último hacia el nuevo primero.
Nodo aux=primero;
int a=aux.dato;
while(aux.sgte != primero)
aux=aux.sgte;
primero=primero.sgte;
aux.sgte=primero;
--largo;
return a;
}
}
}


}


la extension queue1
class Queue1 extends Queue{


public int length(){ //solo se ocupa el contador de clase Queue
return largo;
}

public String toString(){
String cola = "";

int n = length();

// quitar todos los elementos, los pasa a String y luego los vuelve a poner en la cola
for (int i = 0; i < n; i++) {
int x = pop();
cola += (" " + x.toString());
push(x);
}
if (largo >= 1)
return cola.trim();
return "";

}

}



y el test

class TestQueue{


public static void pushTest(){
Queue q = new Queue();

if ( q.length() != 0 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("") ){
System.out.println("Representación del Queue incorrecta");
}

q.push(5);
if ( q.length() != 1 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("5") ){
System.out.println("Representación del Queue incorrecta");
}
q.push(10);
if ( q.length() != 2 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("5 10") ){
System.out.println("Representación del Queue incorrecta");
}
q.push(20);
if ( q.length() != 3 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("5 10 20") ){
System.out.println("Representación del Queue incorrecta");
}
q.push(8);
if ( q.length() != 4 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("5 10 20 8") ){
System.out.println("Representación del Queue incorrecta");
}
}

public static void pushPopTest(){
Queue q = new Queue();
q.push(5);
q.push(10);
q.push(20);
q.push(8);
if ( q.pop()!=5 ) {
System.out.println("Salio elemento incorrecto");
}
if ( q.length() != 3 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("10 20 8") ){
System.out.println("Representación del Queue incorrecta");
}

if ( q.pop()!=10 ) {
System.out.println("Salio elemento incorrecto");
}
if ( q.length() != 2 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("20 8") ){
System.out.println("Representación del Queue incorrecta");
}
q.push(3);
if ( q.length() != 3 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("20 8 3") ){
System.out.println("Representación del Queue incorrecta");
}

if ( q.pop()!=20 ) {
System.out.println("Salio elemento incorrecto");
}
if ( q.length() != 2 ){
System.out.println("Error largo incorrecto");
}
if ( !q.toString().trim().equals("8 3") ){
System.out.println("Representación del Queue incorrecta");
}

}

public static void testCapacidad(){
Queue q = new Queue();

for ( int i=0; i<10000; i++){
if ( q.length() != i){
System.out.println("Error en el tamanno de la cola");
}

q.push(i);

if ( q.length() != i+1){
System.out.println("Error en el tamanno de la cola");
}
}

for ( int i=0; i<10000; i++){
if ( q.length() != 10000-i){
System.out.println("Error en el tamanno de la cola");
}

if ( q.pop() != i){
System.out.println("Elemento no esperado");
}

if ( q.length() != 10000-i-1){
System.out.println("Error en el tamanno de la cola");
}
}
}

public static void testConsistencia(){

Queue q = new Queue();
int nextPut = 0;
int nextGet = 0;
int tamanno = 0;

for ( int i = 0; i<100000; i++){
if ( q.length() != tamanno){
System.out.println("Error en el tamanno de la cola");
}

if ( q.length()==0 || Math.random()>0.48 ){
//poner
q.push(nextPut++);
tamanno++;
} else {
//sacar
if ( q.pop() != nextGet++ ){
System.out.println("Elemento no esperado");
}
tamanno--;
}

if ( q.length() != tamanno){
System.out.println("Error en el tamanno de la cola");
}
}
}

public static void main(String[] args){
pushTest();
pushPopTest();
testCapacidad();
testConsistencia();
}

}


agradeceria un monton la ayuda.Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con codigo

Publicado por aitor (86 intervenciones) el 03/02/2011 12:25:24
Francisco te e corregido algunos errores y ya funciona, pero no le veo sentido... podias explicar en que consiste el programa??

/**
*
* @author Aitor_@hotmail.es
*/
class Nodo { //creación clase Nodo

public Object valor;
public Nodo sgte;

public Nodo(Object x) { //constructor utiliza sólo un parámetro.
valor = x;
}

public String NodoToString() {
String b = valor.toString();
return b;

}
}

class Queue {

protected Nodo primero; //se maneja el primer Nodo de la lista
protected int largo; //contador de elementos de la lista

public Queue() {
reset();
}

public void reset() { //reinicia la lista
primero = null;
largo = 0;
}

public boolean empty() { //ve si está vacía
if (primero == null) {
return true;
} else {
return false;
}
}

public boolean full() { //Queue nunca se llena.
return false;
}

public void push(int x) {

Nodo n = new Nodo(x); //valor a agregar.

if (primero == null) { //si el Queue está vacío.
primero = n;
primero.sgte = primero;
largo = 1;
} else { //Si no, se agrega al final
Nodo aux = primero;
while (aux.sgte != primero) {
aux = aux.sgte;
}
aux.sgte = n;
n.sgte = primero;
++largo;
}
}

public Nodo pop() {

if (primero == null) {
largo = 0;
return null;
} //si la lista está vacía.
else {
if (largo == 1) { //si hay solo un elemento.
//int b = primero;
//primero = null;
//largo = 0;
return primero;
} else { // Si no referencia el último hacia el nuevo primero.
Nodo aux = primero;
// int a = aux;
while (aux.sgte != primero) {
aux = aux.sgte;
}
primero = primero.sgte;
aux.sgte = primero;
--largo;
return primero;
}
}
}
}

class Queue1 extends Queue {

public int length() { //solo se ocupa el contador de clase Queue
return largo;
}

public String toString() {
String cola = "";

int n = length();

// quitar todos los elementos, los pasa a String y luego los vuelve a poner en la cola
for (int i = 0; i < n; i++) {
Nodo x = pop();
cola += (" " + x.toString());

push(Integer.parseInt(x.NodoToString()));
}
if (largo >= 1) {
return cola.trim();
}
return "";

}
}

class TestQueue {

public static void pushTest() {
Queue1 q = new Queue1();

if (q.length() != 0) {
System.out.println("Error largo incorrecto");
}
if (!q.toString().trim().equals("")) {
System.out.println("Representación del Queue incorrecta");
}

q.push(5);
if (q.length() != 1) {
System.out.println("Error largo incorrecto");
}
if (!q.toString().trim().equals("5")) {
System.out.println("Representación del Queue incorrecta");
}
q.push(10);
if (q.length() != 2) {
System.out.println("Error largo incorrecto");
}
if (!q.toString().trim().equals("5 10")) {
System.out.println("Representación del Queue incorrecta");
}
q.push(20);
if (q.length() != 3) {
System.out.println("Error largo incorrecto");
}
if (!q.toString().trim().equals("5 10 20")) {
System.out.println("Representación del Queue incorrecta");
}
q.push(8);
if (q.length() != 4) {
System.out.println("Error largo incorrecto");
}
if (!q.toString().trim().equals("5 10 20 8")) {
System.out.println("Representación del Queue incorrecta");
}
}

public static void pushPopTest() {
Queue1 q = new Queue1();
q.push(5);
q.push(10);
q.push(20);
q.push(8);
Nodo aux = q.pop();
int num = Integer.parseInt(aux.NodoToString());

if (num != 5) {
System.out.println("Salio elemento incorrecto");
}
if (q.length() != 3) {
System.out.println("Error largo incorrecto");
}
if (!q.toString().trim().equals("10 20 8")) {
System.out.println("Representación del Queue incorrecta");
}

if (num != 10) {
System.out.println("Salio elemento incorrecto");
}
if (q.length() != 2) {
System.out.println("Error largo incorrecto");
}
if (!q.toString().trim().equals("20 8")) {
System.out.println("Representación del Queue incorrecta");
}
q.push(3);
if (q.length() != 3) {
System.out.println("Error largo incorrecto");
}
if (!q.toString().trim().equals("20 8 3")) {
System.out.println("Representación del Queue incorrecta");
}

if (num != 20) {
System.out.println("Salio elemento incorrecto");
}
if (q.length() != 2) {
System.out.println("Error largo incorrecto");
}
if (!q.toString().trim().equals("8 3")) {
System.out.println("Representación del Queue incorrecta");
}

}

public static void testCapacidad() {
Queue1 q = new Queue1();


for (int i = 0; i < 10000; i++) {
if (q.length() != i) {
System.out.println("Error en el tamanno de la cola");
}

q.push(i);

if (q.length() != i + 1) {
System.out.println("Error en el tamanno de la cola");
}
}

Nodo aux = q.pop();
int num = Integer.parseInt(aux.NodoToString());
for (int i = 0; i < 10000; i++) {
if (q.length() != 10000 - i) {
System.out.println("Error en el tamanno de la cola");
}

if (num != i) {
System.out.println("Elemento no esperado");
}

if (q.length() != 10000 - i - 1) {
System.out.println("Error en el tamanno de la cola");
}
}
}

public static void testConsistencia() {

Queue1 q = new Queue1();
int nextPut = 0;
int nextGet = 0;
int tamanno = 0;


for (int i = 0; i < 100000; i++) {
if (q.length() != tamanno) {
System.out.println("Error en el tamanno de la cola");
}

if (q.length() == 0 || Math.random() > 0.48) {
//poner
q.push(nextPut++);
tamanno++;
} else {
//sacar

Nodo aux = q.pop();
int num = Integer.parseInt(aux.NodoToString());
if (num != nextGet++) {
System.out.println("Elemento no esperado");
}
tamanno--;
}

if (q.length() != tamanno) {
System.out.println("Error en el tamanno de la cola");
}
}
}

public static void main(String[] args) {
pushTest();
pushPopTest();
testCapacidad();
testConsistencia();
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar