Вы находитесь на странице: 1из 3

#include <stdio.

h>
//Libreria de funciones principales
#include <string.h>
//Libreria que se usa en strcpy
#include <stdlib.h>
//Libreria para manipulacion memorias dinamicas
#include <locale.h>
//Libreria para reconocer idiomas
struct contacto *crear_arreglo(int num);
//Funcion que reserva la memoria para los contactos
void leer(struct contacto *c, int num);
//Funcion que guarda los datos de los contactos
void imprimir(struct contacto *c, int num);
//Funcion que imprime datos de los contactos
void codificar(struct contacto *c,int num,int ascii);
//Funcio
n que utiliza un ayudante para cambios de variables
void codificador(char dato[50],int numero);
//Funcion que hace al cambio de caracteres
void grabar_archivo(FILE *archivo,struct contacto *c,int num); //Funcion que es
cribe en el archivo
void hola();
//Funcion Bienvenida
struct contacto{
//Estructura de contactos
unsigned char nombre[15];
char cel[15];
char telcasa[15];
unsigned char correo[50];
};

//Nombre
//Celular
//Telefono de Casa
//Correo

int i;
int main(int argc, char *argv[]){
//Funcion principal
setlocale(LC_ALL, "Spanish_Mexico");
//Idioma
struct contacto *c=NULL;
struct contacto *apunta= NULL;
//apuntador a estructura contacto
struct contacto contact;
//variable de estructura contacto
FILE *archivo=NULL;
int Contactos,ASCII;
hola();
Pcontactos:
//Pedir numero de contactos a guardar
printf("\n Cuantos contactos desea codificar?: ");
scanf("%d",&Contactos);
//Lee el numero de contactos a guardar
if(Contactos<=0){
//If que si es menor o igual a 0
printf("\nDame valores validos...");
//volvera a pedir cuantos contactos
goto Pcontactos;
//se desean codificar
}

printf(" Que tan codificado gustas que estn?: "); //Pide cuantos c
uadros avanza el ASCII
scanf("%d",&ASCII);
//Lee el numero de avanzar en ASCII
apunta=crear_arreglo(Contactos);
//Apunta sera igual al resultado de la Funcion crear_arreglo();
leer(apunta,Contactos);
//Entra a la funcion ya con los valores dados por el usuario
codificar(apunta,Contactos,ASCII);
//Entra a la funcion ya con los valores dados por el usuario
printf("\n\n ******\t\t\tTus contactos quedaron:\t\t\t*****");
grabar_archivo(archivo,apunta,Contactos);
//Entra a la funcion ya con los valores dados por el usuario
imprimir(apunta,Contactos);
//Entra a la funcion ya con los valores dados por el usuario
free (apunta);
//Liberar memoria
getchar();
getchar();
return 0;
}
void hola(){
//Saludo e indicaciones principales
printf("\n\t\t Universidad Nacional Autnoma de Mxico");
printf("\n\t\t
Facultad de Ingeniera");
printf("\n\t\tProgramacin Avanzada y Mtodos Numricos");
printf("\n\t\t
Grupo: 7 Proyecto 1\n");
printf("\n\n Programa que codifica dependiendo valor dado por el usuario
\n");
printf(" Max de digitos: Nombre:15 Celular:15 Telefono:15 Correo:5
0\n");
}
struct contacto *crear_arreglo(int total){
//Reservacion de la memoria dependiendo de cuantos contactos sean
struct contacto *cuantos=NULL;
cuantos=(struct contacto *)malloc(total*sizeof(struct contacto));
if(cuantos==NULL){
//En caso de no poder reservar, marcara un error
printf("\n\n\t No podemos continuar, favor de reiniciar el programa");
getchar();
//Se cerrara el programa
exit(0);
}
return cuantos;
//En casi de si crearlo, regresa el valor a "apunta"
}
void leer(struct contacto *c, int num){
//Lee los datos de los contactos
for(i=0; i<num;i++){fflush(stdin);
printf("\n\tNombre %i: ", i+1);
gets((c + i)->nombre); fflush(stdin);
printf("\tCelular %i: ", i+1);
gets((c + i)->cel); fflush(stdin);
printf("\tTelCasa %i: ", i+1);
gets((c + i)->telcasa); fflush(stdin);
printf("\tCorreo %i: ", i+1);
gets((c + i)->correo);
}

}
void imprimir(struct contacto *c, int num){
//Imprime los datos de los contactos
for(i=0; i<num; i++){
printf("\n\n\tNombre %i: %s", i+1, (c+i)->nombre);
printf("\n\tCelular %i: %s", i+1, (c+i)->cel);
printf("\n\tTelCasa %i: %s", i+1, (c+i)->telcasa);
printf("\n\tCorreo %i: %s", i+1, (c+i)->correo);
}
}
void codificar(struct contacto *c,int num, int ascii){
za la Codificacion
int i;
char aux[50];
//Variable para tener los dator un tiempo
for(i=0; i<num; i++){
//Para que la otra variable quede limpia
strcpy(aux,((c+i)->nombre));
//y se pueda escribir el nuevo valor
codificador(aux,ascii);
//para esto se apoya de la Funcion codificador();
strcpy(((c+i)->nombre),aux);

//Comien

strcpy(aux,((c+i)->cel));
codificador(aux,ascii);
strcpy(((c+i)->cel),aux);
strcpy(aux,((c+i)->telcasa));
codificador(aux,ascii);
strcpy(((c+i)->telcasa),aux);
strcpy(aux,((c+i)->correo));
codificador(aux,ascii);
strcpy(((c+i)->correo),aux);
}
}
void codificador(char dato[50],int numero){
//Hace el avance de caracteres dado por el usuario
int i=0;
while(dato[i]!='\0'){
//Caracter por caracter
dato[i]=dato[i]+numero;
i++;
}
}
void grabar_archivo(FILE *archivo,struct contacto *c,int num){ //Escribe en el
archivo
i=0;
archivo=fopen("Contactos.txt","w+");
//Se abre el archivo
while(i<num){
//Archivo en la misma carpeta del programa
fprintf(archivo,"%s\t%s\t%s\t%s\n",(c+i)->nombre,(c+i)->
telcasa,(c+i)->cel,(c+i)->correo);
i++;
}
fclose(archivo);
//Se cierra el archivo
}

Вам также может понравиться