PERO SABES QUE EL HIJO DE DIOS
HA VENIDO Y NOS HA DADO
 ENTENDIMIENTO PARA
CONOCER AL VERDADERO Y
ESTAMOS EN EL VERDADERO
EN SU HIJO JESUCRISTO
 ESTE ES EL VERDADRO DIOS
Y LA VIDA VIDA ETERNA.
1ra  de Juan 5:20

"ESTRUCTURA DE DATOS"

Y
 

RINGENIERIA EN COMPUTACION
ALUMNA: EVELYN LIRA BORJA
3° SEMESTRE  SEGUNDO PARCIAL

 

 

 

 

ESTRUCTURAS

 

En programación las estructuras  son un método que permite al usuario entenderle  mejor al programa donde a las  variables a utilizar  las organiza  y las manda a llamar.  Las variables que van en una estructura pueden ser  de cualquier tipo, también  puedes declarar vectores matrices, puntero y variables sencillas. También dentro de una estructura puedes mandar a llamar otras estructuras donde haces referencia que mandas a llamar las variables que  vas a utilizar de las estructuras anteriores, pero ahora englobando todas las variables juntas en una estructura  y por ultimo mandas a llamar la estructura y le agregas otro subnombre que es la que contiene todo ,es decir:

Su sintaxis es la siguiente:

 

 


 

1._ CON FUNCIONES:
#include <conio.h>
  struct minversa
{
int h[4][4];
int a[4][4],b[4][4],mult[4][4];
};
void INVERSA();
void DIAGONAL();
void MULTIPLICACION();
void main()
{
int opc;
do{
cout<<"\n MENU ";
cout<<"\n1.- MATRIZ INVERSA ";
cout<<"\n2.- MATRIZ DIAGONAL";
cout<<"\n3.- MULTIPLICACION DE MATRICES";
cout<<"\n4.- salir...";
cout<<"\ntecelee una opcion:";
cin>>opc;
switch(opc)
{
                case 1:
                INVERSA();
                break;
                case 2:
                DIAGONAL();
                break;
   case 3:
  MULTIPLICACION();
                break;
}
}while((opc==1)||(opc==3));
getch ();
}
void INVERSA()
{
struct minversa i1;

int f, c;
int x;

for(f=0;f<=3;f++)
 {
  for(c=0;c<=3;c++)
   {
   /*cout<<"tecle un numero"<<f<<c<<":";*/
   gotoxy(c+3,f+30);cin >>x;
    i1.h[f][c]=x;
    }
}
for(f=0;f<=3;f++)
        {
         for(c=0;c<=3;c++)
                               {
        cout<< "\t" << i1.h[f][c];
                }
        }

    for(c=0;c<=3;c++)
      {
        for(f=0;f<=3;f++)
        {
                                cout<< "\t" <<i1.h[c][f];
        } }}
   void DIAGONAL()
   {
   struct minversa  d;
   int f,c,x;

for(f=0;f<=3;f++)
 {
  for(c=0;c<=3;c++)
   {

   gotoxy(c+3,f+30);cin >>x;
    d.h[f][c]=x;
    }}
for(f=0;f<=3;f++)
 {
  for(c=0;c<=3;c++)
   {
      if (c==f)
      {
       d.h[f][c]=d.h[f][c]/d.h[f][c];
      }
     else
      {
       d.h[f][c]=d.h[f][c]*0;
       } }}
for(f=0;f<=3;f++)
 {
  for(c=0;c<=3;c++)
   {
  gotoxy(c+3,f+30);cout<< d.h[f][c];
 }}}
void MULTIPLICACION()
  {

  struct minversa  m;      
  int i,j;

for(i=0;i<=3;i++)
for(j=0;j<=3;j++){

printf("\nteclee el valor de la matriz a, %d,%d:",i,j);
scanf("%d",& m.a[i][j]);
printf("\nteclee el valor de la matriz b, %d,%d:",i,j);
scanf("%d",& m.b[i][j]);
m.mult[i][j]=m.a[i][j]*m.b[i][j];
}
clrscr();

for(i=0;i<=3;i++)
for(j=0;j<=3;j++)
{
gotoxy(j+15+1,i+10+1);printf("%d",m.mult[i][j]);}}


 

 


2._ CON FUNCIONES Y REGRESO DE PARAMETRO:

#include<conio.h>
#include<iostream.h>
#include<stdio.h>
struct materia
{
  char materia[3][20];
  int clave[3],creditos[3];
};

struct salario
{
  float ph[3];
  int dt[3],horas[3],textra[3];
};

struct personal
{ int j;
  char nombre[3][20],sexo[3][20];
  int edad[3];
  struct materia pers;
  struct salario mes;
};

struct personal facil;

int i=0;
void imprimir(struct personal*),entrada();

void main()
{
  entrada();
  getch();
}

void entrada()
{
  struct personal facil;
  cout<<"nCuantos trabajadores: ";
  cin>>facil.j;
  for(i=0;i<facil.j;i++)
  {
  cout<<"------------Datos personales--------\n";
  cout<<"nombre: ";
  cin>>facil.nombre[i];
  cout<<"edad: ";
  cin>>facil.edad[i];
  cout<<"sexo: ";
  cin>>facil.sexo[i];
  cout<<"\n------------Datos escolares--------\n";
  cout<<"nombre de la materia: ";
  cin>>facil.pers.materia[i];
  cout<<"clave: ";
  cin>>facil.pers.clave[i];
  cout<<"creditos: ";
  cin>>facil.pers.creditos[i];
  cout<<"\n------------Datos laborales--------\n";
  cout<<"pago por hora: ";
  cin>>facil.mes.ph[i];
  cout<<"dias trabajados: ";
  cin>>facil.mes.dt[i];
  cout<<"horas trabajadas: ";
  cin>>facil.mes.horas[i];
  cout<<"tiempo estra: ";
  cin>>facil.mes.textra[i];

   }
  for(i=0;i<facil.j;i++)
  {imprimir(&facil); }
}

void imprimir(struct personal* datos)
{
  cout<<"\n------------Datos personales--------\n";
  cout<<"\n"<<"nombre es: "<<datos->nombre[i];
  cout<<"\n"<<"edad es: "<<datos->edad[i];
  cout<<"\n"<<"sexo es: "<<datos->sexo[i];
  cout<<"\n------------Datos escolares--------\n";
  cout<<"\n"<<"materia es: "<<datos->pers.materia[i];
  cout<<"\n"<<"clave es: "<<datos->pers.clave[i];
  cout<<"\n"<<"creditos es: "<<datos->pers.creditos[i];
  cout<<"\n------------Datos laborales--------\n";
  cout<<"\n"<<"materia es: "<<datos->mes.ph[i];
  cout<<"\n"<<"clave es: "<<datos->mes.horas[i];
  cout<<"\n"<<"creditos es: "<<datos->mes.textra[i];}


3._SIN FUNCIONES:
struct datos
 {
   char nom[40];

 };

   struct SHALOM
   {
   float promedio,calif1,calif2,c1,c2,c3;

    struct datos pers;
   };
    
     struct SHALOM ats[5];

  void main()
    {
int i;

        for(i=1;i<=5;i++){
        cout<< "\n";
     cout<<"\n teclea tu nombre:";
           cin>>ats[i].pers.nom;
         cout<<"\n teclea tu 1° calificacion:";
         cin>>ats[i].c1;
         cout<<"\n teclea tu 2° calificacion:";
         cin>>ats[i].c2;
          cout<<"\n teclea tu 3° calificacion:";
         cin>>ats[i].c3;

 

       ats[i].calif1=(((ats[i].c1+ats[i].c2)/2)*0.70);
        ats[i].calif2=ats[i].c3*0.30 ;
         ats[i].promedio=ats[i].calif1+ats[i].calif2 ;

    cout<<"\n  tu nombre es:" <<ats[i].pers.nom<<"" ;
    cout<<"\n  tu calificacion total 1° es:" << ats[i].calif1<<"";
     cout<<"\n  tu calificacion total 2°es:" << ats[i].calif2<<"";
     cout<<"\n  tu promedio es:" <<  ats[i].promedio<<"";
     }
 }




 


 

LISTAS

En programación las listas  son estructuras  donde sus datos tienen características de los arreglos  donde cuando tecleamos un elemento  y para dar acceso lo hacemos  mediante un puntero activando el int o el char u otro tipo  y activando también la dirección de memoria. La asignación de memoria ya es hecha  mediante la ejecución del programa.
TIPOS:
1._LISTAS SENCILLAS

2._DOBLEMENTE ENLAZADAS
3._CIRCULARES


LISTAS SENCILLAS:
Se caracterizan por tener un puntero y un dato solamente, es  decir un nodo.
Son aquellas listas que se enlazan atreves  de un puntero donde al conjunto de un dato y un putero se le llama nodo.
Para representar un nodo en una lista utilizaremos estructuras donde se declare la variable que representa el dato y la variable del puntero  que representa la localidad de memoria, donde las variables se harán globales y se podrán utilizar para todas las funciones (insertar, eliminar, buscar y mostrar).
  DOBLEMENTE ENLAZADAS:
Con estas listas es necesario actualizar muchos más punteros pero también se necesita menos información ya que en esta te permite su puntero viajar dependiendo el caso; porque podemos usar un puntero para recorrer hacia atrás y consultar elementos. Añadimos el campo anterior a nuestros nodos, apuntando al elemento anterior, y UltimoNodo a nuestra estructura, el cual siempre apunta al último elemento de la lista. PrimerNodo y UltimoNodo siempre están a nulo en la lista vacía. 

CIRCULARES:
 En esta lista todos los nodos están enlazados como un círculo, sin usar nulo. Estas pueden ser simples o doblemente enlazadas. Para listas con frente y final (como una cola), se guarda una referencia al último nodo de la lista. El siguiente nodo después del último sería el primero de la lista. Los elementos se pueden añadir por el final y borrarse por el principio en todo momento. Ambos tipos de listas circulares tienen la ventaja de poderse recorrer completamente empezando desde cualquier nodo. Esto nos permite normalmente evitar el uso de PrimerNodo y UltimoNodo, aunque si la lista estuviera vacía necesitaríamos un caso especial, como una variables UltimoNodo que apunte a algún nodo en la lista o nulo si está vacía.
Su sintaxis es la siguiente:

  • Con FUNCIONES Y  SIN REGRESO DE PARAMETRO:

struct nodo{
int info;
struct nodo *sig;
};
struct nodo *CAB=NULL, *AUX=NULL, *P=NULL;
int valor;
void insertar();
void mostrar();
void elimina();

void main(){
clrscr();
char op;
do{
 clrscr();
 gotoxy(31,4);printf("--MENU PRINCIPAL--");
 gotoxy(30,6);printf("1.Insertar ");
 gotoxy(30,7);printf("2.Eliminar ");
 gotoxy(30,8);printf("3.Mostrar");…………………………………….CONTINUA…………

 

 

void mostrar(){
int i=1;
if(CAB==NULL) {
 gotoxy(28,5);printf("¡¡Lista vacia!!...");
 getchar();
 return;
 }
 AUX=CAB;
gotoxy(30,5);printf("Contenido de la lista");
while(AUX!=NULL){
 gotoxy(30+i+i,7);printf("%d>NULL",AUX->info);
  AUX=AUX->sig;
  i++;
 }
 getch();
}//fin de mostrar

  • Con FUNCIONES Y  CON REGRESO DE PARAMETRO:

struct nodo{
int info;
struct nodo *sig;
};
struct nodo *CAB=NULL, *AUX=NULL, *P=NULL;
int valor;
void insertar();
void mostrar(struct nodo *);
void elimina();

void main(){
clrscr();
char op;
do{
 clrscr();
 gotoxy(31,4);printf("--MENU PRINCIPAL--");
 gotoxy(30,6);printf("1.Insertar ");
 gotoxy(30,7);printf("2.Eliminar ");
 gotoxy(30,8);printf("3.Mostrar");…………………………………….CONTINUA…………
getch();}

 

void insertar(){
struct nodo facil;
AUX=new(nodo);
clrscr();
gotoxy(30,5); printf("Numero a insertar ") ;
scanf("%d", &AUX->info);
clrscr();
AUX->sig=NULL;
if(CAB==NULL){
 CAB=AUX;
  mostrar(& facil);

void mostrar(struct nodo * port){
int i=1;
if(CAB==NULL) {
 gotoxy(28,5);printf("¡¡Lista vacia!!...");
 getchar();
 return;
 }
 AUX=CAB;
gotoxy(30,5);printf("Contenido de la lista");
while(AUX!=NULL){
 gotoxy(30+i+i,7);printf("%d>NULL",AUX->info);
  AUX=AUX->sig;
  i++;
 }
 getch();
}//fin de mostrar

 

 

 

 

 

 


EJEMPLO CON FUNCIONES Y SIN REGRESO DE PARAMETRO:

struct nodo{
int info;
struct nodo *sig;
};
struct nodo *CAB=NULL, *AUX=NULL, *P=NULL;
int valor;
void insertar(void);
void mostrar(void);
void elimina(void);

void main(){
clrscr();
char op;
do{
 clrscr();
 gotoxy(31,4);printf("--MENU PRINCIPAL--");
 gotoxy(30,6);printf("1.Insertar ");
 gotoxy(30,7);printf("2.Eliminar ");
 gotoxy(30,8);printf("3.Mostrar");
 gotoxy(30,9);printf("0.Salir");
 gotoxy(30,10);printf("Escoja una opcion ");
 op=getch();
 clrscr();
 switch(op){

  case '1':insertar(); break;
  case '2':elimina(); break;
  case '3':mostrar(); break;

 }
 }while(op!='0');
gotoxy(29,9);printf("!!ADIOS!!");
gotoxy(30,11);printf("FILIPENSES 4:13");
getch();
}//fin del main

void insertar(void){
AUX=new(nodo);
clrscr();
gotoxy(30,5); printf("Numero a insertar ") ;
scanf("%d", &AUX->info);
clrscr();
AUX->sig=NULL;
if(CAB==NULL){
 CAB=AUX;
 }
else{
 P=CAB;
 while(P->sig!=NULL){
 P=P->sig;
 }
 P->sig=AUX;
 }
}//fin de insertar

 

void elimina(void){
int x, sw=1;
if(CAB==NULL)
 {
 gotoxy(28,5);printf("¡¡Lista vacia!!...");
 getch();
 }
else
{
 gotoxy(30,5),printf("Eliminar el elemento...");
 scanf("%d", &x);
 P=CAB;
 while(((P->info)!=x)&&(sw==1)){
 if((P->sig)!=NULL){
  AUX=P;
  P=P->sig;
  }
  else{
  sw=0;
  }
 }
 if(sw==0){
 gotoxy(28,7);printf("¡¡%d no esta en la lista!!...", x);
 getch();
 }
 else{
  if(P==CAB){
   CAB=CAB->sig;
  }
  else{
   AUX->sig=P->sig;
  }
  free(P);
  gotoxy(30,7);printf("%d ha sido eliminado", x);
  getch();
  }
  }
} //fin de elimina

void mostrar(void){
int i=1;
if(CAB==NULL) {
 gotoxy(28,5);printf("¡¡Lista vacia!!...");
 getchar();
 return;
 }
 AUX=CAB;
gotoxy(30,5);printf("Contenido de la lista");
while(AUX!=NULL){
 gotoxy(30+i+i,7);printf("%d>NULL",AUX->info);
  AUX=AUX->sig;
  i++;
 }
 getch();
}//fin de mostrar

 

 



FUNCIONES

En programación Las funciones son una herramienta muy valiosa. Las funciones son un conjunto de instrucciones dentro de un programa donde todo programa tiene que tener como mínimo una función (main) o pude tener las que sean necesarias estas van declaradas fuera del main y las mandas a llamar fuera del main, estas  realizan una tarea específica, es decir las operaciones que les indiques o alguna otra indicación que estén dentro de estas. En general toman ciertos valores de entrada, llamados parámetros y proporcionan un valor de salida o valor de retorno; aunque en C++, tanto unos como el otro son opcionales, y pueden no existir.

 

1._CON REGRESO DE PARAMETRO:
#include <stdio.h>
#include <conio.h>

void hanoi(int n,int com, int aux, int fin);

void main(void){

        clrscr();
            char com='A';
            char aux='B';
            char fin='C';
            int n;

            printf("\nN£mero de discos: ");
            scanf("%d",&n);

 

            printf("\n\nLos movimientos a realizar son: \n");
            hanoi(n,com,aux,fin);
}

void hanoi(int n,int com, int aux, int fin){

            if(n==1){
                        printf("%c->%c",com,fin);
            }
            else{
                        hanoi(n-1,com,fin,aux);
                        printf("\n%c->%c\n",com,fin);
                        hanoi(n-1,aux,com,fin);
            }
   getch ();
}

2._SIN  REGRESO DE PARAMETRO:

#include <stdio.h>
#include <conio.h>
#include <iostream.h>

void  ingresar();
void mostrar();
 char p[100];

void main()
{
   cout<<"TECLEE UN PARRAFO: ";
  cin>>p;

          ingresar();
          mostrar();
    getch();
}

      void ingresar()
{
      int i;
cout<<"TECLEE UN PARRAFO: ";
  cin>>p;

  for(int i=0;i<sizeof(p);i++)
       {
         cout<<"\n"<<p[i];
      }
}

      void mostrar()
      {
      int i;
  cout<<"\n"<<p[i];

  if(p=="a")

   cout<<"\n"<<p;
  }