Ir ao conteúdo
  • Cadastre-se
Wendel Duarte Silva

C Armazenar e mostrar em tela compromissos digitados pelo usuário

Recommended Posts

Tenho que resolver o seguinte exercicio em C:

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

#define TAM 2

typedef struct{
    int hora;
    int minutos;
    int segundos;
} Horario;

typedef struct{
    int dia;
    int mes;
    int ano;
} Data;

typedef struct{
    char descricao[50];
    Horario horario_compromisso;
    Data data_compromisso;
} Compromisso; 

void ler(Compromisso a);  //Funcao de leitura dos compromissos
void imprime(Compromisso a,int cont);  //Funcao que imprime os compromissos

int main(){
    Compromisso vet[TAM];
    int m,a,cont_mes=0,cont_ano=0;

    for(int i=0;i<TAM;i++){
        printf("Digite os dados do compromisso %d\n",(i+1));
        ler(vet[i]); //Chamando a funcao de leitura
    }

    //O erro esta dentro deste while e possivelmente dentro da funcao imprime
  	while(m!=0){
        printf("\nDigite o mes e o ano para visualizar os compromissos totais do ano e mes digitado(Digite 0 para parar):");
        scanf("%d%d",&m,&a);

        if(m==vet.data_compromisso.mes){
            cont_mes++;
            printf("\nCompromissos do mes digitado:");
            imprime(vet,cont_mes);
        }else if(a==vet.data_compromisso.ano){
            cont_ano++;
            printf("\nCompromissos do ano digitado:");
            imprime(vet,cont_ano);
        }else
            printf("\nNenhum compromisso no mes e ano digitado");
    }

return 0;
}

void ler(Compromisso a){
	
    //Lendo os dados dos compromissos
    printf("\nDescreva o seu compromisso:");
    fflush(stdin);
    gets(a.descricao);
    printf("\nSobre o horario do compromisso");
    printf("\nHora:");
    scanf("%d",&a.horario_compromisso.hora);
    printf("\nMinuto:");
    scanf("%d",&a.horario_compromisso.minutos);
    printf("\nSegundo:");
    scanf("%d",&a.horario_compromisso.segundos);
    printf("\nSobre a data do compromisso");
    printf("\nDia:\n");
    scanf("%d",&a.data_compromisso.dia);
    printf("Mes:\n");
    scanf("%d",&a.data_compromisso.mes);
    printf("Ano:");
    scanf("%d",&a.data_compromisso.ano);
}

void imprime(Compromisso a,int cont){
    int i;
	
    //Função printando os compromissos do ano e mes digitado
    for(i=0;i<cont;i++){
        printf("\nCompromisso %d",(i+1));
        printf("O compromisso %s, será às %d horas %d minutos e %d segundos\nDia %d do mes %d e ano %d",a.descricao,a.horario_compromisso.hora,a.horario_compromisso.minutos,a.horario_compromisso.segundos,a.data_compromisso.dia,a.data_compromisso.mes,a.data_compromisso.ano);
    }
}

Caso for um erro simples, considerem que sou iniciante na programação ainda, obrigado a quem ajudarCapturar2.PNG.f92acf79ff7b6315e10948c4fc42d11e.PNG

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Wendel Duarte Silva    você esqueceu de colocar em qual posição do vetor está armazenando e imprimindo os dados ,  e também precisa organizar melhor o código ,  então seu código com algumas modificações ficaria assim  :

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

#define TAM 200

typedef struct{
    int hora;
    int minutos;
    int segundos;
} Horario;

typedef struct{
    int dia;
    int mes;
    int ano;
} Data;

typedef struct{
    char descricao[50];
    Horario horario_compromisso;
    Data data_compromisso;
} Compromisso;

int i,j,cont;
char meses[12][10]={"Janeiro","Fevereiro","Marco","Abril","Maio","Junho","Julho",
                        "Agosto","Setembro","Outubro","Novembro","Dezembro"     };

Compromisso vet[TAM];

/*             0     1    2     3   4      5      6      7         8  */
typedef enum{BLACK,BLUE,GREEN,CYAN,RED,MAGENTA,BROWN,LIGHTGRAY,DARKGRAY,
LIGHTBLUE,LIGHTGREEN,LIGHTCYAN,LIGHTRED,LIGHTMAGENTA,YELLOW,WHITE} COLORS;
/*  9         10         11        12        13         14    15      */

static int __BACKGROUND = 9/*BLACK*/;/*pode ser o numero ou o nome da cor*/
static int __FOREGROUND = LIGHTGRAY;

void textcolor (int letras, int fundo){/*para mudar a cor de fundo mude o background*/
    __FOREGROUND = letras;
    __BACKGROUND = fundo;
    SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
    letras + (__BACKGROUND << 4));
}
                  /* y = linha de 0 a 24 , x = coluna de 0 a 80 */
void gotoxy(int x, int y){/*imprimir na linha e coluna desejada */
  COORD c;
  c.X = x;
  c.Y = y;
  SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
}
int som(int f){
    Beep(f,150);/* primeiro a frquência depois o tempo de duração do som */
    return 0;
}
void ler(Compromisso a[TAM]);  /*//Funcao de leitura dos compromissos*/
void imprime(Compromisso a[TAM],int conti);  /*//Funcao que imprime os compromissos*/
char mover();
int main(){
    int m=0,a,cont_mes=0,cont_ano=0;
    int op;
    textcolor(14,0);
    system("cls");
    do{
        textcolor(10,0);
        system("cls");
        for(i=0;i<52;i++){
            gotoxy(i+8,00);printf("%c",205);
            gotoxy(i+8,10);printf("%c",205);
            gotoxy(i+8,12);printf("%c",205);
            if(i<13){
                gotoxy( 8,i);printf("%c",186);
                gotoxy(60,i);printf("%c",186);
            }
        }
        gotoxy( 8,00);printf("%c",201);
        gotoxy( 8,12);printf("%c",200);
        gotoxy(60,00);printf("%c",187);
        gotoxy(60,12);printf("%c",188);
        gotoxy( 8,10);printf("%c",204);
        gotoxy(60,10);printf("%c",185);
        textcolor(14,0);
        gotoxy(10, 2);printf("0 - Sair Do Programa"      );
        gotoxy(10, 3);printf("1 - ler Compromisso"       );
        gotoxy(10, 4);printf("2 - mostrar Compromissos"  );
        gotoxy(10, 5);printf("3 - Visualizar Compromisso");
        gotoxy(10, 6);printf("4 - Outras opções");
        gotoxy(10, 7);printf("5 - Outras opções");
        gotoxy(10, 8);printf("6 - Outras opções");
        textcolor(11,0);
        for(i=0;i<7;i++){
            gotoxy(10,i+2);
            printf("%c",i+48);
        }
        gotoxy(10,11);printf("Escolha Uma Opcao : ");
        scanf("%d",&op);
        switch(op){
        case 0:
            textcolor(14,0);
            gotoxy(10,14);
            printf("Saindo Do Programa . . . !\n\n");
            Sleep(100);
            som(400);
            Sleep(200);
            textcolor(7,0);
            exit(0);
        case 1:
            ler(vet);
            break;
        case 2:
            imprime(vet,cont_ano);
            break;
        case 3:
            visualizar_compromisso(vet);
            break;
    /*        .
              .
       colocar as outras opções
              .
              .                 */
        default:
            printf("Opcao Invalida . . . !");
            Sleep(1000);
        }
    }while(op!=0);
}
void ler(Compromisso a[TAM]){
    /*//Lendo os dados dos compromissos*/
    char op;
    int p,q,col=44;
    do{
        textcolor(10,0);
        system("cls");
        printf("===== Lendo Os Dados Dos Compromissos =====\n");
        printf("Descreva o seu compromisso ");
        fflush(stdin);
        gets(a[cont].descricao);
        printf("\nSobre o horario do compromisso\n\n");
        printf("Hora -------: ");
        fflush(stdin);
        scanf("%d",&a[cont].horario_compromisso.hora);
        printf("Minuto -----: ");
        fflush(stdin);
        scanf("%d",&a[cont].horario_compromisso.minutos);
        printf("Segundo ----: ");
        fflush(stdin);
        scanf("%d",&a[cont].horario_compromisso.segundos);
        printf("\nSobre a data do compromisso\n\n");
        printf("Dia --------: ");
        fflush(stdin);
        scanf("%d",&a[cont].data_compromisso.dia);
        printf("Mes --------: ");
        fflush(stdin);
        scanf("%d",&a[cont].data_compromisso.mes);
        printf("Ano --------: ");
        fflush(stdin);
        scanf("%d",&a[cont].data_compromisso.ano);
        textcolor(11,0);
        printf("\nQuer Cadastrar Outro Compromisso  S / N ");
        op=mover();
        if(cont<200)cont++;/* para cadastrar mais , mude esse valor e o valor de TAM */
        else{printf("só Pode Cadastrar No Maximo 200 Compromissos . . . !");
            op='n';
            Sleep(1000);
        }
    }while(toupper(op)!='N');
}

void imprime(Compromisso a[TAM],int conti){
    int i;
    textcolor(15,9);
    system("cls");
    /*//Função printando os compromissos do ano e mes digitado*/
    for(i=0;i<cont;i++){
        printf("\n     Compromisso %d\n\n",(i+1));
        printf("O compromisso %s , ",a[i].descricao);
        printf("será As %d Horas , %d Minutos e %d Sgundos\n",
               a[i].horario_compromisso.hora                  ,
               a[i].horario_compromisso.minutos               ,
               a[i].horario_compromisso.segundos             );
        printf("Do Dia %d Do Mes %d e Do Ano De %d\n",
               a[i].data_compromisso.dia             ,
               a[i].data_compromisso.mes             ,
               a[i].data_compromisso.ano            );
    }
    printf("\n\n    Tecle !");
    getch();
}
char mover(){
    int p=0,col=40,q;
    char op;
    do{
        gotoxy(col,15);
        if(col==77)q=1;
        else if(col==40)q=0;
        if(p==0)printf(" | ");
        else if(p==2)printf(" - ");
        if(q==0){/* vai p/ direita */
            col++;
            if(p==1)printf(" / ");
            else if(p==3){
                    printf(" %c ",92);
                    p=-1;
                }
        }
        else{/*vai p/ esquerda */
            col--;
            if(p==1)printf(" %c ",92);
            else if(p==3){
                printf(" / ");
                p=-1;
            }
        }
        p++;
        Sleep(100);
    }while(! kbhit());/* repete enquanto não teclar */
    op=(char)getch();
    return op;
}
void visualizar_compromisso(Compromisso vet[TAM]){
    int m,a,flag;
    char op;
    do{
        textcolor(12,15);
        system("cls");
        flag=0;
        printf("\nDigite o mes para visualizar os compromissos\n");
        printf("totais do ano e mes digitado ");
        do{
            flag=0;
            scanf("%d",&m);
            if(m<1 || m>12){
                flag=1;
                printf("O Mes só Pode Ser De 1 Ate 12 !\n");
            }
        }while(flag==1);
        printf("Digite o ano para visualizar os compromissos\n");
        do{
            flag=0;
            scanf("%d",&a);
            if(a<1){
                flag=1;
                printf("O Ano Nao Pode Ser Menor Que 1  !\n");
            }
        }while(flag==1);
        for(i=0;i<cont;i++){
            if(m==vet[i].data_compromisso.mes && a==vet[i].data_compromisso.ano){
                printf("\n     Compromisso %d\n\n",(i+1));
                printf("O compromisso  %s , ",vet[i].descricao);
                printf("será As %d Horas , %d Minutos e %d Sgundos\n",
                       vet[i].horario_compromisso.hora                ,
                       vet[i].horario_compromisso.minutos             ,
                       vet[i].horario_compromisso.segundos           );
                printf("Do Dia %d Do Mes %d e Do Ano De %d\n\n",
                       vet[i].data_compromisso.dia             ,
                       vet[i].data_compromisso.mes             ,
                       vet[i].data_compromisso.ano            );
                flag=1;
                break;
            }
        }
        if(flag==0)
            printf("\n\nNenhum compromisso no Mes De %s Do Ano De %d digitado !\n\n",meses[m-1],a);
        printf("Quer Pesquisar Outro Compromisso  S / N  ");
        op=mover();
    }while(toupper(op)!='N');
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×