viernes, 8 de junio de 2012

programacion en c++ ejercicios resueltos y trucos escondidos 1



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

#include<iostream>
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;
}
estos son unos de los programas que he visto por el momento  yo estare semana a semana subiendo nuevos programas en ++
 

4 comentarios:

  1. AMIGO EXELENTE TU BLOG Y TUS PROGRAMAS
    GRACIAS!!!

    ResponderEliminar
  2. Gracias hermano, conoces algún archivo donde pueda conocer más del tema?, por favor, gracias.


    ResponderEliminar
  3. alguien me podria apoyar en el siguiente ejercicio por favor?
    Para celebrar las fiestas patronales de un pueblo se celebra una carrera popular de 9 Km. Se establecen
    las categorías masculina (M) y femenina (F), y por cada una de ellas, senior y veterano. Los nacidos antes de 1980 son veteranos (tanto para hombres como para mujeres) y el resto seniors. Según se
    realizan inscripciones se crea el archivo de texto CARRERA.TXT, de tal forma que el número de dorsal es
    la posición que ocupa el registro en el archivo. La carrera se celebra; según llegan los corredores se
    toman los tiempos realizados y los números de dorsales.


    Se desea escribir un programa para crear el archivo CARRERA. txt y un segundo programa(o módulo) que
    actualice cada registro, según el número de dorsal, con el tiempo realizado en la carrera.


    Es decir se generan dos archivos:
    CARRERA. POP ( lista de todos los atletas clasificados por año de nacimiento y número de participación)
    Resultados_CARRERA. POP(

    lista de todos los atletas clasificados por año de nacimiento y número de participación con tiempo de participación)
    Manejo con menú
    1. Registro de atletas
    2 Consultar atletas registrados
    3. Actualizar tiempos
    4. Consulta de atletas q ya participaron (cont tiempo de carrera)
    5. Salir

    ResponderEliminar
  4. FOUR different ford fusion titanium for sale
    FOUR different ford fusion titanium for sale · 1. FOUR different ford fusion titanium for sale · 2. titanium wok FOUR different titanium dioxide formula ford fusion titanium samsung watch 3 titanium for sale used ford edge titanium · 3. FOUR different ford titanium 4000 fusion titanium for sale.

    ResponderEliminar