Форум программистов, компьютерный форум CyberForum.ru

Не используйте Scanf и Printf (вывести календарь на указанный месяц этого года) - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
Novichok94
0 / 0 / 0
Регистрация: 10.05.2013
Сообщений: 17
10.05.2013, 16:04     Не используйте Scanf и Printf (вывести календарь на указанный месяц этого года) #1
Вводится день, месяц и год, вывести:1)календарь на указанный месяц этого года.
2)Определить день недели по введенное дате.
3)Определить порядковый номер дня в неделе.

Не судите меня строго что задаю такие глупые вопросы и задачи, просто учусь С++, и в дальнейшем хотелось бы научиться писать задачи самому.))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2013, 16:04     Не используйте Scanf и Printf (вывести календарь на указанный месяц этого года)
Посмотрите здесь:

C++ Запросить у пользователя ввести месяц года, и если он равен текущему, вывести ответ «Верно»
C++ printf scanf проги
C++ printf/scanf
Составить программу, которая по введенному номеру месяца и номеру года выводит количество дней в этом месяце(использовать операторы printf и scanf) C++
C++ Можете проверить scanf/printf
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zybrzybr
 Аватар для zybrzybr
17 / 16 / 0
Регистрация: 29.09.2010
Сообщений: 156
10.05.2013, 22:58     Не используйте Scanf и Printf (вывести календарь на указанный месяц этого года) #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <iostream>
#include <stdio.h>
#include <ctime>
#include <windows.h>
#include <clocale>
 
using namespace std;
 
int getDays( int month, int year )
{
   const int days[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
  int result = -1;
 
  if( month < 0 || month > 11 )
    return result;
 
  result = days[ month ];
  if( year % 4 == 0 && ( year % 100 != 0 || year % 400 == 0 ))
    ++result;
 
  return result;
}
int main()
{
    setlocale(0,"russian");
    HANDLE hCon;
    COORD cPos;
    struct tm t;
    int td;
    cout << "День  ";  cin >> td;
    cout<<"Месяц  "; cin >> t.tm_mon; ;
    t.tm_mon --;
    cout << "Год  ";   cin >> t.tm_year ;
    t.tm_year -= 1900;
    t.tm_hour = t.tm_min = t.tm_sec = t.tm_mday = 1;
    mktime(&t);
    cout << "ПН ВТ Ср Чт Пт Сб Вс " << endl;
    hCon = GetStdHandle(STD_OUTPUT_HANDLE);
    cPos.Y = 5;
    cPos.X = 0; //t.tm_wday * 3 ;
    SetConsoleCursorPosition(hCon, cPos);
    int wd= t.tm_wday - 1;
    while ( t.tm_mday <= getDays(t.tm_mon,t.tm_year ) )
    {
        cPos.X = 3 * wd  ;
        SetConsoleCursorPosition(hCon, cPos);
        printf("%d",t.tm_mday);
        wd ++;
        t.tm_mday ++;
        if ( wd >= 7 )
        {
            cPos.X = 3*wd ;
            cPos.Y = cPos.Y + 1;
            wd = 0;
        };
        cout<< " "<< endl;
    };
 
    t.tm_mday = td;
    mktime(&t);
    char den [] [13] = {
                        "Воскресенье",
                        "понедельник",
                        "вторник",
                        "среда",
                        "четверг",
                        "Пятница",
                        "Суббота"
                       };
    cout << den [t.tm_wday] << endl;
 
    system("Pause");
    return 0;
}
запарился ...
Novichok94
0 / 0 / 0
Регистрация: 10.05.2013
Сообщений: 17
11.05.2013, 11:30  [ТС]     Не используйте Scanf и Printf (вывести календарь на указанный месяц этого года) #3
Слушай а почему в консоли , день месяц и год, пишутся на странном языке?
zybrzybr
 Аватар для zybrzybr
17 / 16 / 0
Регистрация: 29.09.2010
Сообщений: 156
11.05.2013, 12:59     Не используйте Scanf и Printf (вывести календарь на указанный месяц этого года) #4
25 строка : setlocale(LC_ALL,"Russian");

а где еще если не в консоли?)))
Novichok94
0 / 0 / 0
Регистрация: 10.05.2013
Сообщений: 17
11.05.2013, 13:26  [ТС]     Не используйте Scanf и Printf (вывести календарь на указанный месяц этого года) #5
zybrzybr, помоги написать остальные задачки они вроде легкие но я в них запутался, блин((( пункты 2)и3)пожалста
zybrzybr
 Аватар для zybrzybr
17 / 16 / 0
Регистрация: 29.09.2010
Сообщений: 156
11.05.2013, 13:37     Не используйте Scanf и Printf (вывести календарь на указанный месяц этого года) #6
Цитата Сообщение от Novichok94 Посмотреть сообщение
Определить порядковый номер дня в недел
C++
1
2
3
4
5
6
7
8
9
10
11
12
    t.tm_mday = td;
    mktime(&t);
    char den [] [13] = {
                        "Воскресенье",
                        "понедельник",
                        "вторник",
                        "среда",
                        "четверг",
                        "Пятница",
                        "Суббота"
                       };
    cout << den [t.tm_wday] << endl;
это и есть день недели.
только поверх еще и пишет название этого дня.
а как оно должно выглядить?

Добавлено через 9 минут
C++
1
2
3
t.tm_mday = td;    //номер дня месяца 1-31
    mktime(&t);        // возвращает эквивалент календарного времени по дате введенной в структуру "t"
    t.tm_wday          // номер дня недели начиная с воскресенья 0-6
Novichok94
0 / 0 / 0
Регистрация: 10.05.2013
Сообщений: 17
11.05.2013, 14:35  [ТС]     Не используйте Scanf и Printf (вывести календарь на указанный месяц этого года) #7
а день недели по введенной дате тоже в этой программе есть я так понял?просто у меня вот тчо выдает, если в консоли забить сегодняшнее число Не используйте Scanf и Printf (вывести календарь на указанный месяц этого года)вот получается такая байда?? в чем проблема?
zybrzybr
 Аватар для zybrzybr
17 / 16 / 0
Регистрация: 29.09.2010
Сообщений: 156
11.05.2013, 14:55     Не используйте Scanf и Printf (вывести календарь на указанный месяц этого года) #8
в 25 строке помеяй на
C++
1
setlocale(LC_ALL,"Russian")
или просто пропиши албанскими буквами.
Novichok94
0 / 0 / 0
Регистрация: 10.05.2013
Сообщений: 17
11.05.2013, 15:18  [ТС]     Не используйте Scanf и Printf (вывести календарь на указанный месяц этого года) #9
прописал как ты сказал в 25 строке setlocale(LC_ALL,"Russian"); а толку ни какого комплилирую и те же самые буквы
, че за ...
zybrzybr
 Аватар для zybrzybr
17 / 16 / 0
Регистрация: 29.09.2010
Сообщений: 156
11.05.2013, 15:31     Не используйте Scanf и Printf (вывести календарь на указанный месяц этого года) #10
www.cyberforum.ru/cpp-beginners/thread10662.html

попробуй здесь почитать
Novichok94
0 / 0 / 0
Регистрация: 10.05.2013
Сообщений: 17
11.05.2013, 15:45  [ТС]     Не используйте Scanf и Printf (вывести календарь на указанный месяц этого года) #11
а у тебя все норм , если в 25 строке прописываешь? может какая то другая проблема?
zybrzybr
 Аватар для zybrzybr
17 / 16 / 0
Регистрация: 29.09.2010
Сообщений: 156
11.05.2013, 15:54     Не используйте Scanf и Printf (вывести календарь на указанный месяц этого года) #12
Цитата Сообщение от Novichok94 Посмотреть сообщение
а у тебя все норм , если в 25 строке прописываешь? может какая то другая проблема?
я в code::Blocks работаю. там все нормально!
Novichok94
0 / 0 / 0
Регистрация: 10.05.2013
Сообщений: 17
11.05.2013, 16:07  [ТС]     Не используйте Scanf и Printf (вывести календарь на указанный месяц этого года) #13
а в Builder можешь проверить,? если есть конечно он у тебя?
zybrzybr
 Аватар для zybrzybr
17 / 16 / 0
Регистрация: 29.09.2010
Сообщений: 156
11.05.2013, 16:37     Не используйте Scanf и Printf (вывести календарь на указанный месяц этого года) #14
попробуй сделать вот так:


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    --//--//--//--//--//
 
    if( year % 4 == 0 && ( year % 100 != 0 || year % 400 == 0 ))
    ++result;
 
  return result;
}
 
char bufRus[256];
 
char* Rus(const char* text) {
      CharToOem(text, bufRus);
      return bufRus;
      }
      
int main()
{
//   setlocale(0,"russian");
    HANDLE hCon;
    COORD cPos;
    struct tm t;
    int td;
    cout << Rus("День  ");  cin >> td;
Добавлено через 25 минут
C++
1
system("chcp 1251");
Novichok94
0 / 0 / 0
Регистрация: 10.05.2013
Сообщений: 17
11.05.2013, 18:08  [ТС]     Не используйте Scanf и Printf (вывести календарь на указанный месяц этого года) #15
этим способом, изменился только день-пишется по русски, ну в самом начале в консоли день по русски выдает а все остальное вплоть до календаря пишется на другом языке(((
zybrzybr
 Аватар для zybrzybr
17 / 16 / 0
Регистрация: 29.09.2010
Сообщений: 156
11.05.2013, 18:23     Не используйте Scanf и Printf (вывести календарь на указанный месяц этого года) #16
давай попробуем подумать что изменилось и почему)
только первая строка "день" подверглась обработке функцией Rus(char*)
Novichok94
0 / 0 / 0
Регистрация: 10.05.2013
Сообщений: 17
11.05.2013, 18:55  [ТС]     Не используйте Scanf и Printf (вывести календарь на указанный месяц этого года) #17
а где еще над заменить на Rus, в каких строках?
zybrzybr
 Аватар для zybrzybr
17 / 16 / 0
Регистрация: 29.09.2010
Сообщений: 156
11.05.2013, 18:57     Не используйте Scanf и Printf (вывести календарь на указанный месяц этого года) #18
Цитата Сообщение от Novichok94 Посмотреть сообщение
а где еще над заменить на Rus, в каких строках?
вот в одной изменили и вывелось русскими, где еще изменить... ? - там где нужны русские буквы)))
Novichok94
0 / 0 / 0
Регистрация: 10.05.2013
Сообщений: 17
12.05.2013, 02:23  [ТС]     Не используйте Scanf и Printf (вывести календарь на указанный месяц этого года) #19
Помоги дописать задачку до конца, плизззз)) с меня огромный +!!!!!!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2013, 12:45     Не используйте Scanf и Printf (вывести календарь на указанный месяц этого года)
Еще ссылки по теме:

Написать программу с использованием функций printf и scanf: ввести два вещественных значения и вывести их произведение на экран монитора C++
C++ 1 января не високосного года-понедельник. Вводится число и месяц этого года. Вывести день недели этого дня
Символы %ls и %lc в printf и scanf C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
zybrzybr
 Аватар для zybrzybr
17 / 16 / 0
Регистрация: 29.09.2010
Сообщений: 156
12.05.2013, 12:45     Не используйте Scanf и Printf (вывести календарь на указанный месяц этого года) #20
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <iostream>
#include <stdio.h>
#include <ctime>
#include <windows.h>
#include <clocale>
 
using namespace std;
 
int getDays( int month, int year )
{
   const int days[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
  int result = -1;
 
  if( month < 0 || month > 11 )
    return result;
 
  result = days[ month ];
  if( year % 4 == 0 && ( year % 100 != 0 || year % 400 == 0 ))
    ++result;
 
  return result;
}
 
char bufRus[256];
 
char* Rus(const char* text) {
      CharToOem(text, bufRus);
      return bufRus;
      }
 
int main()
{
//    setlocale(LC_ALL,"russian");
    HANDLE hCon;
    COORD cPos;
    struct tm t;
    int td;
    cout << Rus("День  ");  cin >> td;
    cout<<Rus("Месяц  "); cin >> t.tm_mon; ;
    t.tm_mon --;
    cout << Rus("Год  ");   cin >> t.tm_year ;
    t.tm_year -= 1900;
    t.tm_hour = t.tm_min = t.tm_sec = t.tm_mday = 1;
    mktime(&t);
    cout << Rus("ПН ВТ Ср Чт Пт Сб Вс ") << endl;
    hCon = GetStdHandle(STD_OUTPUT_HANDLE);
    cPos.Y = 5;
    cPos.X = 0; //t.tm_wday * 3 ;
    SetConsoleCursorPosition(hCon, cPos);
    int wd= t.tm_wday - 1;
    while ( (t.tm_mday <= getDays(t.tm_mon,t.tm_year ))&&(t.tm_mday<=31) )
    {
        cPos.X = 3 * wd  ;
        SetConsoleCursorPosition(hCon, cPos);
        printf("%d",t.tm_mday);
        wd ++;
        t.tm_mday ++;
        if ( wd >= 7 )
        {
            cPos.X = 3*wd ;
            cPos.Y = cPos.Y + 1;
            wd = 0;
        };
        cout<< " "<< endl;
    };
 
    t.tm_mday = td;
    mktime(&t);
 
    char den [] [32] = {
                        "Воскресенье. 7-ой день недели",
                        "понедельник. 1-ый день недели",
                        "вторник.2-ой день недели",
                        "среда.3-ий день недели",
                        "четверг. Опять четверг??",
                        "Пятница. ура - пятница",
                        "Суббота. сложный день"
                       };
    cout << Rus(den [t.tm_wday]) << endl;
 
    system("Pause");
    return 0;
}
Yandex
Объявления
12.05.2013, 12:45     Не используйте Scanf и Printf (вывести календарь на указанный месяц этого года)
Ответ Создать тему
Опции темы

Текущее время: 00:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru