Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: mapers en 12 Febrero 2011, 04:15 AM

Título: borrar reguistro de datos
Publicado por: mapers en 12 Febrero 2011, 04:15 AM
buenas señores deseo borra el reguistro de datos de un alumno ,como lo podria hacer para  salte ese espacio en blanco ........ ayudnme
Código (cpp) [Seleccionar]

#include <iomanip>
#include <windows.h>
#include<iostream>
#include <cstdio>
#include<cstdlib>
#include <conio.h>
#include<string.h>
#define max 500
//..........................................................................//
//..........................................................................//

using namespace std;


//..........................................................................//
//..........................................................................//
/* definicion de los registros para la estructura */
struct nodo{
       char nombre[max];
       char caracteristicas[max];
       int codigo;
       int nota1;
       int nota2;
       int nota3;
       int nota_del_proyecto;     
       struct nodo *sgte;
       
       };
typedef struct nodo *lista;

//..........................................................................//
//..........................................................................//
/* definicion de los registros para la estructura */



/* especificacion de modulos */
void insertalinicio(lista &q,struct nodo k) ;
//..........................................................................//
//..........................................................................//


//Funcion Gotoxy
void gotoxy(int x,int y)
{
HANDLE hStdout;
COORD pos;
pos.X=x-1;
pos.Y=y-1;
hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
if(hStdout == INVALID_HANDLE_VALUE)
return;

SetConsoleCursorPosition(hStdout,pos);
}

//..........................................................................//
//..........................................................................//




void ingreso__alumno(struct nodo emp,lista &q)
{
  system("cls");
  cout<<"\n\n\n\n\n\n\n\n\n\n\n\t\t\tINGRESE LOS DATOS DEL ALUMNO  "<<endl;
  cout<<"\t\t\t---------------------------------"<<endl;
  cout<<"\t\t\t  -----------------------------"<<endl;
  getch();
  system("cls");
  cin.ignore(100, '\n');
  cout<<"---------------------------------------"<<endl;
  cout<<"     NORMBRE Y APELLIDO DEL ALUMNO "<<endl;
  cout<<"---------------------------------------"<<endl;
  gets( emp.nombre );
  cout<<"             NOTAS "<<endl;
  cout<<"-------------------------------"<<endl;
  cout<<"             NOTA___1 "<<endl;
  cin>>emp.nota1;
  cout<<"-------------------------------"<<endl;
  cout<<"             NOTA___2 "<<endl;
  cin>>emp.nota2;
  cout<<"-------------------------------"<<endl;
  cout<<"             NOTA___3 "<<endl;
  cin>>emp.nota3;
  cout<<"-------------------------------"<<endl;
  cout<<"             NOTA___DEL___PROYECTO "<<endl;
  cin>>emp.nota_del_proyecto;
   cin.ignore(100, '\n');
  cout<<"-------------------------------"<<endl;
  cout<<" CARACTERISTICAS DEL ALUMNO "<<endl;
  cout<<"------------------------------"<<endl;
  cin.get(emp.caracteristicas, max);
  cout<<"            CODIGO DEL ALUMNO "<<endl;
  cout<<"------------------------------"<<endl;
  cin >> emp.codigo;
  insertalinicio(q,emp);

}



void insertalinicio(lista &q,struct nodo k)  //inserta los datos recibidos de la funcion->ingreso producto
{                                            //
lista w=new(struct nodo);//creacion del nodo
k.sgte=q; //insertar al inicio de cada elemnto
*w=k;   //alamcenar el nodo en un array temporal
q=w;
}


void pantallaso(lista q)

