-
Posts
3 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
Tudo que yanmartins postou
-
Boa tarde, Eu tenho um projeto onde devo fazer um estacionamento em C. O programa precisa coletar placa do veículo e data e hora do sistema. Usando o código abaixo eu consigo coletar a data e hora de entrada e saída, porém eu queria que antes de fazer a coleta de data e hora de saída, o programa verificasse se o veículo existe no estacionamento. OBSERVAÇÕES: O programa irá criar 3 arquivos .txt são eles arquivo de entrada, arquivo de saída, histórico. IGNORE "GERAR HISTÓRICO", ele é só um teste (em "GERAR HISTÓRICO", ele coletaria tudo que estivesse armazenado na estrutura e geraria o arquivo: historico.txt) Alguém sabe me dizer o que devo fazer? #include <stdio.h> #include <time.h> struct Tveiculo{ char placa[7]; char data_sistema_entra[100]; char hora_sistema_entra[100]; char data_sistema_sai[100]; char hora_sistema_sai[100];} carro[10]; // FUNCAO PARA FORMATACAO DA HORA char *format(int number); // FUNCAO PARA RETORNAR DATA char *data(void); // FUNCAO PARA RETORNAR HORA char *hora(void); int main(){ int opcao; int i=0; int j; int placadig[7]; while (opcao != 4){ printf("Digite a opção desejada\n"); printf("1. ENTRADA DE VEÍCULOS\n"); printf("2. SAÍDA DE VEÍCULOS\n"); printf("3. GERAR HISTÓRICO\n"); printf("4. FECHAR ESTACIONEMENTO\n"); scanf("%d", &opcao); switch(opcao){ case 1: //ENTRADA DE VEÍCULOS printf("Digite a placa do veículo\n"); scanf("%s", carro[i].placa); sprintf(carro[i].data_sistema_entra,"%s",data()); sprintf(carro[i].hora_sistema_entra,"%s",hora()); FILE *file_entra; file_entra = fopen("C:\\Users\\Yan Martins\\Desktop\\historico\\entrada.txt", "a"); fprintf(file_entra,"PLACA DO VEÍCULO: %s\n",carro[i].placa); fprintf(file_entra,"DIA DE ENTRADA: %s\n",carro[i].data_sistema_entra); fprintf(file_entra,"HORA DE ENTRADA: %s\n\n\n",carro[i].hora_sistema_entra); fclose(file_entra); i++; break; case 2: //SAÍDA DE VEÍCULOS printf("Digite a placa do veículo\n"); scanf("%s", placadig); for(j=0; j<30; j++){ if(carro[j].placa == placadig[7]){ sprintf(carro[j].data_sistema_sai,"%s",data()); sprintf(carro[j].hora_sistema_sai,"%s",hora()); FILE *file_sai; file_sai = fopen("C:\\Users\\Yan Martins\\Desktop\\historico\\saida.txt", "a"); fprintf(file_sai,"PLACA DO VEÍCULO: %s\n",carro[j].placa); fprintf(file_sai,"DIA DE SAÍDA: %s\n",carro[j].data_sistema_sai); fprintf(file_sai,"HORA DE SAÍDA: %s\n\n\n",carro[j].hora_sistema_sai); fclose(file_sai); } else{ printf("\nPLACA NÃO EXISTE\n"); } } break; case 3: //GERA HISTÓRICO printf("PLACA DO VEÍCULO: %s\n",carro[0].placa); printf("DIA DE SAÍDA: %s\n",carro[0].data_sistema_sai); printf("HORA DE SAÍDA: %s\n\n\n",carro[0].hora_sistema_sai); printf("PLACA DO VEÍCULO: %s\n",carro[1].placa); printf("DIA DE SAÍDA: %s\n",carro[1].data_sistema_sai); printf("HORA DE SAÍDA: %s\n\n\n",carro[1].hora_sistema_sai); printf("PLACA DO VEÍCULO: %s\n",carro[2].placa); printf("DIA DE SAÍDA: %s\n",carro[2].data_sistema_sai); printf("HORA DE SAÍDA: %s\n\n\n",carro[2].hora_sistema_sai); break; case 4: //FIM DO PROGRAMA printf("ESTACIONAMENTO FECHADO\n"); break; } } } // FUNCAO PARA FORMATACAO DA HORA char *format(int number){ char *retorno, ret[100]; int i; if (number < 10){ sprintf(ret,"0%d",number); retorno = ret; return retorno; } else{ sprintf(ret,"%d",number); retorno = ret; return retorno; } } // FUNCAO PARA RETORNAR DATA char *data(void){ int dia,mes,ano; char var1[100], var2[100], var3[100], var4[100], *dataPtr; struct tm *local; time_t t; t = time(NULL); local = localtime(&t); dia = local -> tm_mday; mes = local -> tm_mon + 1; ano = local -> tm_year + 1900; sprintf(var1,"%s",format(dia)); sprintf(var2,"%s",format(mes)); sprintf(var3,"%s",format(ano)); sprintf(var4,"%s/%s/%s",var1,var2,var3); // retorna data no formato dd:MM:yyyy com um ponteiro dataPtr = var4; return dataPtr; } // FUNCAO PARA RETORNAR HORA char *hora(void){ int hora,minuto,segundo; char var1[100], var2[100], var3[100], var5[100], *retorno; struct tm *local; time_t t; t = time(NULL); local = localtime(&t); // obtem hora, minuto e segundo e os aloca em uma variavel do tipo inteiro hora = local -> tm_hour; minuto = local -> tm_min; // por algum motivo precisa converter os valores retornados pelos ponteiros // da funcao em variaveis do tipo char sprintf(var1,"%s",format(hora)); sprintf(var2,"%s",format(minuto)); // cria a variavel de retorno dos dados e cria um ponteiro para essa variavel sprintf(var5,"%s:%s",var1,var2); // retorna hora no formato hh:mm:ss com um ponteiro retorno = var5; return retorno; }
-
@vangodp Obrigado cara. Na realidade eu já resolvi. Foi um problema de formatação. Eu não sabia da existência da Era Unix, isso foi bastante útil. Valeu mesmo!
-
Boa tarde, Eu tenho um projeto onde devo fazer um estacionamento em C. O programa precisa coletar placa do veículo e data e hora do sistema. Usando o código abaixo eu não consigo coletar a data e hora de entrada e saída. O arquivo não compila. Só consigo compilar um código onde só coleta entrada ou só coleta saída, ambos ao mesmo tempo não consigo. Alguém sabe me dizer o que devo fazer? #include <stdio.h> #include <time.h> struct Tveiculo{ char placa[7]; char data_sistema_entra[100]; char hora_sistema_entra[100]; char data_sistema_sai; char hora_sistema_sai;} carro; // FUNCAO PARA FORMATACAO DA HORA char *format(int number); // FUNCAO PARA RETORNAR DATA char *data(void); // FUNCAO PARA RETORNAR HORA char *hora(void); int main(){ int opcao; while (opcao != 4){ printf("Digite a opção desejada\n"); printf("1. ENTRADA DE VEÍCULOS\n"); printf("2. SAÍDA DE VEÍCULOS\n"); printf("3. GERAR HISTÓRICO\n"); printf("4. FECHAR ESTACIONEMENTO\n"); scanf("%d", &opcao); switch(opcao){ case 1: //ENTRADA DE VEÍCULOS printf("Digite a placa do veículo\n"); scanf("%s", carro.placa); sprintf(carro.data_sistema_entra,"%s",data()); sprintf(carro.hora_sistema_entra,"%s",hora()); printf("%s\n",carro.data_sistema_entra); printf("%s\n",carro.hora_sistema_entra); break; case 2: //SAÍDA DE VEÍCULOS printf("Digite a placa do veículo\n"); scanf("%s", carro.placa); sprintf(carro.data_sistema_sai,"%s",data()); sprintf(carro.hora_sistema_sai,"%s",hora()); printf("%s\n",carro.data_sistema_sai); printf("%s\n",carro.hora_sistema_sai); break; case 3: //GERA HISTÓRICO printf("Digite a placa do veículo\n"); scanf("%s", carro.placa); break; case 4: //FIM DO PROGRAMA printf("ESTACIONAMENTO FECHADO\n"); break; } } } // FUNCAO PARA FORMATACAO DA HORA char *format(int number){ char *retorno, ret[100]; int i; if (number < 10){ sprintf(ret,"0%d",number); retorno = ret; return retorno; } else{ sprintf(ret,"%d",number); retorno = ret; return retorno; } } // FUNCAO PARA RETORNAR DATA char *data(void){ int dia,mes,ano; char var1[100], var2[100], var3[100], var4[100], *dataPtr; struct tm *local; time_t t; t = time(NULL); local = localtime(&t); dia = local -> tm_mday; mes = local -> tm_mon + 1; ano = local -> tm_year + 1900; sprintf(var1,"%s",format(dia)); sprintf(var2,"%s",format(mes)); sprintf(var3,"%s",format(ano)); sprintf(var4,"%s/%s/%s",var1,var2,var3); // retorna data no formato dd:MM:yyyy com um ponteiro dataPtr = var4; return dataPtr; } // FUNCAO PARA RETORNAR HORA char *hora(void){ int hora,minuto,segundo; char var1[100], var2[100], var3[100], var5[100], *retorno; struct tm *local; time_t t; t = time(NULL); local = localtime(&t); // obtem hora, minuto e segundo e os aloca em uma variavel do tipo inteiro hora = local -> tm_hour; minuto = local -> tm_min; // por algum motivo precisa converter os valores retornados pelos ponteiros // da funcao em variaveis do tipo char sprintf(var1,"%s",format(hora)); sprintf(var2,"%s",format(minuto)); // cria a variavel de retorno dos dados e cria um ponteiro para essa variavel sprintf(var5,"%s:%s",var1,var2); // retorna hora no formato hh:mm:ss com um ponteiro retorno = var5; return retorno; }
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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