Portafolios de Programación

En este espacio se podrán ver las tareas en el curso de programación de la sección 114/s5. Además de algunas investigaciones.

Se pretende agregar prácticas de laboratorio y algunos algorítmos simples que se incluyen en el temario de fundamentos de programación.

Abajo se muestra la tarea, investigación o ejercicio que se hizo por última vez en el curso.

Celina O. O.

Libreria milib.h del proyecto

#include
#include
#include
char nombra[20];
/*Estructura estandar*/
struct modulo{
char nombre[20];
char hora_e[9];
char hora_s[9];
char activ[100];
int maquina;
int matricula;
}usuario[45],p,aux;

/*funcion para obtener la fecha*/

void fecha(char *fech)
{
time_t tiempo = time(0);
struct tm *tlocal = localtime(&tiempo);
strftime(fech,10,"%d-%m-%y",tlocal);
return;
}/*Fin funcion fecha*/

/*funcion para obtener el nombre del archivo deacuerdo a la fecha
del dia*/

void nombre_ar(char *nom){
char da[5]=".dat";
fecha(nom);
strcat(nom,da);
return;
} /*Fin funcion nombre_ar*/

/*funcion para validar
void validar(int dato) en prograso jajaja{
*/


/*funcion para obtener la hora*/
void hora(char *hora)
{
time_t tiempo = time(0);
struct tm *tlocal = localtime(&tiempo);
strftime(hora,7,"%H:%M",tlocal);
return;
}/*Fin funcion hora*/

/*funcion para ingresar los datos de la estructura*/
void ingresar()
{
struct modulo *pus=usuario;
int i,e;
int pos;
char valid[20];
char cas[10],opc='s';
printf("\t**------------------------------------------**\n");
printf("\t** Ingrese los datos para cada alumno **\n ");
printf("\t**------------------------------------------**");
i=0;
do
{ setbuf(stdin,NULL);
printf("\n\tNumero de equipo:\n\t");
scanf("%s",&valid);
if(!(pos=(validar(valid))))
continue;

pos--;
if((pos>45)(pos<=0)){ printf("\n\tNo esxiste ese numero de equipo"); continue; }/*Fin if uno*/ if (((pus+pos)->maquina!=0)){
printf("\n\tNo es posible asignar un equipo que ya ha sido ocupado");
continue;
}/*Fin if dos*/
(pus+pos)->maquina=pos;
printf("\tNombre:\n\t");
scanf("%*c%[^\n]",&(pus+pos)->nombre);
printf("\tMatricula:\n\t");
scanf("%*c%[^\n]",&valid);
if(!(((pus+(pos))->matricula)=(validar(valid)))) {
(pus+pos)->maquina=0;
continue;}
printf("\tActividades:\n\t");//(pus+pos)->maquina=0;
scanf("%*c%[^\n]",&(pus+(pos))->activ);
hora((pus+(pos))->hora_e);
i++;
printf("\tIngresarà mas datos(s/n)?:\n\t");
setbuf(stdin,NULL);
scanf("%c",&opc);
}while(opc!='n');
return;
}/*Fin funcion ingresar*/

/*funcion para imprimir con formatos los datos de la estructura*/
void imprimir(){
int e;
struct modulo *pus;
pus=usuario;
system("clear");
setbuf(stdout,NULL);
printf("\n\t_______ESTADO ACTUAL:_______________________________________________\n");
for(e=0;e<45;e++){>maquina!=0){
printf("\t%-10d",((pus+e)->maquina)+1);
printf("%-10s\t",(pus+e)->nombre);
printf("%-10d\t",(pus+e)->matricula);
printf("%-10s\t",(pus+e)->hora_e);
printf("%-10s\t",(pus+e)->activ);
printf("%-10s\n",(pus+e)->hora_s);
printf("\t----------------------------------------------------------------------\n");
}/*Fin if*/
}/*Fin for*/
return;
}/*fin funcion imprimir*/

/*funcion para dar de baja los datos de la estructura
y quitarlos de la lita de datos que se mostraran ah, tambien
para guardar los datos en un archivo*/

void baja(){
setbuf(stdout,NULL);
FILE *archivo;
int opc,flag=0;;
struct modulo *pus;
pus=usuario;
while(flag==0){
printf("\tEscriba el numero del equipo del usuario que retirara:\n\t");
scanf("%d",&opc);
opc--;
if(((pus+opc)->maquina)==0){
printf("\tNo existe un usuario con ese numero de equipo\n");
continue;
}
else {
flag=1;
}
hora((pus+(opc))->hora_s);
}
if ((archivo=fopen(nombra,"a+"))==NULL)
printf("\nError no se pudo abrir el archivo");
else{
fprintf(archivo,"%d\t",((pus+opc)->maquina+1));
fprintf(archivo,"%s\t",(pus+opc)->nombre);
fprintf(archivo,"%d\t",(pus+opc)->matricula);
fprintf(archivo,"%s\t",(pus+opc)->hora_e);
fprintf(archivo,"%s\t",(pus+opc)->activ);
fprintf(archivo,"%s\n",(pus+opc)->hora_s);
fclose(archivo);
}
(pus+opc)->maquina=0;
return;
}/*Fin funcion baja*/

/*funcion para imprimirel contenido de
un archivo*/

void imprimirar (struct modulo *temp,int el){
int j=0;
for(j=0;j < i="0,j," fichero =" fopen("> ", nombre );
if( fichero )
printf( "existe (ABIERTO)\n" );
else
{
printf( "Error (NO ABIERTO)\n" );
return 0;
}
while(!feof(fichero)){
fscanf(fichero,"%d",&temp[i].maquina);
fscanf(fichero,"%*c%[^\t]",&temp[i].nombre);
fscanf(fichero,"%d",&temp[i].matricula);
fscanf(fichero,"%s",&temp[i].hora_e);
fscanf(fichero,"%*c%[^\t]",&temp[i].activ);
fgets(temp[i].hora_s,15,fichero);
i++;
}
el=i;
printf ("El fichero contiene la informacion de %d registros:\n",i-1);
if( !fclose(fichero) ){

return i;
}
else
{
printf( "\nError: fichero NO CERRADO\n" );
return 0;
}
}//<-esta es la llave jajaja /*Funcion para modificar los datos de la estructura estandar * en caso de algun erro solo por nombre*/ void modificar_n(){ int opc,flag=0; printf("\n\tEliga equipo que modificara:\n\t"); scanf("%d",&opc); opc--; while(flag==0){ if((usuario[opc].maquina)==0){ printf("\n\tEse equipo no esta ocupado"); continue; } else{ printf("\n\tEscriba el nombre correcto\n\t"); scanf("%*c%[^\n]",&usuario[opc].nombre); flag=1; } } return; } /*funcion para modificar los datos solo por matricula*/ void modificar_m(){ int opc,flag=0; printf("\n\tEliga equipo que modificara:\n\t"); scanf("%d",&opc); opc--; while(flag==0){ if((usuario[opc].maquina)==0){ printf("\n\tEse equipo no esta ocupado"); continue; } else{ printf("\n\tEscriba el la matricula correcta\n\t"); scanf("%d",&usuario[opc].matricula); flag=1; } } return; } /*funcion para ordenar los datos de un archivo por fecha*/ void ordena_mat(struct modulo *ap, int k) { int m,i,j,w; FILE *orden; struct modulo temp; char nombre[20]; char a[10]=".m"; fecha(nombre); strcat(nombre,a); if((orden=fopen(nombre, "w"))==NULL){ printf("Error de escritura"); } else{ for(i=0;i < j="0;j<(k-1);j++)" maquina="(ap+i)-">maquina;
(ap+i)->maquina=(ap+j)->maquina;
(ap+j)->maquina=temp.maquina;

strcpy(temp.nombre,(ap+i)->nombre);
strcpy((ap+i)->nombre,(ap+j)->nombre);
strcpy((ap+j)->nombre,temp.nombre);

temp.matricula=(ap+i)->matricula;
(ap+i)->matricula=(ap+j)->matricula;
(ap+j)->matricula=temp.matricula;

strcpy(temp.hora_e,(ap+i)->hora_e);
strcpy((ap+i)->hora_e,(ap+j)->hora_e);
strcpy((ap+j)->hora_e,temp.hora_e);

strcpy(temp.activ,(ap+i)->activ);
strcpy((ap+i)->activ,(ap+j)->activ);
strcpy((ap+j)->activ,temp.activ);
strcpy(temp.hora_s,(ap+i)->hora_s);
strcpy((ap+i)->hora_s,(ap+j)->hora_s);
strcpy((ap+j)->hora_s,temp.hora_s);

}
}

}
for(j=0; jmaquina);
fprintf(orden,"%s\t",(ap+j)->nombre);
fprintf(orden,"%d\t",ap[j].matricula);
fprintf(orden,"%s\t",(ap+j)->hora_e);
fprintf(orden,"%s\t",(ap+j)->activ);
fprintf(orden,"%s\n",(ap+j)->hora_s);
}
}fclose(orden);
}

/*funcion para ordenar los datos por nombre*/
void ordena_nom(struct modulo *ap, int k)
{
int m,i,j,w;
FILE *orden;
struct modulo temp;
char nombre[20];
char a[10]=".n";
fecha(nombre);
strcat(nombre,a);
if((orden=fopen(nombre, "w"))==NULL){
printf("Error de escritura");
}
else{
for(i=0;i<(k);i++) { for(j=0;j<((k)-1);j++) { if(strcmp((ap+i)->nombre,(ap+j)->nombre)<0) maquina="(ap+i)-">maquina;
(ap+i)->maquina=(ap+j)->maquina;
(ap+j)->maquina=temp.maquina;

strcpy(temp.nombre,(ap+i)->nombre);
strcpy((ap+i)->nombre,(ap+j)->nombre);
strcpy((ap+j)->nombre,temp.nombre);

temp.matricula=(ap+i)->matricula;
(ap+i)->matricula=(ap+j)->matricula;
(ap+j)->matricula=temp.matricula;
strcpy(temp.hora_e,(ap+i)->hora_e);
strcpy((ap+i)->hora_e,(ap+j)->hora_e);
strcpy((ap+j)->hora_e,temp.hora_e);

strcpy(temp.activ,(ap+i)->activ);
strcpy((ap+i)->activ,(ap+j)->activ);
strcpy((ap+j)->activ,temp.activ);

strcpy(temp.hora_s,(ap+i)->hora_s);
strcpy((ap+i)->hora_s,(ap+j)->hora_s);
strcpy((ap+j)->hora_s,temp.hora_s);
}
}
}
for(j=0; j<(k); j++){ fprintf(orden,"%d\t",(ap+j)->maquina);
fprintf(orden,"%s\t",(ap+j)->nombre);
fprintf(orden,"%d\t",ap[j].matricula);
fprintf(orden,"%s\t",(ap+j)->hora_e);
fprintf(orden,"%s\t",(ap+j)->activ);
fprintf(orden,"%s\n",(ap+j)->hora_s);
}
fclose(orden);
}
}

/*funcionpara buscar por nombre los datos de el archivo*/

void busca_nombre(){
int i=0, j, numl,flag=0;
char fecha[15];
char nombre[30];
struct modulo *temp;//<- aqui esta la estructura jajaja, ah ok :P
FILE *fichero;
temp=&p;
temp=malloc(200*sizeof(struct modulo));
printf("Escribe la fecha del archivo en el que desea buscar\n");
printf("\nEjemplo: dd-mm-aa.dat, no olvide la extensión\n");
scanf("%*c%[^\n]", &fecha);
printf("Escribe el nombre que deseas buscar: \n");
scanf("%*c%[^\n]",&nombre);
if((fichero=fopen(fecha,"r")==NULL)){
printf("No se puede leer el archivo\n");
}
else{
numl=(leerar(fecha,temp));
for (i=0;i < numl-1;i++){
if(strcmp(temp[i].nombre, nombre)==0){
printf("%-8d",temp[i].maquina);
printf("%-10s",temp[i].nombre);
printf("%-13d",temp[i].matricula);
printf("%-15s",temp[i].hora_e);
printf("%s",temp[i].activ);
printf("%-8s",temp[i].hora_s);
flag=1;
}
}/*Fin while*/
if (flag==0)
printf("\nNo se encontro el dato");
}/*Fin else*/

printf("\nEnter para regresar al menu anterior\n");
getchar();
getchar();
return;
free(temp);
fclose(fichero);
}/*Fin de la funcion*/

void busca_matricula(){
int i=0, j, numl,flag=0;
char fecha[15];
int mat;
struct modulo *temp;//<- aqui esta la estructura jajaja, ah ok :P
FILE *fichero;
temp=&p;
temp=malloc(200*sizeof(struct modulo));
printf("Escribe la fecha del archivo en el que desea buscar\n");
printf("\nEjemplo: dd-mm-aa.dat, no olvide la extensión\n");
scanf("%*c%[^\n]", &fecha);
printf("Escribe la matricula que deseas buscar: \n");
scanf("%d",&mat);
if((fichero=fopen(fecha,"r")==NULL)){
printf("No se puede leer el archivo\n");
}
else{
numl=(leerar(fecha,temp));
for (i=0;i < numl-1;i++){
if(temp[i].matricula==mat){
printf("%-8d",temp[i].maquina);
printf("%-10s",temp[i].nombre);
printf("%-13d",temp[i].matricula);
printf("%-15s",temp[i].hora_e);
printf("%s",temp[i].activ);
printf("%-8s",temp[i].hora_s);
flag=1;
}
}/*Fin while*/
if (flag==0)
printf("\nNo se encontro el dato");
}/*Fin else*/
printf("\nEnter para regresar al menu anterior\n");
getchar();
getchar();
return;
free(temp);
fclose(fichero);
}/*Fin de la funcion*/

int validar(char *numPtr)
{
int numero,i,j,flag=1;
i=strlen(numPtr);
for(j=0;j < i;j++){
if(!(isdigit(numPtr[j]))){
printf("\n\tEn este campo solo se admiten numeros");
flag=0;
break;
}
}
if (flag==1){
numero=atoi(numPtr);
return numero;
}
else
return 0;
}

No hay comentarios: