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 - mari2diaz

#11
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;
}
#12
cuando pide la edad e introduzco el dato me dice programa dejo de funcionar
#13
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);
}
#14
gracias no vi eso
#15
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;
}
#16
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