• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

zmki

Duvida em C

9 mensagens neste tópico

Boas pessoal!

Tenho de fazer um trabalho para a escola onde tenho de registar numa determinada data entrou um automovel num determinado stand de automoveis. A minha duvida e a seguinte, ja descubri k existe a biblioteca time.h , pois tou a trabalhar em C, m n sei como pedir ao utilizador a data tendo esta biblioteca ou seja n sei aplicar digamos, alguem me podia dar uma ajuda nisto?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas qual é a tua dúvida?

É "pedir ao utilizador a data tendo esta biblioteca" ou aplicar <time.h> ao teu programa?

Se for a primeira hipótese, ignora que tens a biblioteca e pede a data usando os métodos que já conheces.

Se for a segunda hipótese, dá um exemplo concreto do que queres fazer.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tipo acho que e mais a primeira hipotese. E pedido que o programa registe a data tas a percerber. Logo kd o programa ta a correr vai ter de pedir a data ao utilizador. so que nao sei como escrevo no printf e no scanf e o que declaro se vai ser int, float etc e isso que nao sei o que fazer. Podes me dar uma ajudinha nisso? dava me bastante jeito

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Usa char[].

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

int main(void) {
   char input[12];

   printf("Introduz data (yyyy-mm-dd): ");
   fflush(stdout);
   if (fgets(input, 12, stdin) == NULL) {
     fprintf(stderr, "Erro. Programa abortado.\n");
     exit(EXIT_FAILURE);
   }

   if (!(
     isdigit((unsigned char)input[0]) && isdigit((unsigned char)input[1]) &&
     isdigit((unsigned char)input[2]) && isdigit((unsigned char)input[3]) &&
     input[4] == '-' && isdigit((unsigned char)input[5]) &&
     isdigit((unsigned char)input[6]) && input[7] == '-' &&
     isdigit((unsigned char)input[8]) && isdigit((unsigned char)input[9])
   )) {
     fprintf(stderr, "Data inválida.\n");
   } else {
     printf("A data introduzida foi: %s\n", input);
   }

   return 0;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Excelente mas so mais uma coisa, ficava melhor que quando carrega se ok e foxe uma data invalida ele voltasse a pedir a data correcta percebes a minha ideia? e que desta maneira diz k ta invalida e acaba o programa e n e bem isso k eu keria.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenho de fazer um trabalho para a escola

Aquilo que acabaste de pedir é trivial. Ele já te deu o código todo, não és capaz de pensar um pouco para introduzir essa alteração?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ele já fez mais por ti do que devia. Deu-te a maior parte da código todo feito sem te obrigar a pensar minimamente, que é a forma mais fácil de ajudar, mas não a que dá melhores frutos.

Agora é uma questão de colocares o código dentro de um ciclo (while, for, do ... while) e só saíres do ciclo quando obtiveres um input aceitável.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que o zmki só consegue explicar o código ao professor depois de usar muito tempo a estudá-lo bem :confused:

O que é que ele responde quando o professor lhe perguntar:

"Para que é o 'fflush(stdout);' do teu código?"

ou

"Explica-me lá a lógica deste if gigante ..."

Agora a parte da repetição fica a cargo dele.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Existem mais hipóteses de ele estudar se não tiver a solução completa.

Mas, no fim, cada um escolhe o que faz.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora