Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2012, 01:46   #1
Chevalier
Новичок
Джуниор
 
Регистрация: 09.12.2012
Сообщений: 2
По умолчанию C++ вывод времени проблема с вводом :

программа должна полностью заменять функцию TIME из командной строки, но я не могу добиться ввода времени в формате ЧЧ:ММ:CC,МС
(часы : минуты: секунды , миллисекунды), все мои попытки были уничтожены и после 7 часов раздумий не нашел ничего умнее чем запостить тему сюда =)
подскажите как можно сделать ввод времени с двоеточиями и запятой (строго так сачала 2 : потом 1 запятая) не убивая сильно мою прогу =(
ещё проблемы с вводом не /t а любого другого символа, надо как то запихнуть в while, чтобы каждый раз при в воде матюка меня просили ввести новое время =)

сечайс прога забивает время чрез пробелы 12 12 12 12
Код:
#include <iostream>
#include <stdio.h>
#include <time.h>
#include <windows.h>
using namespace std;

	
	int main (int argc, char* argv[]){
		setlocale (LC_ALL, "rus");
		SYSTEMTIME lt; 
		GetLocalTime(&lt);
		
		int i=0,b=0;
		if (argv[1]==0){
			
		
			
			printf("Текущее время: %d:%d:%d,%d\n",lt.wHour,lt.wMinute,lt.wSecond,lt.wMilliseconds);
			int hour,minutes,seconds,milliseconds ;
			while (i=1) {
				printf("Введите новое время: ");
				cin>>hour>>minutes>>seconds>>milliseconds;

			if ((hour>24)||(minutes>60)||(seconds>60)||(milliseconds>1000))	
			{
				printf ("Указано недопустимое время. \n");
				i=0;
			
			}
			else  {
			lt.wHour = hour; 
			lt.wMinute = minutes; 
			lt.wSecond = seconds;
			lt.wMilliseconds = milliseconds;
				SetLocalTime(&lt);
			if (SetLocalTime (&lt)==0){
				printf("Клиент не обладает требуемыми правами.\n");
			i=1;
			return 1;

			}
			}
			}
			return 1;
		}

		
			
		if (strcmp(argv[1],"/t")==0) 
		{
			printf("%d:%d:%d\n",lt.wHour,lt.wMinute,lt.wSecond);
			return 1;
		}
		else

			if (strcmp(argv[1],"exit")!=0){
				printf("\"%s\" не является внутренней или внешней\n командой, исполняемой программой или пакетным файлом.\n",argv[1]);}
	else	
		return 1;
		
	return 0;
}

Последний раз редактировалось Chevalier; 09.12.2012 в 01:51.
Chevalier вне форума Ответить с цитированием
Старый 09.12.2012, 11:09   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Информация к размышлению:
Код:
	char c[20];
	int h,m,s;
	scanf("%s",&c);
	sscanf(c,"%2d:%2d:%2d",&h,&m,&s);
	printf("Hours=%d\tMinutes=%d\tSeconds=%d",h,m,s);
Обрати внимание на результат функции sscanf. Его можно в if подставить чтоб проверить верно ли ввели строку, можно ли ее разобрать на формат времени.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.12.2012, 11:14   #3
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

Код:
printf("Текущее время: %2d:%2d:%2d,%2d\n",lt.wHour,lt.wMinute,lt.wSecond,lt.wMilliseconds);
Помог? Оставляем отзыв =)
Helloween вне форума Ответить с цитированием
Старый 09.12.2012, 12:34   #4
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Chevalier

я не могу добиться ввода времени в формате ЧЧ:ММ:CC,МС

раз уж ты юзаешь WinAPI, то см. функцию GetTimeFormatEx
Rififi вне форума Ответить с цитированием
Старый 09.12.2012, 13:05   #5
Chevalier
Новичок
Джуниор
 
Регистрация: 09.12.2012
Сообщений: 2
По умолчанию

sscanf работает как надо =) однако в проге все равно нет алгориттма проверки на ввод =/ и как его сделать я не догоняю, т.е. если ввожу все через двоеточия то считывает нормально, если ввести через буквы то он тоже пытается что то делать =/ нужно условие если при вводе в строке не : : , то указано неверное время введите новое время =/ подскажите что нибудь
Chevalier вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с вводом числа. Kunka Microsoft Office Excel 2 01.06.2010 12:42
Проблема с вводом в c++ Builder ksyst Помощь студентам 2 20.12.2009 18:25
Проблема с вводом в массив prod87 Общие вопросы Delphi 1 24.11.2009 22:33
проблема с вводом графа Petruha-nsk Общие вопросы C/C++ 4 10.04.2009 15:51