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

в чем ошибка - C++

Восстановить пароль Регистрация
 
niznay
1 / 1 / 0
Регистрация: 12.09.2013
Сообщений: 22
17.11.2013, 22:00     в чем ошибка #1
программа должна выводить календарь по номеру года и месяца
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
#include <iostream>
using namespace std;
void main()
{
    setlocale(LC_ALL,"");
     int year, month,day,i;
      int g;
       int w, a, y, m;
 cout << "введите год: "; //ввод данных
 cin>>year;
 cout << "введите месяц: ";
 cin>>month;
 
 
 if (month!=2) { //если не февраль, выбираем 30 или 31 день
  if ((month<7 && month%2==0) || (month>7 && month%2!=0)) day=30;
  else day = 31;
 } else { //если февраль, проверяем год на високосность
  if (!((year%100!=0 && year%4==0) || year%400==0)) day=28;
  else day=29;
 
 a = (14-month)/12;
 y = year-a;
 m = month+12*a-2;
 w = (7000 + (day + y + y/4 - y/100 + y/400 + (31*m)/12))%7;
 
 cout<<w;
 
 
 int o=w;
 cout << "\n Пн Вт Ср Чт Пт Сб Вс\n"; //выводим заголовок
 for (int i=1; i<o; i++) cout << "   "; //выводим пробелы до первого числа
 for (int i=1; i<=day; i++, o++) { //выводим календарь
  cout<<"   "<<i;
  if (o%7==0) cout << endl; //каждую неделю переводим курсор на след. строку
 }
  cout<<"";
}
}
Формулу брал с википедии http://ru.wikibooks.org/wiki/%D0%90%...B5%D0%BB%D0%B8
подскажите в чем ошибка,вроде все должно работать но после ввода данных на экран ничего не выводит,хотя должно и посчитать и вывести.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2013, 22:00     в чем ошибка
Посмотрите здесь:

В чем ошибка C++
в чем ошибка? C++
C++ В чем ошибка.
в чем ошибка? C++
C++ В чем ошибка??
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6469 / 2244 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
17.11.2013, 22:10     в чем ошибка #2
niznay, ты умеешь пользоваться отладчиком? Может, пора? Хотя бы попытайся.
niznay
1 / 1 / 0
Регистрация: 12.09.2013
Сообщений: 22
17.11.2013, 22:24  [ТС]     в чем ошибка #3
Вы смеетесь?Конечно я пользовался отладчиком:ошибок не выдает.Дело в том что не выводит результат
Alex5
883 / 618 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
17.11.2013, 22:35     в чем ошибка #4
Вот как выглядит программа, если отформатировать текст ( если visual studio, правка->дополнительно->форматир.)
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
void main()
{
    setlocale(LC_ALL,"");
    int year, month,day,i;
    int g;
    int w, a, y, m;
    cout << "введите год: "; //ввод данных
    cin>>year;
    cout << "введите месяц: ";
    cin>>month;
 
 
    if (month!=2) { //если не февраль, выбираем 30 или 31 день
        if ((month<7 && month%2==0) || (month>7 && month%2!=0)) day=30;
        else day = 31;
    } else { //если февраль, проверяем год на високосность
        if (!((year%100!=0 && year%4==0) || year%400==0)) day=28;
        else day=29;
 
        a = (14-month)/12;
        y = year-a;
        m = month+12*a-2;
        w = (7000 + (day + y + y/4 - y/100 + y/400 + (31*m)/12))%7;
 
        cout<<w;
 
 
        int o=w;
        cout << "\n Пн Вт Ср Чт Пт Сб Вс\n"; //выводим заголовок
        for (int i=1; i<o; i++) cout << "   "; //выводим пробелы до первого числа
        for (int i=1; i<=day; i++, o++) { //выводим календарь
            cout<<"   "<<i;
            if (o%7==0) cout << endl; //каждую неделю переводим курсор на след. строку
        }
        cout<<"";
    }
}
Кроме этого, в отладчике есть команда "Пройти по шагам". Попробуйте по шагам (по строкам) пройти программу.
niznay
1 / 1 / 0
Регистрация: 12.09.2013
Сообщений: 22
17.11.2013, 22:39  [ТС]     в чем ошибка #5
я все перепробавал,я немогу просто понять все должно рабоать ошибок нет а ничего не выводит
Alex5
883 / 618 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
17.11.2013, 22:58     в чем ошибка #6
Если месяц не-февраль, то будут выполнены две строки после "if (month!=2) " (14,15 строки). Затем управление будет передано в конец программы (37 строка).
Отсутствует правая скобка для else { //если февраль ...
C++
1
2
3
else { //если февраль, проверяем год на високосность
        if (!((year%100!=0 && year%4==0) || year%400==0)) day=28;
        else day=29;
Yandex
Объявления
17.11.2013, 22:58     в чем ошибка
Ответ Создать тему
Опции темы

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