Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Ghio97

#1
Java / Ayuda a encolar Nodos
18 Noviembre 2019, 19:06 PM
Hola tengo un problema al encolar mis nodos, solo encola al primero y despues nada.
Trato de realizar un metodo de amplitud por lo que la insercion es desde otra clase
inserto desde la clase Arbol para poder utilizarlos para diferentes metodos

public void insertar(String i) {
Cola p=new Cola();
Nodo n=new Nodo(i);

if(raiz==null) {
raiz=n;
p.encolar(n);
}else {
Nodo aux=raiz;
p.encolar(aux);
while(aux!=null) {
n.padre=aux;


if(n.llave.compareTo(aux.llave)>0) {
aux=aux.der;
}else {
aux=aux.izq;
}
}
if(n.llave.compareTo(n.padre.llave)<0) {
n.padre.izq=n;
}else {
n.padre.der=n;
}
}

}


Aqui voy encolando lo que inserte arriba

public void encolar(Nodo n) {
Nodo nuevo=new Nodo(n.llave);
if (cabeza==null) {
cabeza=nuevo;
ultimo=nuevo;
}else {
ultimo.siguiente=nuevo;
ultimo=nuevo;
}

}


Y todo deberia aparecer en cuando utilizo el metodo de recorrerAmp


public void recorrerAmp(Nodo n) {
Cola cola,colaux;
Nodo aux;

if (n != null) //SI EL ÁRBOL CONTIENE NODOS...
{
cola=new Cola(); //SE INSTANCIA EL OBJETO COLA
colaux=new Cola(); //SE INSTANCIA EL OBJETO COLAAUX
cola.encolar(n); //SE INSERTA EL NODOARBOL "A" (RAIZ) COMO PRIMER NODO EN LA COLA
while (cola.colavacia()!=1) //MIENTRAS HAYAN ELEMENTOS EN LA COLA...
{
colaux.encolar(aux=cola.eliminar()); /*EL ELEMENTO EXTRAIDO DE LA COLA PRINCIPAL ES ASIGNADO
A AUX Y A SU VEZ INSERTADO EN LA COLA AUXILIAR*/

if (aux.izq != null) //SI EL HIJO IZQUIERDO DEL NODO ACTUAL EXISTE
{
cola.encolar(aux.izq); //SE INSERTA ESE HIJO COMO ELEMENTO SIGUIENTE EN LA COLA
}
if (aux.der!= null) //SI EL HIJO DERECHO DEL NODO ACTUAL EXISTE
{
cola.encolar(aux.der); //SE INSERTA ESE HIJO COMO ELEMENTO SIGUIENTE EN LA COLA
}
}
colaux.imprimir(); //POR ÚLTIMO SE IMPRIME LA COLA AUXILIAR
}
else {
System.out.println("No existen elementos para realizar el recorrido por Amplitud");
}
}


Pero solo aparece el primer nodo insertado y despues nada, es como si despues del primer nodo no encolara nada


#2
Java / Metodo de amplitud Nodos
16 Noviembre 2019, 18:05 PM
Hola tengo un problema.
Estoy creando tres clases clases (Arbol,  Cola y Main), Arbol tienes el metodo insertar(que recibe como parametro una cadena y ese parametro se convierte en el parametro de un Nodo) dentro de insertar llamo al metodo insert que es un metodo de la clase cola(insert recibe como parametro un nodo).
En la clase cola deberia meter en una cola los nodos insertados para depues imprimirlos , lo que busco al final es hacer el rocorrido por ampilitud utilizando la clase cola y los nodos insertados pero estoy atorado en insertar los nodos y mostrarlos
alguien me podria ayudar porfavor?

package estructura;

public class Arbol {
Nodo raiz;


public Arbol() {
raiz=null;
}


//Insertar

public void insertar(String i) {
Cola p=new Cola();
Nodo n=new Nodo(i);
p.inser(n);

if(raiz==null) {
raiz=n;
}else {
Nodo aux=raiz;
while(aux!=null) {
n.padre=aux;
if(n.llave.compareTo(aux.llave)>0) {
aux=aux.der;
}else {
aux=aux.izq;
}
}
if(n.llave.compareTo(n.padre.llave)<0) {
n.padre.izq=n;

}else {
n.padre.der=n;
}
}

}

/*public void recorrerAmp(Nodo n) {
Cola cola,colaux;
Nodo aux;
for(int i=0;i<49;i++) {

}

if (n != null) //SI EL ÁRBOL CONTIENE NODOS...
{
cola=new Cola(); //SE INSTANCIA EL OBJETO COLA
colaux=new Cola(); //SE INSTANCIA EL OBJETO COLAAUX
cola.push(n); //SE INSERTA EL NODOARBOL "A" (RAIZ) COMO PRIMER NODO EN LA COLA
while (cola.colavacia()!=1) //MIENTRAS HAYAN ELEMENTOS EN LA COLA...
{
colaux.push(aux=(Nodo) cola.pop()); /*EL ELEMENTO EXTRAIDO DE LA COLA PRINCIPAL ES ASIGNADO
A AUX Y A SU VEZ INSERTADO EN LA COLA AUXILIAR*/
/*if (aux.izq != null) //SI EL HIJO IZQUIERDO DEL NODO ACTUAL EXISTE
{
cola.push(aux.izq); //SE INSERTA ESE HIJO COMO ELEMENTO SIGUIENTE EN LA COLA
}
if (aux.der!= null) //SI EL HIJO DERECHO DEL NODO ACTUAL EXISTE
{
cola.push(aux.der); //SE INSERTA ESE HIJO COMO ELEMENTO SIGUIENTE EN LA COLA
}
}
colaux.imprime(); //POR ÚLTIMO SE IMPRIME LA COLA AUXILIAR
}

} */




//metodo en PREORDEN

public void recorrerPre(Nodo n) {
if(n!=null) {
System.out.println(n.llave);
recorrerPre(n.izq);
recorrerPre(n.der);
}
}



//metodo en ORDEN

public void recorrerOrd(Nodo n) {
if(n!=null) {
recorrerOrd(n.izq);
System.out.println(n.llave);
recorrerOrd(n.der);
}
}

//metodo en PostOrden
public void recorrerPos(Nodo n) {

if(n!=null) {
recorrerPos(n.izq);
recorrerPos(n.der);
System.out.println(n.llave);
}
}

public class Nodo{
public Nodo padre;
public Nodo der,izq;
public String llave;
public Nodo siguiente;



public Nodo(String indice) {
llave=indice;
der=null;
izq=null;
padre=null;
}

}






}
  Esta es mi clase Arbol

****************************************************


package estructura;

public class Cola extends Arbol {
Nodo frente,fin;


public Cola () {
frente=null;
fin=null;
}

/*public int colavacia() {
if(frente==null&&fin==null) {
return 1;
}return 0;
}*/


public void inser(Nodo c ) {
Nodo s=new Nodo(c.llave);
if(frente==null) {
frente=s;
frente.siguiente=null;
fin=s;
}else {
fin=s;
s.siguiente=null;
fin=s;
}
}
// pop
public void pop() {

}

public void imprime() {

    Nodo k=new Nodo();
k=frente;
if(frente!=null) {
while(k!=null) {
System.out.println(" "+k.llave);
k=k.siguiente;
}
}else {
System.out.println("La cola se encuentra vacia1");
}

}
}
Esta es mi clase Cola
*******************************************************************



package estructura;

public class Main extends Arbol {

public static void main(String[] args) {
Arbol arbol=new Arbol();
Cola c1=new Cola();
arbol.insertar("maria");
arbol.insertar("maria");
arbol.insertar("oso");
arbol.insertar("do");
arbol.insertar("p");
arbol.insertar("maria");

System.out.println("****Recorrido en Pre-Orden****");
arbol.recorrerPre(arbol.raiz);

System.out.println("****Recorrido en Orden****");
arbol.recorrerOrd(arbol.raiz);

System.out.println("****Recorrido en Post-Orden****");
arbol.recorrerPos(arbol.raiz);

System.out.println("****Recorrido en Amplitud****");
c1.imprime();

       
        System.out.println(" ");
        System.out.println("****Recorrido en profundidad**** ");

}     
}

Este es mi Main
#3
Programación C/C++ / Estructuras Anidadas en C
3 Septiembre 2019, 03:57 AM
Tengo un problema con mi codigo, me compila sin problemas pero no ejecuta ninguna instruccion .
alguien podria ayudarme o marcar donde me esta fallando porfavor ?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct{
char profesor;
int materia;
struct alumno *alumnoLi;
}listas;
struct alumno{
char *nombre;
int matricula;
char fecha[30];
};

listas *li;

void vaciar(char temp[]);
void copiar(char temp[],int i);


int main(){
int i,j;
char temp[50];
int cont=0;
char aux;

FILE *f;
f=fopen("Lista1.txt","r");

if(f==NULL){
printf("no se ha podido abrir el archivo \n ");
exit(1);
}

while(!feof(f)){
fgets(temp,50,f);
cont++;
}

rewind(f);

li=(listas*)malloc(cont*sizeof(listas));
if(li==NULL){
printf("no se ha podido reservar espacio \n");
exit (1);
}

for (i=0; !feof(f); i++){
vaciar(temp);
aux='0';

for(j=0;aux != '-';j++ ){
aux=fgetc(f);
if(aux!='-'){
temp[j]=aux;
}
}
copiar(temp,i);

fgets(temp,4,f);
li->alumnoLi[i].matricula=atoi(temp);

printf("Nombre: %s  Matricula: %i \n",li->alumnoLi[i].nombre,li->alumnoLi[i].matricula);
}


system("pause");
return 0;
}

void vaciar(char temp[]){
int i ;
for(i=0; i<50; i++){
temp[i] = '\0';
}
}

void copiar(char temp[],int i){
int N = strlen(temp) +1;
li->alumnoLi[i].nombre = (char*)malloc(N*sizeof(char));

if(li->alumnoLi[i].nombre == NULL){
printf("no se ha podido reservar meoria 2");
exit(1);
}
strcpy(li->alumnoLi[i].nombre,temp);
}


:-\  :-\
#4
Tengo problemas al acceder datos desde un documento de texto a una estructura dentro de otra estructura

Ayuda por favor  :( :laugh:


#include<stdio.h>
#define N 50
#include<string.h>
#include<stdlib.h>

typedef struct{
char profesor;
char materia;
typedef struct{
char *nombre;
int *matricula;
char fecha[30];
}alumno;

}lista;

lista *li;

void copiar(char temp[], int i);
void vaciar(char temp[]);


int main (){


}


void ingresarAlumno(){
int cont;
char temp[50];
int i,j;
char aux;

FILE *f;
f=fopen("Lista.txt","r");
if(f=NULL){
printf("ERROR \n");
exit(1);}

while(!feof(f)){
fgets(temp,50,f);
cont++;
}
rewind(f);

li=(lista*)malloc(cont*sizeof(lista));

if(li==NULL){
printf("NO se pude reservar la memoria");
exit(1);
}

for (i=0;!feof(f);i++){
vaciar(temp);
aux='0';
for(j=0;aux != '-';j++){
aux=fgetc(f);
if(aux != '-'){
temp[j]=aux;
}
}
copiar(temp,i);
}
fgets(temp,9,f);
li->alumno.matricula=atoi(temp);

printf("nombre; %s matricula: %i",li->alumno.nombre,li->alumno.matricula);
}

void vaciar(char temp[]){
int i;
for (i=0;i<50;i++){
temp[i]='\0';
}
}

void copiar(char temp[], int i){
int k = strlen(temp)+1;
li->alumno.nombre=(char*)malloc(k*sizeof(char));
if (li->alumno.nombre==NULL){
printf("ERROR");
exit(1);
}
strcpy(li->alumno.nombre,temp);
}


#5
Alguien me podria ayudar con mi codigo en C , lo que quiero es que mediante el motodo "ingresar" asigne un valor a una posicion espesifica a un arreglo y las demas posiciones las marque como vacias pero a la hora de ejecutar aparacen numeros de la nada...... alguien sabe como solucionarlo????

#include<stdio.h>

void ingresar(int ar[],int val, int pos);
void mostrar(int a[], int f);


int main (){
   int b[30];
   ingresar(b,123,5);
   mostrar(b,30);
   return 0;
   
}
void ingresar(int ar[],int val, int pos){
   int i;
   int tamanoDelArreglo=sizeof(ar);
   int tamanioDelPrimerDato=sizeof(ar);
   int longitud=tamanoDelArreglo/tamanioDelPrimerDato;
   if (0<pos<=longitud){
      ar[pos]=val;
   }
   
   
   return ;
   }
   
   
   
   void mostrar(int a[], int f){
    for(int i=1;i<=f; i++){
        printf("%i \t ",i);
        if(a!=0){
        printf("%i",a);
        printf("\n");
        }else{
            printf("Vacio");
            printf("\n");
        }
    }
}
#6
Programación General / Ayuda con DEBUG MS-DOS
9 Octubre 2018, 23:24 PM
 Hola tengo una pregunta, tengo mi codigo en debug que convierte una cadena de letras de minusculas a mayusculas pero quiero saber como seria el caso en el que si tienes una cadena con minusculas y mayusculas las convierta en su contrario, apenas estoy empezando y no me a quedado claro
aqui mi porgrama

-e ds:0200 "hola$"
-a 0100
0100:mov si, 0200
0103: mov cx,0a
0106:mov al,[si]
0108:and al,df
010a:mov dl,al
010c:mov ah,02
010e: int 21
0110:inc si
0111: loop 0106
-g 0113
HOLA