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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2010, 17:10   #1
Alina5545
Новичок
Джуниор
 
Регистрация: 13.04.2010
Сообщений: 6
По умолчанию записать дату натуральными числами

Добрый день

очень прошу, помогите пожалуйста с задачкой:
Даны натуральные числа a, b, c, которыми обозначены число, месяц и год. Например: 1, 4, 1901 - 1 апреля 1901 года. Получить тройку чисел, которые отвечают определенному дню.

Alina5545 вне форума Ответить с цитированием
Старый 13.04.2010, 17:56   #2
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Так эти числа даны, или их нужно найти?
ds.Dante вне форума Ответить с цитированием
Старый 13.04.2010, 19:35   #3
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

что понимается под определенным днем?
NiCola999 вне форума Ответить с цитированием
Старый 13.04.2010, 19:55   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Какие входные данные, какие выходные, и что между ними (ваши наработки)?
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 13.04.2010, 20:08   #5
Alina5545
Новичок
Джуниор
 
Регистрация: 13.04.2010
Сообщений: 6
По умолчанию

я же пример привела 1 апреля 1901 года = 1, 4, 1901.
скорей всего любая дата может быть
я так понимаю, что записать полную дату числами через запятую.
p.s.если бы работа была в Pascal'е или дельфике, я бы помощи не просила..
а т.к. это все надо написать в cpp, потому и попросила помощи...
Alina5545 вне форума Ответить с цитированием
Старый 13.04.2010, 20:46   #6
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

в общем некорректно сформулирована задача, насколько я понял... даны 3 числа вывести из них дату:

Код:
#include <iostream>
#include <sstream>
#include <windows.h>
using namespace std;

string toRus(string str);

int main(void)
{   
   stringstream _day, _month, _year;
   string day, year, date;
   string month[12] = {"января","февраля", "марта", "апреля",
                               "мая", "июня", "июля", "августа",
			       "сентября", "октября", "ноября", "декабря"};
   int a = 1, b = 4, c = 1991;
   _day << a; day = _day.str();   
   _year << c; year = _year.str();   
   year += toRus(" года");
   date = day + " " + toRus(month[b-1]) + " " + year;
   
   cout << date << endl;
   return 0;
}

string toRus(string str)
{
   char msg[str.size()];
   CharToOem(str.c_str(), msg);
   return msg;
}

Последний раз редактировалось NiCola999; 13.04.2010 в 20:54.
NiCola999 вне форума Ответить с цитированием
Старый 13.04.2010, 20:56   #7
Alina5545
Новичок
Джуниор
 
Регистрация: 13.04.2010
Сообщений: 6
По умолчанию

в таком случае прошу прощения за некорректность.
вводим: 1 апреля 1901 года, а нам выдает 1, 4, 1901.
Из введенной даты дд.мм.гг. выводит 3 числа.

p.s. sorry, но в каком из C++ вы составляли данную програмку, т.к. Dev-C++ выдает кучу ошибок
Alina5545 вне форума Ответить с цитированием
Старый 13.04.2010, 21:15   #8
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

держи) у меня в dev c++ работает, специально проверил, хотя сам писал в notepad++ и компилировал g++
Код:
#include <iostream>
#include <windows.h>
using namespace std;

string toRus(string str);

int main(void)
{      
   string day, year, month;
   int _month = 0;
   string dataMonth[12] = {"января", "февраля", "марта", "апреля",
                                     "мая", "июня", "июля",  "августа",
			             "сентября", "октября", "ноября", "декабря"};
   cin >> day >> month >> year; // ввод даты
   for(int i=0; i<12; i++) {
       if(toRus(dataMonth[i]) == month){	     // нахождение месяца
               _month = i+1;  // +1 т.к в C++ индекс массива начинается с 0
	       break;
       }
   }
   if(_month == 0 || day > 31)  // тут надеюсь понятно
        cout << toRus("Ошибка ввода") << endl;
   else
        cout << day << "," << _month << "," << year;   
   return 0;
}

string toRus(string str)  // лично у меня setlocale не работал никогда, поэтому я писал так
{
   char msg[str.size()];
   CharToOem(str.c_str(), msg);
   return msg;
}

Последний раз редактировалось NiCola999; 13.04.2010 в 21:25.
NiCola999 вне форума Ответить с цитированием
Старый 13.04.2010, 21:27   #9
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Просто любопытно, сие действительно будет работать? )
Бросается в глаза - не подключён string, потом
Код:
if(_month == 0 || day > 31) // day - string, 31 - int, result - ?
и
Код:
char msg[str.size()]; // не известно во время компиляции, должно ругаццо
netrino вне форума Ответить с цитированием
Старый 13.04.2010, 21:32   #10
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

как это не подключен, string же находится в std.
а на счет размера строки, я не понял почему компилятор не ругается.
Код:
#include <iostream>
#include <windows.h>
using namespace std;

string toRus(string str);

int main(void)
{      
   string month;
   int _month = 0, day, year;
   string dataMonth[12] = {"января", "февраля", "марта", "апреля",
                                     "мая", "июня", "июля",  "августа",
			             "сентября", "октября", "ноября", "декабря"};
   cin >> day >> month >> year; // ввод даты
   for(int i=0; i<12; i++) {
       if(toRus(dataMonth[i]) == month){	     // нахождение месяца
               _month = i+1;  // +1 т.к в C++ индекс массива начинается с 0
	       break;
       }
   }
   if(_month == 0 || day > 31)  // тут надеюсь понятно
        cout << toRus("Ошибка ввода") << endl;
   else
        cout << day << "," << _month << "," << year;   
   return 0;
}

string toRus(string str)  // лично у меня setlocale не работал никогда, поэтому я писал так
{
   char msg[80];
   CharToOem(str.c_str(), msg);
   return msg;
}

Последний раз редактировалось NiCola999; 13.04.2010 в 21:44.
NiCola999 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачи с числами Alexxx92 Помощь студентам 4 26.04.2011 05:42
Как записать в базу дату с календаря? Scorpy БД в Delphi 8 11.11.2008 21:44
Работа с натуральными цифрами в Делфи Cartman18 Помощь студентам 4 16.04.2008 14:38
Работа с числами Drain Общие вопросы Delphi 10 11.02.2008 16:35