{
     int i=1,nota__1,nota__2,nota__3,nota__4;

system("cls"); //limiar pantalla para cada llamada de la  funcion

if (q == NULL)
    { printf("\n        LA LISTA ESTA VACIA \n");
      printf("            enter para terminar....");
      system("pause");
    }

cout<<"\t\t\t---------------------"<<endl;
cout<<"\t\t\tDATOS DE LOS ALUMNOS"<<endl;
cout<<"\t\t\t----------------------"<<endl;

while(q!=NULL)
{

cout<<"NOMBRE DEL ALUMNO................."<<q->nombre<<endl;


cout<<"CARACTERISTICAS DEL ALUMNO........"<<q->caracteristicas<<endl;

cout<<"CODIGO.............................."<<q->codigo<<endl;
nota__1=q->nota1;
cout<<"NOTA__1.............................."<<nota__1<<endl;
nota__2=q->nota2;
cout<<"NOTA__2.............................."<<nota__2<<endl;
nota__3=q->nota3;
cout<<"NOTA__3.............................."<<nota__3<<endl;
nota__4=q->nota_del_proyecto;
cout<<"NOTA__DEL__PROYECTO.............................."<<nota__4<<endl;

cout<<"PROMEDIO.............................."<<(nota__1+nota__2+nota__3+nota__4)/4.0<<endl;

q=q->sgte;
i++;cout<<"\nPRESIONE ENTER PARA CONTINUAR..."<<endl;
cout<<endl;
system("pause");

}
}
//..........................................................................//
//..........................................................................//

int buscar(lista q,int valor)

{
    int c=1; // ingresamos desde la posicion 1

    while(q!=NULL)
                  if(q->codigo==valor)
                  {
                  return c; //retorna c hasta que llege a NULL
                  }
                  else
                      {
                           c++;
                           q=q->sgte;
                      }
    return 0; //retorna 0 cuando no encuentra el codigo en la lista
}


//..........................................................................//
//..........................................................................//

void menu(lista q)
{
struct nodo emp;
int opcion,valor,k=0,t;

    system("cls");
    printf("\n\n\t\t\t* * * * * MENU DE OPCIONES * * * * *");
    printf("\n\t\t---------------------------------------------------");
    printf("\n\t\t\t      BASE DE DATOS DE ALUMNOS   ");
    printf("\n\t\t-------------------------------------------------\n\n\n\n");
    printf("\t\t\t\t (1) AGREGAR ALUMNO  \n");
    printf("\t\t\t\t (2) REPORTE     \n");
    printf("\t\t\t\t (3) BUSCAR  ALUMNO POR CODIGO     \n");
    printf("\t\t\t\t (4) SALIR  ........        ");
    printf("\n              ELIGE UNA OPCION:  ");
    scanf("%d", &opcion);


while (opcion != 5)
         { switch(opcion)
           { case 1:
                  ingreso__alumno(emp,q);

                     break;
             case 2: pantallaso(q);
                       break;
             case 3:
                       system("CLS");
                       cout<<"\n\t\tDIGITE EL CODIGO DEL ALUMNO A BUSCAR\n"<<endl;
                       cin>>valor;
                       t=buscar(q,valor);
                       if(t>0)
                       {

                        cout<<"SE ENCUENTRA EL CODIGO DEL ALUMNO"<<endl;
                        }
                        if(t==0)
                        {
                        cout<<"NO SE ENCUENTRA EL CODIGO DEL ALUMNO"<<endl;
                        }
                        getch();
                         break;

           


             case 4:
                  exit( 0 );

             default : printf("\n           opcion no permitida.....");
                        printf("\n           enter para continuar....");
                        getch();

           }
         menu(q);
         printf("\n\n              ELIGE UNA OPCION:  ");
         scanf("%d", &opcion);
       }
     printf("\n                 fin del preograma....\n");
     printf("                   enter para terminar....");
getch();


}
//..........................................................................//
//..........................................................................//



int main()
{
system("color 1b");
system("cls");

    printf("\n\n\n\n\n\n\n\n\n\n\t        ...............loading...................");//texto de bienvenida
    printf("\n\t    ---------------------------------------------------------------");
    printf("\n\t       ---------------------------------------------------------");
    getch();

system("cls");//limpiar pantalla
lista q=NULL;
menu(q);//menu de opciones
}

//..........................................................................//
//..........................................................................//


Título: Re: borrar reguistro de datos
Publicado por: Nork en 12 Febrero 2011, 11:37 AM
Deberías guardar en la estructura del nodo el nodo anterior también y así cuando un nodo sea borrado (y no sea el primero o el último) haces que el nodo anterior al borrado apunte al siguiente del mismo.