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ú

Temas - mari2diaz

#1
Java / AYUDA URGENTE
30 Abril 2021, 00:39 AM
Quiero reproducir audios pequeños pero el codigo me da este error

java.io.IOException: Stream closed
Exception in thread "main" java.lang.NullPointerException

¿que estoy haciendo mal?

Código (java) [Seleccionar]
public static Clip GameSound(final String ruta) {
        Clip clip = null;
       
        try{
            InputStream is = ClassLoader.class.getResourceAsStream(ruta);
            AudioInputStream ais = AudioSystem.getAudioInputStream(new BufferedInputStream(is));
            DataLine.Info info = new DataLine.Info(Clip.class, ais.getFormat());
            clip = (Clip) AudioSystem.getLine(info);
            clip.open(ais);
        }catch(Exception e){
            System.out.println("" + e);
        }
       
        return clip;
    }
#2
Programación C/C++ / Colas de supermercado
13 Marzo 2020, 23:45 PM
Hola tengo que hacer un proyecto de simulación gráfica de colas de supermercado en lenguaje c, y no encuentro ninguna información de esto para guiarme, donde puedo encontrar información de esto? "NO ESTOY PIDIENDO CÓDIGO" ya hice las colas y las voy mostrando en pantalla de esta forma

system("cls");

caja 1: *****

caja 2: ****

Imprimo las colas de cada caja completa y voy borrando la pantalla para que se vea cuando sale y entra un cliente. Lo que quiero saber es como simular esto de forma gráfica, que librería debo usar, porque el proyecto me pide que los clientes entran en el supermercado y se muevan por los pasillos y luego a las cajas, y debo usar hilos para esto? "SOLO PIDO ORIENTACIÓN NO QUE ME HAGAN EL PROYECTO"
#3
Programación C/C++ / Ayuda con memoria dinamica
10 Febrero 2020, 05:44 AM
Que error tengo en la linea 128?

mercado->p = (struct Puestos) malloc(sizeof(struct Puestos) * tam);

y si hago estas dos funciones

void espacio_memoria(Mercados *mercado); para crear espacio en memoria de todo
void free_memoria(Mercados *mercado); y para liberarla

también me funciona?

/* Se necesita la información de los mercados municipales de ciudad Guayana, indicando
  el nombre de cada mercado, dirección, TLF y la información del coordinador del
  mercado (c.i, nombre, apellido y teléfono). Cada mercado tiene un máximo de 50
  puestos, a cada puesto se le específica un nro de local y tamaño (largo y ancho),
  datos del propietario (TLF, c.i, nombre y apellido) y cada local almacena
  adicionalmente los ingresos por cada mes del año.
 
  *Realizar una función para solicitar la información y una para mostrarla, usar dichas
  funciones para un total de 20 mercados municipales
 
   *Crear las cadenas dinámicamente.
   *Los puestos de mercado crearlos dinámicamente.
   *Los mercados crearlos dinámicamente. */
 
#include<stdio.h>
#include<stdlib.h>

typedef struct Mercados_Municipales{
char* nombre;
char* direccion;
char* telefono;
struct Datos_Coordinador *info_c;
struct Puestos *p;
}Mercados;

struct Datos_Coordinador{
char* nombrec;
char* apellidoc;
char* cedulac;
char* telefonoc;
};

struct Puestos{
int numero;
struct Tamano *t;
struct Datos_Propietario *info_p;
int* mensual;
};

struct Tamano{
float largo;
float ancho;
};

struct Datos_Propietario{
char* nombrep;
char* apellidop;
char* cedulap;
char* telefonop;
};

void Presentacion();
Mercados *Leer_Mercado();

int main(){

Mercados *mercados[20];
char desicion;
int cantidad;

Presentacion();

for(cantidad = 0; cantidad < 20; cantidad ++){

printf("\tMercado Municipal #%d\n\n", cantidad + 1);
mercados[cantidad] = Leer_Mercados();

do{
printf("Pasamos a otro? [S/N] ", cantidad);
desicion = getchar(); // Leemos un caracter
while(getchar() == EOF); // Necesario para se coma el \n
}while(desicion != 'S' && desicion != 's' && desicion != 'N' && desicion != 'n');
if(desicion == 'N' || desicion == 'n') break; // Si elige N, se sale

}

return 0;
}

void Presentacio(){
printf("\t\t*********************************\n");
printf("\t\t*         Giudad Guayana        *\n");
printf("\t\t*      Mercados Municipales     *\n");
printf("\t\t*********************************\n\n");
}

Mercados *Leer_Mercado(){

Mercados *mercado = (Mercados *) malloc(sizeof(Mercados));

mercado->nombre = (char *) malloc(sizeof(char) * 20);
mercado->direccion = (char *) malloc(sizeof(char) * 50);
mercado->telefono = (char * ) malloc(sizeof(char) * 15);

printf("Nombre: ");
gets(mercado->nombre);
printf("Direccion: ");
gets(mercado->direccion);
printf("Telefono: ");
gets(mercado->telefono);

printf("\nInformacion del Coordinador\n\n");

mercado->info_c = (struct Datos_Coordinador *) malloc(sizeof(struct Datos_Coordinador));

mercado->info_c->nombrec = (char *) malloc(sizeof(char) * 20);
mercado->info_c->apellidoc = (char *) malloc(sizeof(char) * 20);
mercado->info_c->cedulac = (char *) malloc(sizeof(char) * 15);
mercado->info_c->telefonoc = (char *) malloc(sizeof(char) * 15);

printf("\tNombre: ");
gets(mercado->info_c->nombrec);
printf("\tApellido: ");
gets(mercado->info_c->apellidoc);
printf("\tCedula: ");
gets(mercado->info_c->cedulac);
printf("\tTelefono: ");
gets(mercado->info_c->telefonoc);

printf("\nNumero de Locales ");
int i, tam; scanf("%d", &tam);

mercado->p = (struct Puestos) malloc(sizeof(struct Puestos) * tam);

for(i = 0; i < tam; i++){

mercado->p[i]->numero = i;

mercado->p[i]->t = (struct Tamano) malloc(sizeof(struct Tamano));

mercado->p[i]->info_p = (struct Datos_Propietario) malloc(sizeof(struct Datos_Propietario));
mercado->p[i]->info_p->nombrep = (char *) malloc(sizeof(char) * 20);
mercado->p[i]->info_p->apellidop = (char *) malloc(sizeof(char) * 20);
mercado->p[i]->info_p->cedulap = (char *) malloc(sizeof(char) * 15);
mercado->p[i]->info_p->telefonop = (char *) malloc(sizeof(char)* 15);

printf("\n\tTamaño [L/A]: ");
scanf("&d %d", &mercado->p->t->largo, &mercado->p->t->ancho);
printf("\tInformacion del Propietario\n\n");
printf("\t\tNonbre: ");
gets(mercado->p->info_p->nombrep);
printf("\t\tApellido: ");
gets(mercado->p->info_p->apellidop);
printf("\t\tCedula: ");
gets(mercado->p->info_p->cedulap);
printf("\t\tTelefono: ");
gets(mercado->p->info_p->telefonop);

printf("\n\tIngresos Mensuales: "); int j;
mercado->p->mensual = (int *) malloc(sizeof(int) * 12);

for(j = 0; j < 12; j++){
printf("\t\t#%d. ", j + 1);
scanf("%d", &mercado->p->mensual[j]);
}

}

return mercado;
}
#4
Nose  si la estructura anidada esta bien declarada porque cuando voy a ingresar los datos del coordinador el programa deja de funcionar, y si estoy creando bien las cadenas y mercados dinamicamente?


/*
      Crear las cadenas dinámicamente.
      Los mercados crearlos dinámicamente.  */
     
#include<stdio.h>
#include<stdlib.h>

typedef struct Mercados_Municipales{
char *nombre;
char *direccion;
char *telefono;
struct Datos_Coordinador *c;
}Mercados;

struct Datos_Coordinador{
char *nombrec;
char *apellidoc;
char *cedulac;
char *telefonoc;
};

void Presentacion();
Mercados *Leer_Mercado(void);
void Imprimir_Mercado(Mercados *mercado);

int main(){
Mercados *mercados[20];
char desicion;
int cantidad, mercado = 0;

Presentacion();

for(cantidad = 0; cantidad < 20; cantidad++){

printf("\n\tMercado Municipal #%d\n\n", cantidad + 1);
mercados[cantidad] = Leer_Mercado();

do{

printf("\n\tPasamos a otro? [S/N] ");
desicion = getchar();       /* Leemos un caracter */
while(getchar() == EOF);    /* Necesario para que se coma el \n */

}while(desicion != 'S' && desicion != 's' && desicion != 'N' && desicion != 'n');
/* Si elige N o n, se sale */
if(desicion == 'N' || desicion == 'n') break;
}

printf("\nInformacion del Mercado: ");
scanf("%d", &mercado);

Imprimir_Mercado(mercados[mercado - 1]);

return 0;
}

void Presentacion(){
printf("\t\t********************************\n");
printf("\t\t*        Ciudad Guayana        *\n");
printf("\t\t*     Mercados municipales     *\n");
printf("\t\t********************************\n");
}

Mercados *Leer_Mercado(){

Mercados *mercado = (Mercados *) malloc(sizeof(Mercados));

mercado->nombre = (char *) malloc(sizeof(char) * 20);
mercado->direccion = (char *) malloc(sizeof(char) * 50);
mercado->telefono = (char *) malloc(sizeof(char) * 15);

printf("Nombre: ");
gets(mercado->nombre);
printf("Direccion: ");
gets(mercado->direccion);
printf("Telefono: ");
gets(mercado->telefono);

mercado->c->nombrec = (char *) malloc(sizeof(char) * 20);
mercado->c->apellidoc = (char *) malloc(sizeof(char) * 20);
mercado->c->cedulac = (char *) malloc(sizeof(char) * 15);
mercado->c->telefonoc = (char *) malloc(sizeof(char) * 15);

printf("Informacion del Coordinador\n\n");
printf("\tNombre: ");
gets(mercado->c->nombrec);
printf("\tApellido: ");
gets(mercado->c->apellidoc);
printf("\tCedula: ");
gets(mercado->c->cedulac);
printf("\tTelefono: ");
gets(mercado->c->telefonoc);

return mercado;
}

void Imprimir_Mercado(Mercados *mercado){
printf("\n\tMercado Municipal: %s\n\n", mercado->nombre);

printf("Direccion: %s\tTelefono: %s\n\n",
       mercado->direccion, mercado->telefono);

printf("Datos del Coordinador:\n\n");
printf("%s %s\tCedula: %s\n",
       mercado->c->nombrec, mercado->c->apellidoc,
   mercado->c->cedulac);
    printf("Telefono: %s\n\n", mercado->c->telefonoc);
}
#5
Programación C/C++ / Ayuda con Estructuras
8 Febrero 2020, 07:40 AM
El programa deja de funcionar con la funcion imprimir_mercado, y no entiendo por que sucede esto

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct Mercados_Municipales{
char nombre[20];
char direccion[50];
char telefono[11];
}Mercados;

Mercados leer_mercado(void);
void imprimir_mercado(Mercados mercado);

int main(){
Mercados mercados[20];
Mercados mercado;
char desicion;
int i, cantidad = 0, numero;

printf("\n\t\tMercados Municipales de Ciudad Guayana\n\n");

while(cantidad < 20){

do{
printf("%d Mercados Municipales. Pasamos a otro? [S/N] ", cantidad);
desicion = getchar(); // Leemos un caracter
while(getchar() == EOF); // Necesario para se coma el \n
}while(desicion != 'S' && desicion != 's' && desicion != 'N' && desicion != 'n');
if(desicion == 'N' || desicion == 'n') break; // Si elige N, se sale

mercado = leer_mercado();
mercados[cantidad++] = mercado;
}

printf("\nMostrar informacion del Mercado: ");
scanf("%d", numero);

imprimir_mercado(mercados[numero]);

return 0;
}

Mercados leer_mercado(){
Mercados mercado;

printf("\nNombre: ");
gets(mercado.nombre);
printf("Direccion: ");
gets(mercado.direccion);
printf("Telefono: ");
gets(mercado.telefono);
printf("\n");

return mercado;
}

void imprimir_mercado(Mercados mercado){
printf("\n\n\t\t%s", mercado.nombre);
printf("\nDireccion: &s\tTelefono: %s\n", mercado.direccion, mercado.telefono);
}
#6
quiero generar un alfanumérico pero me sale caracteres que no quiero

#include<stdio.h>
#include<time.h>

int main(){
int i;

char aleatorio[10];
    srand(time(NULL));
    for(i=0; i <= 9; i++)
        aleatorio[i] = 33 + rand() % (126 - 33);

printf("%s", aleatorio);
return 0;
}
#7
Tengo problemas con estas  dos funciones void RegistrarUsuario(); void InicioSesion(); la registrar usuario me guarda el primer usuario cuando se crea al archivo pero luego me dice email registrado con todos los demás que intento guardar y inicio sesión después de introducir email y contraseña dice programa dejo de funcionar

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>

#define MAX 50

char Linea[MAX];

/* ----------------------
 | Definir Estructuras |
 ----------------------*/

// Usuario
typedef struct Billetera{
char moneda[MAX];
float saldo;
}Monedas;

typedef struct Datos{
char nombre[MAX];
char apellido[MAX];
char telefono[MAX];
char pais[MAX];
}DatosPersonales;

typedef struct PerfilUsuario{
char e_mail[MAX];
char pasword[MAX];
DatosPersonales p;
Monedas m;
}Usuario;
// Administrador
typedef struct CompraVenta{
char moneda[MAX];
float precioD;
float precioE;
float precioBS;
float compra;
float venta;
}Moneda;

typedef struct PerfilAdministrador{
Moneda monedas;
}Administrador;

int MostrarMenu_BilleteraVirtual();
int MostrarMenu_InicioSesion();
int LeerCadena(char *cadena, int n);
int ConfirmarEmail(char email[], Usuario *usuario);

void InicioSesion();
void RegistrarUsuario();
void GuardarCuentaUsuario(Usuario *usuario);

void MenuPrincipal();
void MenuInicioSesion();
void FinalizarPrograma();


int main(){

switch(MostrarMenu_BilleteraVirtual()){
case 1:
system("cls");
InicioSesion();
system("cls");
break;
case 2:
system("cls");
RegistrarUsuario();
   break;
case 3:
   break;
case 4:
   FinalizarPrograma();
   break;
default:
   system("cls");
   printf("\n\t\t ===================");
   printf("\n\t\t| Opcion incorrecta |");
   printf("\n\t\t ===================");
   MenuPrincipal();
   main();
}

return 0;
}

int MostrarMenu_BilleteraVirtual(){
int opcion = 0;
printf("\n\t\t\t\t ===================");
printf("\n\t\t\t\t| Billetera Virtual |");
printf("\n\t\t\t\t ===================\n\n");

printf("\t\t[1] Ingresar como Usuario\n");
printf("\t\t[2] Registrarse\n");
printf("\t\t[3] Ingresar como Administrador\n");
printf("\t\t[4] Salir del Programa\n");

printf("\n\t\tDigite su opcion: [ ]\b\b");
LeerCadena(Linea, MAX);
sscanf(Linea, "%d", &opcion);
return opcion;
}

int MostrarMenu_InicioSesion(){
int opcion = 0;

printf("\t\t[1] Perfil de Usuario\n");
printf("\t\t[2] Su Billetera\n");
printf("\t\t[3] Comprar Criptomonedas\n");
printf("\t\t[4] Vender Criptomonedas\n");
printf("\t\t[5] Cerrar Sesion\n");

printf("\n\t\tDigite su opcion: [ ]\b\b");
LeerCadena(Linea, MAX);
sscanf(Linea, "%d", &opcion);
return opcion;
}

void RegistrarUsuario(){
Usuario usuario;
printf("\n\t\t\t\t ================");
printf("\n\t\t\t\t| Cree su Cuenta |");
printf("\n\t\t\t\t ================\n\n");
   printf("\t\tNombre de pila: ");
LeerCadena(usuario.p.nombre, MAX);
printf("\t\tApellido: ");
LeerCadena(usuario.p.nombre, MAX);
printf("\n\t\tCorreo elctronico: ");
LeerCadena(usuario.e_mail, MAX);
printf("\t\tElegir una contasena: ");
LeerCadena(usuario.pasword, MAX);

if(ConfirmarEmail(usuario.e_mail, &usuario) == 0){
GuardarCuentaUsuario(&usuario);
MenuPrincipal();
}else{
printf("\n\t\tEste Email ya tiene Cuenta de Usuario");
MenuPrincipal();
}
}

void InicioSesion(){
FILE *archivo = fopen("BilleteraVirtualUsuarios.dat", "rb");
char pass[MAX], e_mail[MAX], encontrado;
Usuario usuario;

if(archivo == NULL){
printf("\n\t\t ========================");
printf("\n\t\t|Lo siento. ERROR Interno|");
printf("\n\t\t ========================");
MenuPrincipal();
}else{
encontrado = 0;
printf("\n\t\t\t =====================================");
   printf("\n\t\t\t| Iniciar sesion en Billetera Virtual |");
   printf("\n\t\t\t =====================================\n\n");
   
   printf("\t\tCorreo electronico: ");
   LeerCadena(e_mail, MAX);
   printf("\t\tContrasena: ");
   LeerCadena(pass, MAX);
   
   /* Se recorre el archivo secuencialmente */
fseek(archivo, 0, SEEK_SET); /* Posiciona el cursor al principio del archivo */
   fread(&usuario, sizeof(usuario), 1, archivo);
   
   while(!feof(archivo)){
    if((strcmp(usuario.e_mail, e_mail) == 0) && (strcmp(usuario.pasword, pass) == 0)){
    encontrado = 1;
}
fread(&usuario, sizeof(usuario), 1, archivo);
}

if(encontrado == 1){
system("cls");
printf("\n\tBilletera Virtual\t\t%s %s\n\n", usuario.p.nombre, usuario.p.apellido);

switch(MostrarMenu_InicioSesion()){
case 1:
break;
case 2:
   break;
case 3:
   break;
case 4:
   break;
case 5:
MenuPrincipal();
   break;
default:
printf("\n\t\t ===================");
           printf("\n\t\t| Opcion incorrecta |");
           printf("\n\t\t ===================");
       MenuInicioSesion();
   break;
}

}else{
printf("\n\n\t\tUsuario no registrado");
MenuPrincipal();
}

fclose(archivo);
}
}

int ConfirmarEmail(char email[], Usuario *usuario){
FILE *archivo = fopen("BilleteraVirtualUsuarios.dat", "rb");
int existe;

if(archivo == NULL){
existe = 0;
}else{
existe = 0;

fread(usuario, sizeof(usuario), 1, archivo);

while(!feof(archivo)){
if(strcmp(usuario->e_mail, email) == 0){
existe = 1;
break;
}
fread(usuario, sizeof(usuario), 1, archivo);
}

fclose(archivo);
}
return existe;
}

void GuardarCuentaUsuario(Usuario *usuario){
FILE *archivo = fopen("BilleteraVirtualUsuarios.dat", "ab");

if(archivo == NULL){
printf("\n\t\t ========================");
printf("\n\t\t|Lo siento. ERROR Interno|");
printf("\n\t\t ========================");
MenuPrincipal();
}else{
fwrite(usuario, sizeof(usuario), 1, archivo);
fclose(archivo);
printf("\n\t\tUsuario Registrado con EXITO");
}
}

int LeerCadena(char *cadena, int n){
int i, c;

c = getchar();
if (c == EOF) {
cadena[0] = '\0';
return 0;
}

if (c == '\n') {
i = 0;
} else {
cadena[0] = c;
i = 1;
}

for (; i < n - 1 && (c = getchar()) != EOF && c != '\n'; i++) {
cadena[i] = c;
}
cadena[i] = '\0';

if (c != '\n' && c != EOF)
while ((c = getchar()) != '\n' && c != EOF);

return 1;
}

void MenuPrincipal(){
Sleep(3000);
system("cls");
main();
}

void MenuInicioSesion(){
Sleep(3000);
system("cls");
MostrarMenu_InicioSesion();
}

void FinalizarPrograma(){
system("cls");
   printf("\n\t ===================================================");
printf("\n\t| LA Billetera Virtual CERRARA en Cualquier Momento |");
printf("\n\t ===================================================\n\n");
Sleep(3000);
   exit(0);
}
#8
Quiero comparar si una fecha es mayor que la otra en este programa si alguien me puede dar una idea de como hacerlo que no sea con if()

/* Escribe un programa para calcular el numero de dias
   que hay entre dos fechas; declarar fecha como una
   estructura */
   
#include<stdio.h>

struct fecha{
unsigned int dia, mes, año;
};

int main(int argc, char *argv[]){
struct fecha f[3];
int i, dia, mes, año;

for(i=0; i<2; i++){
printf("Introduzca fecha %d: ", i+1);
scanf("%d %d %d", &f[i].dia, &f[i].mes, &f[i].año);
}

dia = f[0].dia - f[1].dia;
mes = f[0].mes - f[1].mes;
año = f[0].año - f[1].año;

año = año * 360;
mes = mes * 30;
f[2].dia = año + (mes) + (dia);

printf("\n\n\nDias Trascurridos %d", f[2].dia);
return 0;
}
#9
Cuando estoy introduciendo los datos me dice programa dejo de funcionar, si alguien puede ver mi error y decirme por favor
/* Se desea registrar una estructura Persona_Empleado que contenga como miembros los datos de una
persona empleado que a su vez tenga los datos de la fecha de nacimiento. En el programa se muestra
el uso de la estructura, se define una función para dar entrada a los datos de la estructura y otra
función para dar salida a los datos de una estructura persona. A la función de entrada se transmite
por dirección (&p) la variable estructura, por lo que el argumento correspondiente tiene que ser un
Ipuntero (*p) y el acceso a los campos se hace con el selector -> */

#include<stdio.h>

struct fecha{
int dia, mes, año;
};

struct persona{
char nombre[20];
int edad;
int altura;
int peso;
struct fecha f;
};

struct persona_empleado{
struct persona unapersona;
int salario;
int horas_por_semana;
};

/* Prototipo de funciones */

void entrada(struct persona_empleado *p);
void salida(struct persona_empleado up);

void main(){

/* Define una variable persona_empleado */
struct persona_empleado p;

/* Llamada a entrada() transmitiendo la direccion */
   entrada(&p);
   
   /* Salida de los datos almacenados */
   salida(p) ;

}

void entrada(struct persona_empleado *p){

printf("\nIntroduzca su nombre: ");
gets(p->unapersona.nombre);

printf("Introduzca su edad: ");
scanf("%d", p->unapersona.edad);


printf("Introduzca su altura: ");
scanf("%d", p->unapersona.altura);

printf("Introduzca su peso: ");
scanf("%d", p->unapersona.peso);

printf("Introduzca su fecha de nacimiento: ");
scanf("%d %d %d", p->unapersona.f.dia,
   p->unapersona.f.mes,
p->unapersona.f.año);

printf("Introduzca su salario: ");
scanf("%d", p->salario);

printf("Introduzca numero de horas");
scanf("%d", p->horas_por_semana);

}

void salida(struct persona_empleado up){
printf("\n\n\tDatos de un Empleado");
printf("\n\n\t--------------------");
printf("Nombre: %s\n", up.unapersona.nombre);
printf("Edad: %d\n", up.unapersona.edad);
printf("Fecha de nacimiento: %d-%d-%d", up.unapersona.f.dia,
   up.unapersona.f.mes,
up.unapersona.f.año);
printf("Altura: %d\n", up.unapersona.altura);
printf("Peso: %d\n", up.unapersona.peso);
printf("Salario: %d\n", up.salario);
printf("Numero de horas: %d\n", up.horas_por_semana);
}
#10
Hola estoy comenzando con las listas, si alguien puede decirme caul es mi error el programa se me queda colgado en la funcion LeerDatosPersona y no encuentro el problema

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "Funciones.h"

void InicioSecion();
void RegistrarPersona();

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
int opcion = 0, repite = 1;

do{

Presentacion();
Menu();
LeerCadena(Linea, M);
sscanf(Linea, "%d", &opcion);

switch(opcion){
case 1:
break;
case 2:
RegistrarPersona();
    break;
case 3:
    break;
case 4:
repite = 0;
    break;
default:
    printf("\n\tOpcion Incorrecta: PRECIONE (1, 2, 3, 4)");
break;
}

}while(repite);

return 0;
}

void RegistrarPersona(){
Persona *persona;
int buscarCedula = 0, repite = 1;
char respuesta[M];

do{

system ("cls");
Presentacion();
printf("\n\n\t\t\t    .:Registro de Usuario:.\n");

printf("\n\tCedula: ");
LeerCadena(Linea, M);
sscanf(Linea, "%d", &buscarCedula);

if(!ExistePersona(buscarCedula, persona)){

persona = LeerDatosPersona(buscarCedula);

if (primer == NULL) primer = persona;
if (ultimo != NULL) ultimo->siguiente = persona;

ultimo = persona;

if (GuardarDatos(ultimo)){
system ("cls");
Presentacion();
printf("\n\n\t\t\t    .:Usuario Registrado Satisfactoriamente:.\n");
}else{
system ("cls");
Presentacion();
printf("\n\n\t\t\t    .:ERROR:.\n");
printf("\n\tIntentelo Mas tarde");
}

}else{
system ("cls");
Presentacion();
printf("\n\n\t\t\t    .:El Usuario %d ya EXISTE:.\n", buscarCedula);
            printf("\n\tNo puede registrarse multiples veces\n");
}

printf("\n\tDesea registrar otra persona? [S/N]: ");
LeerCadena(respuesta, M);

if (!(strcmp(respuesta, "s") == 0 || strcmp(respuesta, "S") == 0)){
repite = 0;
}

}while(repite);
}


Funciones.h

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void Presentacion(){
printf("\n\t****");                                                                 
printf("\n\t****");
}

void Menu(){
printf("\n\n\t\t\t    .::.\n");
    printf("\n\t\t[1]. Inicio de Sesion\n");
    printf("\t\t[2]. Registro de Usuario\n");
    printf("\t\t[3]. Administrador\n");
    printf("\t\t[4]. Salir\n");
    printf("\n\t\tIngrese su Opcion: [ ]\b\b");
}

#define M 100
char Linea[M];

typedef struct Persona{
char nombre[M];
char apellido[M];
char correo[M];
char password[M];
long int telefono;
int cedula;
struct Persona *siguiente;
}Persona;

Persona *primer = NULL;
Persona *ultimo = NULL;

int LeerCadena(char *cadena, int n){
    int i, c;
c = getchar();

    if (c == EOF){
        cadena[0] = '\0';
        return 0;
    }

    if (c == '\n'){
        i = 0;
    }else{
cadena[0] = c;
        i = 1;
    }

    for (; i < n-1 && (c = getchar()) != EOF && c != '\n'; i++){
        cadena[i] = c;
    }

    cadena[i] = '\0';

    if (c != '\n' && c != EOF)
        while ((c = getchar()) != '\n' && c != EOF);

    return 1;
}

char ExistePersona(int buscarCedula, Persona *persona){
FILE *archivo = fopen ("DATOS.dat", "rb");
char existe;

if (archivo == NULL){
existe = 0;
}else{
existe = 0;

fread (&(*persona), sizeof(persona), 1, archivo);

while(!feof(archivo)){
if (persona->cedula == buscarCedula){
existe = 1;
break;
}

fread (&(*persona), sizeof(persona), 1, archivo);
}

fclose(archivo);
}

return existe;
}

Persona *LeerDatosPersona(int cedula){
Persona *persona = (Persona*) malloc(sizeof(Persona));

if (persona != NULL){
    persona->cedula = cedula;
   
    printf("\n\t\tPrimer Nombre: ");
    LeerCadena(persona->apellido, M);
   
    printf("\n\t\tPrimer Apellido: ");
    LeerCadena(persona->apellido, M);
   
    printf("\n\t\tCorreo: ");
        LeerCadena(persona->correo, M);
   
    printf("\n\t\tContrasena: ");
    LeerCadena(persona->password, M);
   
      printf("\n\t\tTelefono: ");
    LeerCadena(Linea, M);
    sscanf(Linea, "%d", persona->telefono);
   
    persona->siguiente = NULL;
   
}else{
system ("cls");
Presentacion();
printf("\n\n\t\t\t    .:Memoria Insuficiente:.\n");
}

return persona;
}

char GuardarDatos(Persona *persona){
char guardar;

FILE *archivo = fopen ("DATOS.dat", "ab");

if (archivo == NULL){
guardar = 0;
}else{
fwrite (&(*persona), sizeof(persona), 1, archivo);
guardar = 1;

fclose (archivo);
}

return guardar;
}
#11
Hola necesito ayuda con un programa en c que de una cita para pasaporte, por ejemplo;
pedir Cita: si o no
si: fecha de hoy 22/03/2018 dará la cita para 10 días después y no puede ser sábado ni domingo 2/04/2018

y el programa solo puede dar 10 citas por día

Si alguien me puede dar una idea de como debo hacer esto, que no entiendo muy bien como hacer esto