Важная информация
Показано с 1 по 5 из 5

Тема: Определить какое время больше

  1. #1 Определить какое время больше 
    Модератор Аватар для pingvin
    Регистрация
    11.02.2011
    Сообщений
    389
    Сказал(а) спасибо
    80
    Поблагодарили 75 раз(а) в 48 сообщениях
    Задача:
    В файле "time.txt" лежат две записи времени в таком формате:
    Код :
    20 15 30
    12 43 21
    Если формат не тот - вывести на экран "FILED FORMAT". Если же все нормально - вывести время которое больше.
    Вот написал свою, но почему-то не работает:
    Код :
    #include <stdio.h>
     
    main ()
    {
    	int H, M, S, h, m, s, p=0;
    	FILE *fin;
    	fin=fopen("time.txt", "r");
    	if (fscanf(fin, "%d:%d:%d", &H, &M, &S)==3)
    	{
    		p=1;
    	}
    	else
    	{
    		printf("FILED FORMAT\n");
    	}
    	if (fscanf(fin, "%d:%d:%d", &h, &m, &s)==3)
    	{
    		if (p==1)
    		{
     
    		}
    	}
    	else
    	{
    		if (p==1)
    		{
    			printf("FILED FORMATED\n");
    		}
    	}
    }
    Ответить с цитированием  
     

  2. #2  
    Супер модератор Аватар для Kakos_nonos
    Регистрация
    07.01.2011
    Адрес
    Кубань
    Сообщений
    1,535
    Сказал(а) спасибо
    126
    Поблагодарили 432 раз(а) в 293 сообщениях
    Записей в блоге
    6
    а фаил оно правильно читает?
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    Ответить с цитированием  
     

  3. #3  
    Модератор Аватар для pingvin
    Регистрация
    11.02.2011
    Сообщений
    389
    Сказал(а) спасибо
    80
    Поблагодарили 75 раз(а) в 48 сообщениях
    Да. Но постоянно пишет "FORMAT FILED". Пока она рассчитана на определение формата
    Ответить с цитированием  
     

  4. #4  
    Супер модератор Аватар для Kakos_nonos
    Регистрация
    07.01.2011
    Адрес
    Кубань
    Сообщений
    1,535
    Сказал(а) спасибо
    126
    Поблагодарили 432 раз(а) в 293 сообщениях
    Записей в блоге
    6
    А если читать как числа, а не как дату, а потом в дату переводить
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    Ответить с цитированием  
     

  5. #5  
    Модератор Аватар для pingvin
    Регистрация
    11.02.2011
    Сообщений
    389
    Сказал(а) спасибо
    80
    Поблагодарили 75 раз(а) в 48 сообщениях
    Нашёл очень серьёзную ошибку. Считывается время:
    Код :
    fscanf(fin, "%d[COLOR="Red"][B]:[/B][/COLOR]%d[COLOR="Red"][B]:[/B][/COLOR]%d", &H, &M, &S);
    fscanf(fin, "%d[COLOR="Red"][B]:[/B][/COLOR]%d[COLOR="Red"][B]:[/B][/COLOR]%d", &h, &m, &s);
    Значит в файле должно лежать время в формате:
    Код :
    20:15:30
    12:43:21
    А не:
    Код :
    20 15 30
    12 43 21
    Получается программа работает правильно. Теперь нужно сравнить время:
    Код :
    #include <stdio.h>
     
    main ()
    {
    	int H, M, S, h, m, s, p=0;
    	FILE *fin;
    	fin=fopen("time.txt", "r");
    	if (fscanf(fin, "%d:%d:%d", &H, &M, &S)==3)
    	{
    		p=1;
    	}
    	else
    	{
    		printf("FILED FORMAT\n");
    	}
    	if (fscanf(fin, "%d:%d:%d", &h, &m, &s)==3)
    	{
    		if (p==1)
    		{
    			if (H>h)
    			{
    				printf("The first time later than the second time\n");
    			}
    			else if ((H==h) && (M>m))
    			{
    				printf("The first time later than the second time\n");
    			}
    			else if ((H==h) && (M==m) && (S>s))
    			{
    				printf("The first time later than the second time\n");
    			}
    			else
    			{
    				printf("The second time later than the first time\n");
    			}
    		}
    	}
    	else
    	{
    		if (p==1)
    		{
    			printf("FILED FORMATED\n");
    		}
    	}
    }
    Остаётся только проверить: корректно ли указано время
    Код :
    #include <stdio.h>
     
    main ()
    {
    	int H, M, S, h, m, s, p=0;
    	FILE *fin;
    	fin=fopen("time.txt", "r");
    	if (fscanf(fin, "%d:%d:%d", &H, &M, &S)==3)
    	{
    		p=1;
    	}
    	else
    	{
    		printf("FILED FORMAT\n");
    	}
    	if (fscanf(fin, "%d:%d:%d", &h, &m, &s)==3)
    	{
    		if ((H>23) || (M>59) || (S>59) || (H<0) || (M<0) || (S<0) || (h>23) || (m>59) || (s>59) || (h<0) || (m<0) || (s<0))
    		{
    			printf("FILED FORMAT\n");
    		}
    		else
    		{
    			if (p==1)
    			{
    				if (H>h)
    				{
    					printf("%02d:%02d:%02d\n", H, M, S);
    				}
    				else if ((H==h) && (M>m))
    				{
    					printf("%02d:%02d:%02d\n", H, M, S);
    				}
    				else if ((H==h) && (M==m) && (S>s))
    				{
    					printf("%02d:%02d:%02d\n", H, M, S);
    				}
    				else
    				{
    					printf("%02d:%02d:%02d\n", h, m, s);
    				}
    			}
    		}
    	}
    	else
    	{
    		if (p==1)
    		{
    			printf("FILED FORMATED\n");
    		}
    	}
    }
    Вот и всё
    Последний раз редактировалось pingvin; 22.04.2011 в 12:39.
    Ответить с цитированием  
     

Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Время пользователя
    от Ultra_Dragonoid в разделе PHP
    Ответов: 4
    Последнее сообщение: 13.01.2013, 15:19
  2. Ответов: 3
    Последнее сообщение: 29.12.2011, 05:14
  3. Ответов: 3
    Последнее сообщение: 23.12.2011, 00:01
  4. Запрос в записи.как её определить??
    от NamYola в разделе Turbo Pascal
    Ответов: 2
    Последнее сообщение: 30.05.2011, 07:29
  5. Ответов: 4
    Последнее сообщение: 01.04.2011, 00:58
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •