/*
Author:Carlos Marin Ramirez Garcia
Date: 21/10/13 08:40
Description: implementacion de una cola con
una lista simple, usando las
operciones basicas de una cola
estaVacia(),agregar(dato),extraer(),
mostrarprimero(),limpiar() que se
implementa dentro del destructor.
*/
#include<iostream>
using namespace std;
class NodoP
{
public:
int dato;
NodoP *sig;
NodoP(int dato)
{
this->dato=dato;
sig=NULL;
}
};
class ColaP
{
public:
NodoP *primero;
NodoP *ultimo;
ColaP()
{
primero=NULL;
ultimo=NULL;
}
int estaVacia()
{
return(primero==NULL && ultimo==NULL);
}
void agregar(int dato)
{
NodoP *nodo=new NodoP(dato);
if(estaVacia())
{
primero=nodo;
ultimo=nodo;
}
else
{ ultimo->sig=nodo;
ultimo=nodo;
}
}
int extraer()
{
if(estaVacia())
{
cout<<"no hay datos"<<endl;
return 0Xfffff;
}
else
{
NodoP *nodo;
nodo=primero;
primero=nodo->sig;
if(primero==NULL)
{
ultimo=NULL;
}
return nodo->dato;
delete nodo;
}
}
void imprimir()
{
NodoP *nodo;
nodo=primero;
if(estaVacia())
{
cout<<"sin nodos"<<endl;
}
else
{
while(nodo!=NULL)
{
cout<<"nodo:"<<nodo->dato<<endl;
nodo=nodo->sig;
}
}
}
int mostrarprimero()
{
if(estaVacia())
{
cout<<"no hay nodo"<<endl;
return 0Xffff;
}
else
{
return primero->dato;
}
}
void limpiar()
{
NodoP *nodo,*prev;
nodo=primero;
while(nodo!=NULL)
{
prev=nodo->sig;
delete nodo;
nodo=prev;
}
primero=NULL;
ultimo=NULL;
}
~ColaP()
{
limpiar();
}
};
main()
{
int x;
ColaP cola;
cola.agregar(10);
cola.agregar(11);
cola.agregar(12);
cola.agregar(13);
cola.imprimir();
x=cola.extraer();
cout<<"elemto extraido: "<<x<<endl;
x=cola.mostrarprimero();
cout<<"el primer elemento es:"<<x<<endl;
cola.imprimir();
cola.~ColaP();
cola.imprimir();
cola.extraer();
cola.agregar(10);
x=cola.extraer();
cout<<"elemto extraido: "<<x<<endl;
cola.imprimir();
system("pause");
}
lunes, 21 de octubre de 2013
cola con lista simple
martes, 15 de octubre de 2013
Agenda con estructura dinamica
#include "lista.h"
void menu(){
printf("\n1. Insertar estudiante");
printf("\n2. Recorrer lista ");
printf("\n3. SALIR ");
}
alumno* leerDatos(alumno *inicio){
alumno *nuevo;
alumno *nodoSiguiente;
nuevo= (alumno *)malloc(sizeof(alumno));
printf("\n Nombre:");
scanf(" %[^\n]", nuevo->nom);
printf(" Matricula:");
scanf(" %[^\n]", nuevo->mat);
printf(" Edad:");
scanf("%d", &(nuevo->edad));
printf(" Prom General:");
scanf("%lf", &(nuevo->promG));
nuevo->sig=NULL;
if (inicio== NULL){
inicio= nuevo;
}
else{
nodoSiguiente=inicio;
while(nodoSiguiente->sig != NULL ){
nodoSiguiente=nodoSiguiente->sig;
}
nodoSiguiente->sig=nuevo;
}
return inicio;
}
void mostrarLista(alumno *inicio){
alumno *ultimo;
int i=1;
if (inicio == NULL)
printf("\nNO HAY LISTA\n");
else {
ultimo=inicio;
printf("\n LISTA");
printf("\nNum Nombre\t\tMatricula\tPromedio ", i);
do{
printf("\n %d. %s\t\t\t\t%s\t%g ", i, ultimo->nom, ultimo->mat,ultimo->promG);
ultimo=ultimo->sig;
i++;
}while(ultimo != NULL );
}
}
#include <stdio.h>
#include <stdlib.h>
struct estudiante {
char mat[20];
char nom[80];
int edad;
double promG;
struct estudiante *sig;
};
typedef struct estudiante alumno;
void menu();
alumno* insertarEstudiante(alumno *inicio);
void mostrarLista(alumno *inicio);
#include "lista.h"
void menu(){
printf("\n1. Insertar estudiante");
printf("\n2. Recorrer lista ");
printf("\n3. SALIR ");
}
alumno* leerDatos(alumno *inicio){
alumno *nuevo;
alumno *nodoSiguiente;
nuevo= (alumno *)malloc(sizeof(alumno));
printf("\n Nombre:");
scanf(" %[^\n]", nuevo->nom);
printf(" Matricula:");
scanf(" %[^\n]", nuevo->mat);
printf(" Edad:");
scanf("%d", &(nuevo->edad));
printf(" Prom General:");
scanf("%lf", &(nuevo->promG));
nuevo->sig=NULL;
if (inicio== NULL){
inicio= nuevo;
}
else{
nodoSiguiente=inicio;
while(nodoSiguiente->sig != NULL ){
nodoSiguiente=nodoSiguiente->sig;
}
nodoSiguiente->sig=nuevo;
}
return inicio;
}
void mostrarLista(alumno *inicio){
alumno *ultimo;
int i=1;
if (inicio == NULL)
printf("\nNO HAY LISTA\n");
else {
ultimo=inicio;
printf("\n LISTA");
printf("\nNum Nombre\t\tMatricula\tPromedio ", i);
do{
printf("\n %d. %s\t\t\t\t%s\t%g ", i, ultimo->nom, ultimo->mat,ultimo->promG);
ultimo=ultimo->sig;
i++;
}while(ultimo != NULL );
}
}
Plantilla generica para una cola
/*
Author:Carlos Martin ramirez Garcia
Date: 15/10/13 12:11
Description:Plantilla generica de una cola
*/
#include"NodoE.h"
#include"ColaE.h"
#include"NodoE.cpp"
#include"ColaE.cpp"
#include<iostream>
using namespace std;
int main()
{
ColaE<int> cola;
cola.agregar(10);
cola.agregar(11);
cola.agregar(12);
cola.agregar(13);
cola.agregar(14);
cola.agregar(15);
cola.imprimir();
system("pause");
return 0;
}
#ifndef COLAE_H
#define COLAE_H
#include"NodoE.h"
template<class T>
class ColaE
{
public:
NodoE<T> *primero;
NodoE<T> *ultimo;
ColaE();
int estaVacia();
void agregar(T dato);
T extraer();
T primerElemento();
void limpiar();
void imprimir();
};
#endif
#include<iostream>
using namespace std;
#include"NodoE.h"
#include"ColaE.h"
template <typename T>
ColaE<T>::ColaE()
{
primero=NULL;
ultimo=NULL;
}
template <typename T>
int ColaE<T>::estaVacia()
{
return(primero==NULL);
}
template <typename T>
void ColaE<T>::agregar(T dato)
{
NodoE<T> *nodo=new NodoE<T>(dato);
if(estaVacia())
{
primero=nodo;
ultimo=nodo;
}
else
{
ultimo->sig=nodo;
ultimo=nodo;
}
}
template <typename T>
T ColaE<T>::extraer()
{
NodoE<T> *nodo;
nodo=primero;
if(estaVacia())
{
return ;
}
else
{
primero=nodo->sig;
if(primero==NULL)
{
ultimo=NULL;
return nodo->dato;
}
}
}
template <typename T>
T ColaE<T>::primerElemento()
{
if(estaVacia())
return NULL;
else
{
return primero->dato;
}
}
template <typename T>
void ColaE<T>::limpiar()
{
primero=NULL;
ultimo=NULL;
}
template <typename T>
void ColaE<T>::imprimir()
{
NodoE<T> *nodo;
nodo=primero;
int i=1;
if(estaVacia())
{
cout<<"no existen datos"<<endl;
}
else
{
while(nodo!=NULL)
{
cout<<"nodo "<<i<<":"<<nodo->dato<<endl;
nodo=nodo->sig;
i++;
}
}
}
#ifndef NODOE_H
#define NODOE_H
template<class T>
class NodoE
{
public:
T dato;
NodoE *sig;
NodoE(T);
NodoE();
};
#endif
#include"NodoE.h"
#include<iostream>
using namespace std;
template <typename T>
NodoE<T>::NodoE(T dato)
{
this->dato=dato;
sig=NULL;
}
template<typename T>
NodoE<T>::NodoE()
{
dato=NULL;
sig=NULL;
}
lunes, 14 de octubre de 2013
Calcula dias fecha1 entre fecha2 y fecha1 + n dias=fecha2
/*
Author: Carlos Marin Ramirez Garcia
Date: 14/10/13 21:07
Description: Programa que recibe fecha inicial,
fecha final y calcula los dias transcurridos y tambien suma
n dias a la fecha incial para obtener la fecha final.
*/
#include<stdio.h>
#include<conio.h>
void valida_fecha(int *);
void fechaFinal(int *, int);
int validaBisiesto(int *);
void cuentaDias(int *, int *);
void validarAnio(int *);
void validarMes(int *);
main()
{
int i,f1[3],f2[3];
int n, total;
printf("\n\t\t\tingresa la primer fecha\n");
printf("ingresa el dia:");
scanf("%d",&f1[0]);
printf("ingresa el mes:");
scanf("%d",&f1[1]);
printf("ingresa el anio:");
scanf("%d",&f1[2]);
valida_fecha(f1);
printf("\n\t\t\tingre la segunda fecha\n");
printf("ingrese el dia:");
scanf("%d",&f2[0]);
printf("ingrese el mm:");
scanf("%d",&f2[1]);
printf("ingrese el nn:");
scanf("%d",&f2[2]);
valida_fecha(f2);
cuentaDias(f1,f2);
printf("\ningresa cantidad de dias:");
scanf("%d",&n);
printf("fecha inicial %d-%d-%d + %d = FECHA FINAL :",f1[0],f1[1],f1[2],n);
fechaFinal(f1,n);
getch();
}
void validarAnio(int f1[])
{
while(f1[2]<=0)
{
printf("anio invalido\n");
printf("ingrese el anio:");
scanf("%d",&f1[2]);
}
}
void validarMes(int f1[])
{
while(f1[1]<=0 || f1[1]>12)
{
printf("mes invalido\n");
printf("ingrese el mm:");
scanf("%d",&f1[1]);
}
}
void valida_fecha(int f1[])
{
validarMes(f1);
validarAnio(f1);
int mes[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int i, aux;
aux=validaBisiesto(f1);
if(aux!=0)
mes[1]=29;
while((f1[0]<=0 || f1[0]>mes[f1[1]-1] ))
{
printf("d invalido\n");
printf("ingrese el dia:");
}
printf("\n\t\t\tla fecha es correcta\n\n");
printf("\n\t\t%d-%d-%d\n",f1[0],f1[1],f1[2]);
}
int validaBisiesto(int f1[])
{
if(f1[2]%4==0)
return 1;
else if(f1[2]%400==0 && f1[2]%100==0)
return 1;
else
return 0;
}
void cuentaDias(int f1[], int f2[])
{
int i,sumaDf1=0,sumaDf2=0, verifica,anios,totalDias;
int mes[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int aux[3];
anios=f2[2]-f1[2];
for(i=0;i<3;i++)
{
aux[i]=f1[i];
}
while(aux[2]<=f2[2])
{
if(verifica=validaBisiesto(aux)!=0 && aux[1]>3)
{
mes[1]+1;
}
aux[2]=aux[2]+1;
}
for(i=0; i<f1[1]-1; i++)
{
sumaDf1+=mes[i];
}
for(i=0; i<f2[1]-1; i++)
{
sumaDf2+=mes[i];
}
totalDias=(anios*365)-sumaDf1+sumaDf2-f1[0]+f2[0];
printf("total:%d",totalDias);
}
void fechaFinal(int f1[], int n)
{
int tDias=0, verifica;
int mes[12]={31,28,31,30,31,30,31,31,30,31,30,31};
while(n > 0)
{
while(f1[1]<=12 && n>27)
{
if(verifica=validaBisiesto(f1)!=0)
{
mes[1]+1;
}
n=n-mes[f1[1]-1];
f1[1]=f1[1]+1;
while(f1[1]>12)
{
f1[2]=f1[2]+1;
f1[1]=1;
}
}
if(f1[0]+n==mes[f1[1]-1])
{
f1[0]=mes[f1[1]-1];
n=n-n;
}
else if(f1[0]+n>mes[f1[1]-1])
{
tDias=f1[0]+n-mes[f1[1]-1];
f1[1]=f1[1]+1;
f1[0]=tDias;
n=n-n;
}
else
{
f1[0]= f1[0]+n;
n=n-n;
}
}
printf("%d-%d-%d",f1[0], f1[1], f1[2]);
getch();
}
Suscribirse a:
Entradas (Atom)