ejercicios en c++
agenda digital con manejo de archivos:
/********************************************************************************¿Que hace el Programa?
Progrma que tiene el siguiente menu:
- Crear Archivo( Lo unico que hace es crear un archivo: agenda.dat y borrar su contenido, claro si esta ya creado)
- Agregar (Agrega en el Archivo Binario)
- Eliminar(Elimina en el Archivo Binario)
- Listar (Munestra los elementos por medio del Arhcivo Binario)
- Bucar un Amigo (Busca algun elemento del Archivo, por medio del Archivo Binario)
con la sig. información: Nombre, Edad, Telefono y Direccion
Utilizando solo Archivos Binarios. creado por gerardo paredes rodriguez
********************************************************************************/
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
typedef struct {
char nom[25];
int edad;
char tel[15];
char dir[35];
}Amigo;
/*Funciones de Archivo*/
void Crear(void);
void Listar(void);
void Agregar(void);
void Modificar(void);
void Borrar(void);
void Encontrar(void);
/*Nombre del Archivo a guardar*/
char nombre_fichero[] = "agenda.dat";
FILE *abrir_fichero_b(char cadena[], int metodo);
void main(void)
{
FILE *fp;
int opc;
char cad[3];
fp = abrir_fichero_b(nombre_fichero,0);
if( fp )
{
fclose(fp);
}
else
{
printf( "Error (NO ABIERTO)\n" );
puts("Presiona cualquier tecla para continuar.... y Crear el Archivo");
fp = abrir_fichero_b(nombre_fichero,1);
fclose(fp);
getch(); }
do{
system("cls");
puts("1. Crear Archivo (Cuidado, elimina lo que ya se tiene en el Archivo)");
puts("2. Agregar\n3. Eliminar\n4. Listar\n5. Buscar\n6. Modificar\n7. Salir");
puts("?Introduce tu opcion y depues enter.");
opc = atoi(gets(cad));
while(opc<0 || opc>7) /*Limitando la entrada de las opciones*/
opc = atoi(gets(cad));
system("cls");
switch(opc)
{
case 1:
Crear();
break;
case 2:
Agregar();
break;
case 3:
Borrar();
break;
case 4:
Listar();
break;
case 5:
Encontrar();
break;
case 6:
Modificar();
break;
}
/*Solo parar cuando sea una de las opciones*/
if(opc<7)
{
puts("\n\nPresiona Cualquier Tecla para Regresar al Menu");
getch();
}
}
while(opc!=7);
}
// FUNCION PARA CREAR UN ARCHIVO
/*****************************************************************
Funcion que sirve para borrar todo el Contenido del Archivo Binario*/
void Crear(void){
FILE *fp;
fp = abrir_fichero_b(nombre_fichero,0);
if(fp)
{
printf("\n Error de apuertura del archivo agenda.dat\n");
fclose(fp);
}
}
/********************************************************
Funcion que sirve para imprimir todos los un registros del Archivo Binario*/
void Listar(void){
FILE *fp;
int i=1;
Amigo aux;
fp = abrir_fichero_b(nombre_fichero,0);
if(!(fp))
printf("\n Error de apuertura del archivo agenda.dat\n");
else{
printf("\n U S U A R I O S E N L A A G E N D A\n");
printf("---------------------------------------------------------------\n");
while ((fread(&aux, sizeof(aux), 1, fp))!=0){
printf("=> Datos del Amigo %d\n",i);
printf("Nombre: %s | Edad: %d | Telefono: %s\n",aux.nom,aux.edad,aux.tel);
printf("Direccion: %s\n",aux.dir);
i++;
}
printf("---------------------------------------------------------------\n");
fclose(fp);
}
}
/********************************************************
Funcion que sirve para agregar un registro dentro del Archivo Binario*/
void Agregar(void){
FILE *fp;
Amigo aux;
char cad[3];
printf("\n Agregando un Amigo Nuevo al archivo binario agenda.dat\n");
fp=abrir_fichero_b(nombre_fichero,2);
if(!(fp))
printf("\n Error de apuertura del archivo agenda.dat\n");
else{
/*Introduciendo los Datos del Amigo*/
printf("Dame el nombre del Amigo: ");
gets(aux.nom);
printf("Dame la Edad del Amigo: ");
aux.edad=atoi(gets(cad));
printf("Dame el telefono del Amigo: ");
gets(aux.tel);
printf("Dame la direccion del Amigo: ");
gets(aux.dir);
fwrite(&aux, sizeof(aux), 1, fp);
fclose(fp);
}
}
/********************************************************
Funcion que sirve para Modificar un registro dentro del Archivo Binario*/
void Modificar(void){
FILE *fp;
Amigo aux;
int n;
char cadena[25],cad[2];
fp=abrir_fichero_b(nombre_fichero,3);
if(!(fp))
printf("\n Error de apuertura del archivo agenda.dat\n");
else{
printf("Como se llama al amigo que quieres Modificar: ");
gets(cadena);
/*Buscando el Amigo dentro del Archivo*/
while ((n=fread(&aux, sizeof(aux), 1, fp))!=0 && stricmp(aux.nom,cadena)!=0);
if (n==0)
printf("No existe el cuate llamado: %s ",cadena);
else{
printf("\n Amigo encontrado....!!!\n");
printf("Nombre: %s ",aux.nom);
printf("Edad: %d ",aux.edad);
printf("Telefono %s ",aux.tel);
printf("Direccion: %s\n",aux.dir);
printf("\n CAMBIANDO VALORES \n");
printf("Dame el nombre nuevo del Amigo: ");
gets(aux.nom);
printf("Dame la nueva Edad del Amigo: ");
aux.edad=atoi(gets(cad));
printf("Dame el nuevo telefono del Amigo: ");
gets(aux.tel);
printf("Dame la nueva direccion del Amigo: ");
gets(aux.dir);
printf("\n GRABANDO Y CERRANDO ARCHIVO \n");
fseek(fp,-1*sizeof(aux),SEEK_CUR);
fwrite(&aux, sizeof(aux), 1, fp);
}
fclose(fp); //Cerramos el archivo
}
}
/********************************************************
Funcion que sirve para borrar un registro dentro del Archivo Binario*/
void Borrar(void){
FILE *fp,*fd;
Amigo aux;
int encontrado=0;
char cadena[25];
printf("Introduce el nombre del Amigo a borrar: ");
gets(cadena);
printf("\n BORRANDO REGISTROS \n");
fp=abrir_fichero_b(nombre_fichero,0);
if(!(fp))
printf("\n Error de apuertura del archivo agenda.dat\n");
else{
fd=abrir_fichero_b("paso.$$$",1);
if(!(fd))
printf("\n Error Imposible crear archivo auxiliar\n");
else{
while ((fread(&aux, sizeof(aux), 1, fp))!=0)
if(stricmp(aux.nom,cadena)!=0)
fwrite(&aux, sizeof(aux), 1, fd);
else
encontrado=1;
fclose(fd);
}
fclose(fp);
if(encontrado){
system("del agenda.dat");
system("ren paso.$$$ agenda.dat");
printf("\n Registro BORRADO con Exito!!!\n");
}
else{
system("del paso.$$$");
printf("\n El Registro NO SE ENCONTRO, no fue borrado!!!");
}
}
}
/******************************************
Funcion para Encontrar un Amigo e imprimir sus datos*/
void Encontrar(void){
FILE *fp;
Amigo aux;
int n;
char cadena[25];
printf("Introduce el nomrbre del Amigo que buscas: ");
gets(cadena);
printf("\n Buscando a un Amigo \n");
fp=abrir_fichero_b(nombre_fichero,0);
if(!(fp))
printf("\n Error de apuertura del archivo agenda.dat\n");
else{
while ((n=fread(&aux, sizeof(aux), 1, fp))!=0 && stricmp(aux.nom,cadena)!=0);
if (n==0)
printf("No existe el cuate llamado: %s ",cadena);
else{
printf("\n Amigo encontrado....!!!\n");
printf("Nombre: %s | Edad: %d | Telefono: %s\n",aux.nom,aux.edad,aux.tel);
printf("Direccion: %s\n",aux.dir);
/* getch();*/
}
}
}
/*************************************************
Funcion que Carga el Archivo y regresa un apuntador con que se va ha manejar el Archivo
Recibe: El nombre del Archivo , Y el método con que se va abrir el Archivo
Un Apuntador tipo Archivo, 0 - Solo Lectura , 1 - Para crearlo de nuevo desde cero,
2 - Anhadir Informacion, 3 - para Lectura y Escritura.
Regresa: El apuntador de Tipo FILE, con el cual se abrio*/
FILE *abrir_fichero_b(char cadena[], int metodo){
FILE *x;
switch(metodo){
case 0:
x = fopen(cadena,"rb");
break;
case 1:
x = fopen(cadena,"wb");
break;
case 2:
x = fopen(cadena,"ab");
break;
case 3:
x = fopen(cadena,"r+b");
break;
}
return x;
}
programa que muestra los dias que tienes de nacido solo teclea tu edad actual y listo:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
main()
{
int d=365,x,a,y,z;
printf("\ndametu edad\n");
scanf("%d",&a);
x=a/4;
y=d*a;
z=y+x;
printf("\ntu tienes %d dias de nacido\n",z);
system("pause");
}
programa que muestra caracteres ascc:
# include<stdio.h>
# include<conio.h>
main()
{
int i;
printf("Los Caracteres ASCII son: \n");
for(i=32;i<=164;i++) {
if(i<97 || i>122)
printf("%c %d \t",i,i);
}
getch();
}
programa que ordena numeros de mayor a menor
using namespace std;
int main()
{
int n_num=0,num=0,elmayor=0,c=0;
cout <<"Introduce cuantos numeros vas a utilizar: "; cin >> n_num;
for(c=1;c<=n_num;c++)
{
cout <<"\nIntroduce el numero " << c <<": "; cin >> num;
if(num>elmayor)
{
elmayor=num;
}
}
cout <<"\n\tEl numero mayor fue el " << elmayor;
cin.get();cin.get();
return 0;
}
aprende c++ curso
programa que calcula area y perimetro de figuras geometricas
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
int a,b,c,d,e,p,x;
void trianguloarea()
{
system("cls");
printf("\n Dame el valor de la base: ");
scanf("%d",&a);
printf("\n Dame el valor de la altura: ");
scanf("%d",&b);
x=a*b/2;
printf("\n El area es %i",x);
getch();
}
void trianguloperimetro()
{
system("cls");
printf("\n Dame el valor del primer lado: ");
scanf("%d",&c);
printf("\n Dame el valor del segundo lado: ");
scanf("%d",&d);
printf("\n Dame el valor del tercer lado: ");
scanf("%d",&e);
p=c+d+e;
printf("\n el perimetro es %i",p);
getch();
}
void rectanguloarea()
{
system("cls");
printf("\n Dame el valor de la altura: ");
scanf("%d",&a);
printf("\n Dame el valor de la base: ");
scanf("%d",&b);
d=a*b;
printf("\n El area es %i",d);
getch();
}
void rectanguloperimetro()
{
system("cls");
printf("\n Dame el valor de la altura: ");
scanf("%d",&a);
printf("\n Dame el valor de la base: ");
scanf("%d",&b);
d=2*a+2*b;
printf("\n El area es %i",d);
getch();
}
int main()
{
do
{
system("cls");
printf("\n AREA Y PERIMETRO DE 2 DE FIGURAS\n ");
printf("\n 1 triangulo area\n");
printf("\n 2 Triangulo perimetro\n");
printf("\n 3 Rectangulo area\n");
printf("\n 4 Rectangulo perimetro\n");
printf("\n 5 Salir\n");
printf(" \n ELIGE UNA OPCION....: ");
scanf("%d",&e);
switch (e)
{
case 1:
trianguloarea();
break;
case 2:
trianguloperimetro();
break;
case 3:
rectanguloarea();
break;
case 4:
rectanguloperimetro();
break;
}
}
while(e!=5);
}programa que muestra el numero de letras y espacios que tiene una frase
/*Programa para contabilizar el número de letras y de espacios
que tiene una frase */
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char frase[100], *parte, frasef[100]={0};
int lng,spc=0;
cout<<"Introduce una frase: "; cin.getline(frase, 100, '\n');
parte=strtok(frase," ");
strcat(frasef,parte);
while((parte=strtok(NULL," ")) != NULL)
{
strcat(frasef,parte);
spc++;
}
lng=strlen(frasef);
cout<<"Tu frase tiene "<<lng<<" letras y "<<spc<<" espacios";
cin.get();cin.get();
return 0;
}