• Sábado 14 de Diciembre de 2024, 11:37

Autor Tema:  AYUDA URGENTE CON CODIGO C++  (Leído 1406 veces)

enaamorado

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
AYUDA URGENTE CON CODIGO C++
« en: Domingo 27 de Octubre de 2002, 19:05 »
0
Hola gente....como va ?
ando precisando de su ayuda...
tengo que entregar un trabajo para la facu mañana
y no se porque mierda no me tira bien los resultados paso a contarles

El programa va de que hay que crear una lista con mascotas, poniendo su nombre, peso , nombre del dueño, etc etc... (todo como un registro)

Lo que no me da es el PUNTO 6 que hay que borrar un NODO en donde su comida preferida sea igual a "trocitos dogui".,... o sea tengo que borrar todos los datos referido a esa mascota...

El hecho es que no me entiendo muy bien con los punteros y creo que no ta bien hecha la funcion esa...

**COMENTARIO**

La comida preferida se ingresa en el PUNTO 5, hay que ingresarla en minuscula sin comillas asi "trocitos dogui"

Y otra cosa que no da es cuando pongo el listado (OPCION 4) ...en la descripcion de la raza me tira CODIGO ASCCI ??? y no se porque...

alguien por ahi me dijo DESBORDAMIENTO DE PUNTEROS O MEMORIA...

si alguien sabe de C++ bajo D.O.S me pueda ayudar o hacer que el programa ande ...y lo pueda postear aca....se lo agradeceria mucho...por favor gente ayudenmen tengo que entregarlo mañana y no se porque mierda no anda....

Por favor veanlo...a lo mejor es una pavada y re facil para ustedes pero yo que soy nuevo en esto no me doy cuenta

Graciassssssssssssssssssssssssssssssssss

pd: ayudenmen por favor


 


***************** CODIGO FUENTE ********************

#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <stdio.h>
#include <ctype.h>
#include <process.h>
#include <dos.h>

struct animal{
int codmasc,codraza,tipo,cant;
char nombre [20];
float peso;
};

struct animal2{
int codm;
char nom [20],nomdue [30],comida[30];
};

struct nodo{
animal info;
nodo *next;
};

struct nodo2{
animal2 info;
nodo2 *next;
};

struct razas{
int cod_raza;
char descrip [40];
};

struct mascotas{
int cod_mascota;
char nombre_due [30];
};



void limpia();
void Cuadro ();
void Cargar (nodo *&frente,mascotas n[],razas q []);
void Insertar (nodo *&frente,animal aux);
void Mostrar (nodo *frente,razas q[]);
void Buscar (nodo *frente,int x);
void NuevaLista (nodo *frente,nodo2 *&frente2,mascotas n[]);
void Insertar2 (nodo2 *&frente,animal2 aux);
void Mostrar2 (nodo2 *frente2);
int BuscarDesc (razas q[],int raza);
int BuscarDue (mascotas n[],int cod);
void Matriz (nodo *frente);
void Ceros (int a [31][16],int f,int c);
void MostrarMatriz (int a[31][16],int f, int c);
void borrar_nodo(nodo *frente, mascotas n[], nodo2* frente2);



void main ()
{
int x,op,f;
mascotas n [50];
razas q [50];
nodo *frente=NULL;
nodo2 *frente2=NULL;
clrscr ();
do{
switch (op)
{
case 1:
Cargar (frente,n,q);
break;
case 2:
Matriz (frente);
break;
case 3:
clrscr ();
gotoxy(29,2);
textcolor(2);
cprintf("B£squeda de una mascota");
gotoxy(29,3);
textcolor(LIGHTGREEN);
cprintf("***********************");
gotoxy(14,10);
textcolor(YELLOW);
cprintf("Ingrese el c¢digo de la mascota a buscar: ");
cin>>x;
Buscar (frente,x);
limpia();
break;
case 4:
Mostrar (frente,q);
break;
case 5:
NuevaLista (frente,frente2,n);
Mostrar2 (frente2);
break;
case 6: borrar_nodo(frente,n,frente2);
clrscr();
break;
}
clrscr();
gotoxy(29,5);
textcolor(15);
cprintf("Veterinaria Sweets Pets");
for (int i=29;i<51;i++)
{gotoxy(i,6);
textcolor(i/13);
cprintf("*");
}
textcolor(14);
gotoxy(37,10);
cprintf("MENU");
gotoxy(30,13);
textcolor(10);
cprintf("1- Cargar Datos");
gotoxy(28,14);
textcolor(2);
cprintf("2- Generar la Matriz");
gotoxy(23,15);
textcolor(10);
cprintf("3- Buscar mascota con codigo x");
gotoxy(27,16);
textcolor(2);
cprintf("4- Listado de mascotas");
gotoxy(16,17);
textcolor(10);
cprintf("5- Listado de mascotas con peso mayor a 2 kg");
gotoxy(6,18);
textcolor(2);
cprintf("6- Eliminar mascotas cuya comida preferida sea ""trocitos dogui""");
gotoxy(30,19);
textcolor(10);
cprintf("7- Salir al D.O.S");
textcolor(4);
gotoxy(33,21);
cprintf("OPCION: ");
textcolor(WHITE);
cin>>op;

}
while(op!=7);
}

void Cuadro ()
{
gotoxy(30,5);
cprintf("Veterinaria Funny Pets");
gotoxy(15,10);
cprintf("MENU");
gotoxy(30,13);
cprintf("1- Cargar Datos");
gotoxy(28,14);
cprintf("2- Generar la Matriz");
gotoxy(23,15);
cprintf("3- Buscar mascota con codigo x");
gotoxy(27,16);
cprintf("4- Listado de mascotas");
gotoxy(16,17);
cprintf("5- Listado de mascotas con peso mayor a 2 kg");
gotoxy(19,18);
cprintf("6- Eliminar mascotas cuya comida preferida sea ""trocitos dogui""");
gotoxy(30,19);
cprintf("7- Salir al D.O.S");
gotoxy(6,21);
cprintf("OPCION: ");
}


void Cargar (nodo *&frente,mascotas n[],razas q[])
{
int i=0;
animal aux;
clrscr ();
gotoxy(34,4);
textcolor(YELLOW);
cprintf("Carga de Datos");
for (int d=34;d<48;d++)
{gotoxy(d,5);
textcolor(BLACK);
cprintf("*");
delay(40);
}
gotoxy(10,8);
textcolor(2);
cprintf("Codigo de la mascota (termina con 0): ");
cin>>aux.codmasc;
while (aux.codmasc!=0)
{
n.cod_mascota=aux.codmasc;
gotoxy(10,9);
textcolor(10);
cprintf("Nombre del due¤o: ");
gets (n.nombre_due);

gotoxy(10,10);
textcolor(2);
cprintf ("Ingrese el tipo (0-30): ");
cin>>aux.tipo;
while (aux.tipo<0 || aux.tipo>30)
{
gotoxy(34,10);
textbackground(0);
textcolor(WHITE);
cprintf(" ");
gotoxy(34,10);
_setcursortype(_NORMALCURSOR);
textcolor(WHITE);
gotoxy(25,24);
textcolor(LIGHTRED+BLINK);
_setcursortype(_NOCURSOR);
cprintf("ERROR ** Fuera del rango establecido **");
for(int h=0;h<4;h++)
{
sound(220+(h*200));
delay(150);
nosound();
}
delay(1450);
gotoxy(25,24);
textcolor(0);
cprintf("ERROR ** Fuera del rango establecido **");
gotoxy(34,10);
_setcursortype(_NORMALCURSOR);
cin>>aux.tipo;
}
gotoxy(10,11);
textcolor(10);
cprintf("Nombre de la mascota: ");
gets (aux.nombre);
char *buf = "Carlos";
int dom;
dom=strcmp(buf,aux.nombre);
if (dom==0)
{
gotoxy(40,11);
textcolor(12);
cprintf("Se llama como yo, el perro !!!");
}
gotoxy(10,12);
textcolor(2);
cprintf("Codigo de la raza (0-15): ");
cin>>aux.codraza;
while (aux.codraza<0||aux.codraza>15)
{
gotoxy(36,12);
textbackground(0);
cprintf(" ");
gotoxy(25,24);
textcolor(LIGHTRED+BLINK);
_setcursortype(_NOCURSOR);
cprintf("ERROR ** Fuera del rango establecido **");
for(int h=0;h<4;h++)
{
sound(220+(h*200));
delay(150);
nosound();
}
delay(1450);
gotoxy(25,24);
textcolor(0);
cprintf("ERROR ** Fuera del rango establecido **");
gotoxy(36,12);
textcolor(WHITE);
_setcursortype(_NORMALCURSOR);
cin>>aux.codraza;
};
switch (aux.codraza)
{
case 0: gotoxy(38,12);
textcolor(5);
cprintf("Basset Hund");
break;
case 1: gotoxy(40,12);
textcolor(5);
cprintf("Manto Negro");
break;
case 2: gotoxy(40,12);
textcolor(5);
cprintf("Pekines");
break;
case 3: gotoxy(40,12);
textcolor(5);
cprintf("Bull Dog");
break;
case 4: gotoxy(40,12);
textcolor(5);
cprintf("Pastor Ingl‚s");
break;
case 5: gotoxy(40,12);
textcolor(5);
cprintf("Galgo");
break;
case 6: gotoxy(40,12);
textcolor(5);
cprintf("Salchicha");
break;
case 7: gotoxy(40,12);
textcolor(5);
cprintf("Gran D_nes");
break;
case 8: gotoxy(40,12);
textcolor(5);
cprintf("Collie");
break;
case 9: gotoxy(40,12);
textcolor(5);
cprintf("Ovejero Alem_n");
break;
case 10: gotoxy(40,12);
textcolor(5);
cprintf("Chow Chow");
break;
case 11: gotoxy(40,12);
textcolor(5);
cprintf("Dogo Alem_n");
break;
case 12: gotoxy(40,12);
textcolor(5);
cprintf("Bull Dog");
break;
case 13: gotoxy(40,12);
textcolor(5);
cprintf("Basset Hund");
break;
case 14: gotoxy(40,12);
textcolor(5);
cprintf("Fox Terrier");
break;
case 15: gotoxy(40,12);
textcolor(5);
cprintf("Caniche");
break;
}


q.cod_raza=aux.codraza;
gotoxy(10,13);
textcolor(10);
cprintf("Descripci¢n de la raza: ");
gets (q.descrip);
gotoxy(10,14);
textcolor(2);
cprintf("Peso de la mascota: ");
cin>>aux.peso;
gotoxy(33,14);
textcolor(YELLOW);
cprintf("Kg");
gotoxy(10,15);
textcolor(10);
cprintf("Cantidad de veces desparasitado: ");
cin>>aux.cant;
Insertar (frente, aux);
clrscr ();
limpia();
gotoxy(34,4);
textcolor(YELLOW);
cprintf("Carga de Datos");
gotoxy(10,8);
textcolor(2);
cprintf("Codigo de la mascota (termina con 0): ");
textcolor(15);
cin>>aux.codmasc;
}
}

void Insertar (nodo *&frente,animal aux)
{
nodo *p=new nodo;
if (p!=NULL)
{
p->info=aux;
p->next=frente;
frente=p;
}
else
{
cout<<"nError. Se lleno el HEAP...";
getch ();
}
}


void Mostrar (nodo *frente,razas q [])
{
int raza;
int resul;
nodo *p=frente;
while (p!=NULL)
{
clrscr ();
gotoxy(30,3);
cprintf("LISTADO DE MASCOTAS");
gotoxy(29,9);
textcolor(2);
cprintf("C¢digo del animal: ");
cout<<p->info.codmasc;
gotoxy(35,10);
textcolor(YELLOW);
cprintf("Tipo: ");
cout<<p->info.tipo;
gotoxy(33,11);
textcolor(2);
cprintf("Nombre: ");
cout<<p->info.nombre;
gotoxy(29,12);
textcolor(YELLOW);
cprintf("C¢digo de la Raza: ");
cout<<p->info.codraza;
raza=p->info.codraza;
resul=BuscarDesc (q,raza);
gotoxy(25,13);
textcolor(2);
cprintf("Descripci¢n de la Raza: ");
cout<<q[resul].descrip;
gotoxy(35,14);
textcolor(YELLOW);
cprintf("Peso: ");
cout<<p->info.peso;
gotoxy(22,15);
textcolor(2);
cprintf("Cantidad de veces desparasitado: ");
cout<<p->info.cant;
p=p->next;
gotoxy(39,25);
textcolor(LIGHTBLUE);
_setcursortype(_NOCURSOR);
cprintf("Presione una tecla para continuar...");
getch ();
textcolor(WHITE);
}
textcolor(WHITE);
_setcursortype(_NORMALCURSOR);
}



void Buscar (nodo *frente,int x)
{
nodo *p=frente;
if (p!=NULL)
{
while (p->next!=NULL && p->info.codmasc!=x)
p=p->next;
if (p!=NULL && p->info.codmasc==x)
{
textcolor(5);
gotoxy(32,14);
cprintf("Datos del animal");
gotoxy(30,17);
textcolor(2);
cprintf("C¢digo del animal: ");
textcolor(WHITE);
cout<<p->info.codmasc;
gotoxy(37,18);
textcolor(GREEN);
cprintf("Tipo: ");
textcolor(WHITE);
cout<<p->info.tipo;
gotoxy(29,19);
textcolor(GREEN);
textcolor(2);
cprintf("Nombre de la mascota: ");
textcolor(WHITE);
cout<<p->info.nombre;
gotoxy(30,20);
textcolor(2);
cprintf("Codigo de la Raza: ");
textcolor(WHITE);
cout<<p->info.codraza;
gotoxy(37,21);
textcolor(2);
cprintf("Peso: ");
textcolor(WHITE);
cout<<p->info.peso;
gotoxy(23,22);
textcolor(2);
cprintf("Cantidad de veces desparasitado: ");
textcolor(WHITE);
cout<<p->info.cant;
gotoxy(21,25);
_setcursortype(_NOCURSOR);
textcolor(LIGHTRED+BLINK);
cprintf("Presione una tecla para continuar...");
getch();
_setcursortype(_NORMALCURSOR);
}
else
{
gotoxy(22,14);
_setcursortype(_NOCURSOR);
textcolor(LIGHTRED+BLINK);
cprintf("No hay mascotas con este c¢digo !!!");
for(int h=0;h<4;h++)
{
sound(220+(h*200));
delay(150);
nosound();
}
delay(1850);
gotoxy(22,14);
textbackground(0);
cprintf("No hay mascotas con este codigo !!!");
}
}
else
{
gotoxy(22,14);
_setcursortype(_NOCURSOR);
textcolor(LIGHTRED+BLINK);
cprintf("No hay datos cargados en la lista !!!");
for(int h=0;h<4;h++)
{
sound(220+(h*200));
delay(150);
nosound();
}
delay(1850);
gotoxy(22,14);
textbackground(0);
cprintf("No hay datos cargados en la lista !!!");

textcolor(WHITE);
getch();
}
}

void NuevaLista (nodo *frente,nodo2 *&frente2,mascotas n[])
{
int cod,res;
animal2 aux;
char comida[30];
nodo *p=frente;
if (p==NULL)
cout<<"nNo hay datos cargados en la lista";
while (p!=NULL)
{
clrscr ();
if (p->info.peso>2)
{


textcolor(5);
gotoxy(32,7);
cprintf("Datos del animal");
gotoxy(30,11);
textcolor(2);
cprintf("C¢digo del animal: ");
textcolor(WHITE);
cout<<p->info.codmasc;
cod=p->info.codmasc;
res=BuscarDue (n,cod);
strcpy (aux.nomdue,n[res].nombre_due);
gotoxy(28,12);
textcolor(GREEN);
cprintf("Nombre de la mascota: ");
textcolor(WHITE);
cout<<p->info.nombre;
gotoxy(36,13);
textcolor(2);
cprintf("Peso: ");
textcolor(WHITE);
cout<<p->info.peso;
gotoxy(12,23);
cprintf("Ingrese la comida preferida de la mascota: ");
gets (comida);
aux.codm=p->info.codmasc;
strcpy (aux.nom, p->info.nombre);
strcpy (aux.comida,comida);
Insertar2 (frente2,aux);
}
p=p->next;
}
}

void Insertar2 (nodo2 *&frente2,animal2 aux)
{
nodo2 *r=new nodo2;
if (r!=NULL)
{
r->info=aux;
r->next=frente2;
frente2=r;
}
else
{
cout<<"n*** Error - Se lleno el HEAP ***";
getch ();
}
}

