Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - pedro0620

#1
Hola! Estoy haciendo un programa donde manejo archivos de texto donde el usuario ingresa:
- Nombre de Empleado
- Salario
- Puesto
- Direccion
- Telefono

Toda va muy bien pero cada registro debe contener un ID automatico, 1,2,3 etc.. Utilize un metodo donde utilizo enteros, pero no salen en el archivo, el maestro nos dijo que deberia ser tipo char para que apareciera en el archivo de texto...

Alguien que me pueda echar la mano con este paso por favor!!
#2
Estoy haciendo un programa que maneje los datos de un album de musica, pido nombre del album, del artista canciones del album y genero, pero al pedir el genero quiero hacer que el usuario solo ingrese las opciones que le pongo. Por ejemplo al momento de que el usuario llegue al campo de ingresar genero solo ponga:
-Rock
-Jazz
-Rap
-Pop

que ingrese una de esas opciones y que al momento de poner otra cosa que no sea las opciones de arriba le diga que ingrese solo los generos mostrados arriba.

Alguien que me pueda ayudar en este paso
#3
Estoy haciendo un programa que maneja archivos de texto con estructuras pidiendo los registros con algunos campos de informacion sobre musica:
Nombre de Artista
Nombre del Album
Genero
Y ID

toda va bien con el programa, pero el id el profesor quiere que se introduzca automáticamente sin necesidad de que el usuario tenga que escribirlo.
Y la verdad no se como puedo hacer esta funcion... alguien que me pueda echar la mano en esto?
#4
Programación C/C++ / Arboles Binarios en C++
3 Octubre 2016, 05:10 AM
Hola!

Necesito desarrollar un programa en la que se haga uso de un árbol binario para almacenar la información que se requiere de acuerdo a una aplicación de la vida diaria.

Un ejemplo seria un arbol genealógico de alguna familia donde el abuelo o la abuela vendrian siendo la raiz y dependiendo de los hijos que tuvieron serian hijos izq o der.

Algun ejemplo que pueda utilizar para hacer algo asi?
No se si me explique bien...
#5
Hola!
Estoy manejando un programa en Dev C++ donde tengo que crear un archivo de texto con las funciones fwrite,fread y fseek (creo que esta sirve para el metodo de buscar) usando estrucuras y con el uso de un menu que lleve:
1- Ingresar Registro
2- Mostrar Registros
3- Buscar Registro
4- Modificar Registro
5- Salir

Ayuda con el de buscar y modificar...
Tengo una parte del codigo de buscar pero no me salio..

Aqui esta mi codigo:


//Menu Manejo de Archivos C++
#include<cstdlib>
#include<iostream>
#include<string.h>
#include<conio.h>
#include<stdio.h>
#include<ctype.h>
#include<windows.h> //Para utilizar la funcion Sleep
using namespace std;

struct musica
{
   char id[5];
   char nombre_album[50];
   char nombre_artista[30];
   char genero[15];
   char tracks[2];
   char año[5];
   char salto='\n';
};

musica cargar_datos ();  // Cargar struct con los datos ingresados
musica album;

bool repite=true;
bool encontrado=false;
int i=0, band=0,fin=0;
void menu();
void crear();
void mostrar();
void salir();



int main()
{
   menu();              //Llamamos al metodo menu
   return 1;
}

void menu() //Metodo para el Menu
{
   int opcion=0;
   do
   {
      cout<<endl<<endl;
      system("Color F1");
       cout<<"\t       Menu de Manejo de Archivos en C++"<<endl<<endl;
       cout<<"\t\t[1]- Crear e Ingresar registros al Archivo"<<endl;
       cout<<"\t\t[2]- Mostrar Registros"<<endl;
       cout<<"\t\t[3]- Buscar Registros"<<endl;
       cout<<"\t\t[4]- Modificar un Registro"<<endl;
       cout<<"\t\t[5]- Salir"<<endl;
       cout<<"\t\t-------------------------------"<<endl;
       cout<<"\t\tOpcion: ";
       cin>>opcion;
       switch(opcion)
      {
           case 1:
               crear();
               system("pause>null");
               system("cls");
           break;
           case 2:
              mostrar();
               system("pause>null");
               system("cls");
           break;
           case 3:
         /*buscar();
               system("pause>null");
               system("cls");*/
           break;
           case 4:
               /*modificar();
               system("pause>null");
               system("cls");*/
           break;
           case 5:
               salir();
           break;
           default:
              cout<<endl;
              system("Color FC");
               cout<<"\t\tOpcion Incorrecta!"<<endl;
               Sleep(2000);
               system("Color F1");
               system("cls");
       }
   }while(opcion!=6);
   
}//Metodo menu

void crear() //Metodo para el crear el archivo
{
   FILE* CD=fopen("musica.txt", "w");

   string consulta = "s";
   memset(&album,0,sizeof(&album));

   musica registro;

   while(consulta!="n")
   {
       registro = cargar_datos();
       fwrite(&registro, sizeof(musica), 1, CD );
       cout<<endl;
       cout<<"\t\tDesea cargar mas registros [ s/n ]: ";
       getline(cin,consulta );
   }

   cout<<endl;
   cout<<"\t\t¡Registro Agregado Correctamente!"<<endl;
   fclose(CD);
}

musica cargar_datos()  //Funcion para ingresar los registros dentro del archivo
{
   
   string nombre="\0",apellido="\0",telefono="\0",direccion="\0",email="\0";
   //memset(&cliente,0,sizeof(&cliente));
   cout<<"\tIngrese los datos que se le piden a continuacion"<<endl<<endl;

   fflush(stdin);
   cout<<"\t\tID: ";
   gets(album.id);
   fflush(stdin);
   
   fflush(stdin);
   cout<<"\t\tNombre del Album: ";
   gets(album.nombre_album);
   //strcpy(album.nombre_album, nombre_album.c_str(); // función strcpy( destino, origen ) y método c_str() de la clase string
   fflush(stdin);

   fflush(stdin);
   cout<<"\t\tNombre del Artista: ";
   gets(album.nombre_artista);
   fflush(stdin);
   
   do
   {   
     fflush(stdin);
     cout<<"\t\tGenero: ";
     gets(album.genero);
     fflush(stdin);
     fin=strlen(album.genero);
     band=0;
     
     for(i=0;i<fin;i++)
     {
       if(((album.genero>='A')&&(album.genero<='Z'))||((album.genero>='a')&&(album.genero<='z'))||(album.genero==' '))
       {
         band=0;
       }
       else
       {
         i=fin;
         band=1;
         system("Color FC");
         cout<<"\tCaracteres invalidos... Intentelo de nuevo..."<<endl;
         Sleep(2000);
         system("Color F1");   
       }
      }
     
   }while(band==1);
   fflush(stdin);
   cout<<"\t\tNumero de Tracks: ";
   gets(album.tracks);
   fflush(stdin);
   
   fflush(stdin);
   cout<<"\t\tAnyo: ";
   gets(album.año);
   fflush(stdin);
   
   album.salto;
   
   return album;
}

void mostrar() //Metodo para leer el archivo
{
   FILE* CD = fopen("musica.txt", "r");

   musica registro;

   cout<<endl;
   cout<<"\t\tRegistros Ingresados en el Archivo"<<endl;
   cout<<"\t\t________________________________"<<endl;

   fread(&registro, sizeof(musica), 1, CD);
   //read <t_cliente> ( arch_cliente ); // ASI LO INVOCO SI USO EL TEMPLATE

   while(feof(CD) ==0)
   {    // TAMBIEN PODRIA PONER COMO CONDICIÓN feof( arch_cliente ) == 0
       cout<<"\t\tID: " <<registro.id<<endl;
       cout<<"\t\tNombre del Album: "<<registro.nombre_album<< endl;
       cout<<"\t\tNombre del Artista: "<<registro.nombre_artista<<endl;
       cout<<"\t\tGenero: "<<registro.genero<<endl;
       cout<<"\t\tNumero de Trakcs: "<<registro.tracks<<endl;
       cout<<"\t\tAnio: "<<registro.año<<endl;
       cout<<"\t\t________________________________"<<endl;

       fread(&registro, sizeof(musica), 1, CD);
       
   }

   cout<<endl;
   cout<<"\t\tSe completo la lectura del archivo..."<<endl;
   fclose(CD);
}

void salir() //Metodo para finalizar el programa
{
   cout<<endl;
   cout<<"\t\tPrograma Finalizado!! Hasta Pronto ^_^/"<<endl;
}

void buscar()
{
   
}

void modificar()
{

}

#6
Ya lo intente asi con string y sigue igual..
Mis variables las tengo en tipo char no se si eso tenga algo que ver.

#7
Hola!
Estoy realizando un menú con manejo de archivos para pedir datos de un empleado...
Con las funciones ifstream y ofstream!

Todo va muy bien en el programa pero eh detectado que a la hora de ingresar el nombre por ejemplo, si ingreso:

Brian Alberto

Al momento de mostrar en pantalla los datos y ver la informacion en el archivo, solo me muestra el Brian y al parecer solo lee los caracteres antes del espacio...

Alguien que me diga si se puede solucionar esto por favor!
#8
Programación C/C++ / Ayuda con Manejo de archivos!
9 Septiembre 2016, 02:29 AM
Estoy haciendo un menu donde tenga las opciones de crear,mostrar,busrcar,eliminar y modificar archivo...

Ya tengo casi todo solo me hace falta el de eliminar y modificar.
Pero ahorita tengo bastantes problemas con el de modificar ya que al momento de pedrile que ingrese el numero de registro para modificaar no entra al ciclo... Quizas por el tiempo que eh estado en esto no veo el error. alguien que me pueda ayudar con esto o que me explique otro metodo para modificar.

este es mi codigo:

#include <Iostream>
#include<ctype.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
using namespace std;

FILE *empleados;
int n=1; /*Número del empleado*/
int i=0,band=0,fin=0,e=0,o=0;
int respu=0;
int r1=0, r2=0, r3=0, r4=0;

struct sRegistro
{
    char nombre[80];
    char apellido[80];
    char telefono[80];
    char direccion[80];
    char correo[80];
    char resp[5];
    char Cedula[11];
    char k, nom[80];
    double salario;
    int Eliminado;
} registro;


void Menu()
{
   printf("\t\t Menu Registros  \n");
   printf("\n1.- Crear Registro");
   printf("\n2.- Ingresar datos");
   printf("\n3.- Modificar Registro");
   printf("\n4.- Eliminar Registro");
   printf("\n5.- Mostrar Registros");
   printf("\n6.- Buscar Registro");
   printf("\n7.- Salir \n");
}

void creararchivo()
{
       empleados=fopen("empleados.txt", "r");

   if(!empleados)
   {
      empleados=fopen("empleados.txt", "w");
      printf("\nArchivo creado!");
   }
   else
   {
      printf("\nEl Archivo ya existe!");
   }

   fclose (empleados);

   return;
}

void insertararchivo()
{
   
   empleados=fopen("empleados.txt","a+");

   if(empleados == NULL)
   {
      printf("El archivo no existe! \nPor favor debe crearlo");
      return;
   } 
         
             printf("Introduzca el numero del empleado: ");
            scanf("%s",&registro.Cedula);     
             do
            {
               //system ("cls");                   
               fflush(stdin);
               printf("Introduzca el Nombre: ");
               scanf("%s", &registro.nombre);
               //while (nom[fin]!='\0')fin++;
               fin=strlen(registro.nombre);
               band=0;
               for(i=0;i<fin;i++)
               {
                  if(((registro.nombre>='A')&&(registro.nombre<='Z'))||((registro.nombre>='a')&&(registro.nombre<='z'))||(registro.nombre==' '))
                  {
                     band=0;
                  }
                  else //if(((nom>='A')&&(nom<='Z'))||((nom>='a')&&(nom[i<='z'])))
                  {
                     i=fin;
                     band=1;
                     printf("Caracteres invalidos... Intentelo de nuevo... \n");
                     system("pause>null");
                  }
               }
            }while(band==1);
            fflush(stdin);
            do
            {
               //system ("cls");
               fflush(stdin);
               printf("Introduzca el Apellido: ");
               scanf("%s",&registro.apellido);
               fin=strlen(registro.apellido);
               band=0;
               for(i=0;i<fin;i++)
               {
                  if(((registro.apellido>='A')&&(registro.apellido<='Z'))||((registro.apellido>='a')&&(registro.apellido<='z'))||(registro.apellido==' '))
                  {
                        band=0;
                  }
                  else
                  {
                     i=fin;
                     band=1;
                     printf("Caracteres invalidos... Intentelo de nuevo... \n");
                     system("pause>null");
                  }
               }
            }while(band==1);
            fflush(stdin);
            do
            {
               do
               {
                  //system ("cls");
                  fflush(stdin);
                  printf("Introduzca el Telefono: ");
                  scanf("%s",&registro.telefono);
                  fin=strlen(registro.telefono);
                  if(fin!=10)
                  {
                     printf("Ingrese un telefono de 10 digitos\n");
                     system("pause>null");
                  }
               }while(fin!=10);
                  band=0;
               for(i=0;i<fin;i++)
               {
                  if(((registro.telefono>='0')&&(registro.telefono<='9')))
                  {
                     band=0;
                  }
                  else
                  {
                     i=fin;
                     band=1;
                     printf("Caracteres invalidos... Intentelo de nuevo... \n");
                     system("PAUSE");
                  }
               }
            }while(band==1);
            fflush(stdin);
            do
            {
               //system ("cls");
               fflush(stdin);
               printf("Introduzca la Direccion: ");
               scanf("%s",&registro.direccion);
               //scanf("%s",direc);
               fin=strlen(registro.direccion);
               band=0;
               e=0;
               for(i=0;i<fin;i++)
               {
                  if(registro.direccion=='#')
                  {
                     e++;
                  }
                  if(((registro.direccion>='A')&&(registro.direccion<='Z')) || ((registro.direccion>='a')&&(registro.direccion<='z')) ||
                  ((registro.direccion>='0')&&(registro.direccion<='9')) || ((registro.direccion=='#')||(registro.direccion==':') ||
                  (registro.direccion==' ') || (registro.direccion=='.') || (registro.direccion=='-')))
                  {
                     band=0;
                  }
                  else
                  {
                     i=fin;
                     band=1;
                     printf("Solo se aceptan letras, numeros y los simbolos # y :\n");
                     system("pause>null");
                  }
                  if(e==2)
                  {
                     printf("Solo puede utilizar solo una vez el simbolo # \n");
                     i=fin;
                     band=1;
                     system("pause>null");
                  }
               }
            }while(band==1);
            fflush(stdin);
            do
            {
               //system ("cls");
               fflush(stdin);
               printf("Introduzca su correo electronico: ");
               scanf("%s",&registro.correo);
               fin=strlen(registro.correo);
               band=0;
               e=0;
               o=0;
               for(i=0;i<fin;i++)
               {
                  if(((registro.correo>='A')&&(registro.correo<='Z'))||
                  ((registro.correo>='a')&&(registro.correo<='z'))||
                  ((registro.correo>='0')&&(registro.correo<='9'))||
                  ((registro.correo=='#')||(registro.correo==':')||(registro.correo=='_')||(registro.correo=='-')||(registro.correo=='@')||(registro.correo=='.')))
                  {
                     if(registro.correo=='@')
                     {
                        o++;
                     }
                     if(registro.correo=='.')
                     {
                        e++;
                     }
                     band=0;
                  }
                  else
                  {
                     i=fin;
                     band=1;
                     printf("Solo se aceptan letras, numeros y los simbolos # : _ - y @ \n\n");
                     system("pause>null");
                  }
                  if(i==fin-1)
                  {
                     if(o!=1)
                     {
                        printf("Caracter invalido... Porfavor intentelo de nuevo... @\n\n");
                        i=fin;
                        band=1;
                        system("pause>null");
                     }
                  }
                  if(e>1)
                  {
                     printf("Caracter invalido... Porfavor intentelo de nuevo... \n");
                     i=fin;
                     band=1;
                     system("pause>null");
                  }
                  else if(registro.correo[fin-1]!='m')
                  {
                     printf("Caracter invalido... Porfavor intentelo de nuevo... \n");
                     i=fin;
                     band=1;
                     system("pause>null");
                  }
                  else if(registro.correo[fin-2]!='o')
                  {
                     printf("Caracter invalido... Porfavor intentelo de nuevo... \n");
                     i=fin;
                     band=1;
                     system("pause>null");
                  }
                  else if(registro.correo[fin-3]!='c')
                  {
                     printf("Caracter invalido... Porfavor intentelo de nuevo... \n");
                     i=fin;
                     band=1;
                     system("pause>null");
                  }
                  else if(registro.correo[fin-4]!='.')
                  {
                     printf("Caracter invalido... Porfavor intentelo de nuevo... \n");
                     i=fin;
                     band=1;
                     system("pause>null");
                  }
                  
               }
            }while(band==1);
            printf("\n");
            fprintf(empleados,"%s %s %s %s %s %s\n",registro.Cedula,registro.nombre,registro.apellido,registro.telefono,registro.direccion,registro.correo);
                  
     fclose(empleados);             
   
}

void Buscar()
{
   int num, f;
   char texto[2000];
   char k;
   printf("Numero de registro que desea buscar: ");
   scanf("%d",&num);
   num=num-1;
   empleados=fopen("empleados.txt","r");
   if(empleados!=NULL)
   {
      fgets(texto,2000,empleados);
      while(!feof(empleados))
      {
         if(f==num)
         {
            fprintf(empleados,"%d %s %s %s %s %s\n",n,registro.nombre,registro.apellido,registro.telefono,registro.direccion,registro.correo);
            puts(texto);
         }
         fgets(texto,2000,empleados);
         f++;         
      }
      
      
      fclose(empleados);
   }
   else
   {
      printf("Error en la apertura");
   }
}

void Modificar()
{
   char Cedula[11];
   unsigned int Tam;
   empleados=fopen("empleados.txt","rb+");
   
   if(empleados==NULL)
   {
      printf("Error en la apertura");
      return;
   }
   
   printf("Ingrese el numero de empleado a Modificar: ");
   scanf("%s",Cedula);
   
   if((empleados=fopen("empleados.txt","ab"))!=NULL)
   {
     fseek(empleados,0,2);
      Tam=ftell(empleados)/sizeof(registro);
      fclose(empleados);
   }
   
   if((empleados=fopen("empleados.txt", "rb+"))!=NULL)
   {
      for(int h=0; h<Tam ; h++)
      {//Inicia for
         fread(&registro, sizeof(struct sRegistro), 1, empleados);
            if(strcmp(Cedula,registro.Cedula)==0 and registro.Eliminado==0){
            printf("Desea cambiar la direccion? [ Si = 1 / No = 2 ]");
            scanf("%d",r1);
            fflush(stdin);
            while(r1==1)
            {
               printf("Ingrese nueva Direccion: ");
               scanf("%s", &registro.direccion);
               fflush(stdin);
               break;
            }
            
            printf("Desea cambiar el telefono? [ Si = 1 / No = 2 ]");
            scanf("%d",r2);
            fflush(stdin);
            while(r2==1)
            {
               printf("Ingrese nuevo telefono: ");
               scanf("%s",&registro.telefono);
               fflush(stdin);
               break;
            }
            
            printf("Desea cambiar el Email? [ Si = 1 / No = 2 ]");
            scanf("%d",r3);
            fflush(stdin);
            while(r3==1)
            {
               printf("Ingrese nuevo Email: ");
               scanf("%s",&registro.correo);
               fflush(stdin);
               break;
            }
            
       registro.Eliminado=0; // Aqui dejo constancia que el registro no esta eliminado        
         fseek(empleados,sizeof(registro)*h,SEEK_SET);
        fwrite(&registro, sizeof(struct sRegistro), 1, empleados);
   
        fclose(empleados);
        return;    

         }
      } //Cierra for
   }
   
   printf("El numero de empleado no existe...");         
    return;
   
}

void Mostrar()
{
   empleados=fopen("empleados.txt","r");
   char c;
   cout<<"\t\t Registros Ingresados: "<<endl;
   while(!feof(empleados))
   {
      c=fgetc(empleados);
      putchar(c);
   }
   fclose(empleados);
   
}


int main()
{
   int exit=0;
   int opcion;
   FILE *empleados;
   
   while(!exit)
   {//Inicia while
      
       Menu();
       printf("Opcion: ");
       scanf("%d",&opcion);
      
       switch(opcion)
       {
          case 1: creararchivo();
          system("pause>nuell");
          system("cls");
          break;
          
          case 2: insertararchivo();
          system("pause>null");
          system("cls");
          break;
          
          case 3:Modificar();
          system("pause>null");
          system("cls");
          break;
          
          case 4:
          break;
          
          case 5: Mostrar();
          system("pause>null");
          system("cls");
          break;
          
          case 6: Buscar();
          system("pause>null");
          system("cls");
          break;
          
          case 7:
             exit=1;
          break;
       }

      
   }//Termina while
   
}
#9
Estoy haciendo un menu donde el usuario eliga el nombre del archivo y pueda ingresar datos en el... El problema que me surgio es que tengo que utilizar las teclas de funcion para elegir las opciones:

F1 - Crear archivo
F2 - Ingresar datos
ESC - Salir

Ya tengo todo lo demas lo unico que ocupo es saber como utilizar esas teclas. Tengo entendido que con switch no se puede que es con puros if... O si se puede con switch?

Este es el codigo:

#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <windows.h>
using namespace std;

FILE *archivoF;
char nombre[50];
char texto=' ';

void crear()
{
   cout<<"Ingrese el nombre del archivo: ";
    cin>>nombre;   
    strcat(nombre,".txt");                   /*Utilize la funcion strcat para concatenar el nombre que el usuario
                                              quiera darle al archivo con la extensión .txt porque en C
                                        no existe el operador concatenación (+) */     
    system("pause>null");

}

void escribir()
{
   archivoF=fopen(nombre,"w");
   if(archivoF==NULL)
   {
      
      cout<<"Error en la apertura";
      
   }
   
   cout<<"Ingrese el texto: (presione enter para finalizar): "<<endl;
   
   do
   {
      texto=getche();
      fputc(texto,archivoF);
      
   }while(texto!=13);
   
   fclose(archivoF);
}

void mostrar()
{
   
}

int main()
{
   int x;
   
      cout<<endl<<endl<<"\t\t\t Menu"<<endl<<endl;
           cout<<"\t[F1].-  Crear archivo. "<<endl;
           cout<<"\t[F2].-  Ingresar datos "<<endl;
           cout<<"\t[F3].-  Mostrar archivo "<<endl;
           cout<<"\t ESC.-  Salir "<<endl;
           cout<<"\tOpcion: ";
           cout<<endl;
           x=getch();
      
}


Si me pudieran ayudar se los agradeceria muchooo!
#10
hola, debo realizar un programa implementando una lista simplemente enlazada con la estructura cola en c++.
El programa es simple solo debe de dar de alta, consultar y eliminar los elementos conforme al orden de la estructura cola.
Se como implementar la estructura cola lo que no tengo idea de como hacerlo es usando la lista simple. Alguien que me pueda ayudar en esto. Es para terminar mi semestre es el unico programa que me falta