void Mostrar2 (nodo2 *frente2)
{
nodo2 *r=frente2;
while (r!=NULL)
{
clrscr ();

textcolor(5);
gotoxy(27,7);
cprintf("Mascotas con mas de 2 KG");
gotoxy(30,11);
textcolor(2);
cprintf("C¢digo del animal: ");
textcolor(WHITE);
cout<<r->info.codm;
gotoxy(28,12);
textcolor(GREEN);
cprintf("Nombre de la mascota: ");
textcolor(WHITE);
cout<<r->info.nom;
gotoxy(30,13);
textcolor(2);
cprintf("Nombre del due¤o: ");
textcolor(WHITE);
cout<<r->info.nomdue;
gotoxy(30,14);
textcolor(2);
cprintf("Comida Preferida: ");
textbackground(0);
textcolor(WHITE);
cout<<r->info.comida;
gotoxy(39,25);
textcolor(LIGHTBLUE);
_setcursortype(_NOCURSOR);
cprintf("Presione una tecla para continuar...");
r=r->next;
getch ();
textcolor(WHITE);
}
_setcursortype(_NORMALCURSOR);
}


int BuscarDesc (razas q[],int raza)
{
int i;
for (i=0;i<=50;i++)
if (q.cod_raza==raza)
break;
return i;
}


int BuscarDue (mascotas n[],int cod)
{
int i;
for (i=0;i<=50;i++)
if (n.cod_mascota==cod)
break;
return i;
}

void Matriz (nodo *frente)
{
nodo *p=frente;
int a[31][16],f,c;
Ceros (a,31,16);
while (p!=NULL)
{
f=p->info.tipo;
c=p->info.codraza;
a[f][c]++;
p=p->next;
}
MostrarMatriz (a,31,16);
}

void Ceros (int a[31][16],int f, int c)
{
int i,j;
for (i=0;i<f;i++)
for (j=0;j<c;j++)
a[j]=0;
}

void MostrarMatriz (int a[31][16],int f, int c)
{
int i,j,e;
clrscr ();
gotoxy(33,1);
textcolor(YELLOW);
cprintf("Datos de la Matriz");
for (i=0;i<f;i++)
{
textcolor(WHITE);
gotoxy(33,1);
textcolor(YELLOW);
cprintf("Datos de la Matriz");
for (j=0,e=6;j<c;j++,e++)
{
textcolor(WHITE);
gotoxy(19,4);
textcolor(GREEN);
cprintf("Tipo");
gotoxy(37,4);
cprintf("Codigo");
gotoxy(57,4);
cprintf("Cantidad");
gotoxy(20,e);
textcolor(WHITE);
cout<<i;
gotoxy(40,e);
cout<<j;
gotoxy(60,e);
cout<<a[j]<<" ";
}
textcolor(LIGHTRED+BLINK);
gotoxy(23,24);
_setcursortype(_NOCURSOR);
cprintf("Presione una tecla para continuar...");
getch();
textcolor(WHITE);
_setcursortype(_NORMALCURSOR);
}
}

void limpia()
{
textcolor(WHITE);
textbackground(0);
clrscr();
_setcursortype(_NORMALCURSOR);
}

void borrar_nodo(nodo *frente, mascotas n[], nodo2* frente2)
{
animal xx;
nodo2 *s=frente2;
nodo *p=frente, *q=NULL, *t;
int perro;
char *buf = "trocitos dogui";
int dom;
while(p!=NULL)
{
dom=strcmp(buf,s->info.comida);
while(p->next!=NULL&&dom==0)
{
dom=strcmp(buf,s->info.comida);
q=p;
p=p->next;
}
if (q==NULL)
{
frente=frente->next;
delete p;
}
else {
q->next=p->next;
delete p;
}
p=q->next;
}
}

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


ESTA ES LA PARTE QUE ESTA MAL....VEAN DONDE TA EL ERROR


void borrar_nodo(nodo *frente, mascotas n[], nodo2* frente2)
{
animal xx;
nodo2 *s=frente2;
nodo *p=frente, *q=NULL, *t;
int perro;
char *buf = "trocitos dogui";
int dom;
while(p!=NULL)
{
dom=strcmp(buf,s->info.comida);
while(p->next!=NULL&&dom==0)
{
dom=strcmp(buf,s->info.comida);
q=p;
p=p->next;
}
if (q==NULL)
{
frente=frente->next;
delete p;
}
else {
q->next=p->next;
delete p;
}
p=q->next;
}
}


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