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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
dac
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 6
#1

Прекращена работа программы - C++

22.09.2013, 23:20. Просмотров 558. Ответов 4
Метки нет (Все метки)

Здравствуйте))
У меня возникла такая вот проблема: мне задали написать программу,которая определяет количество дней от текущей даты до нового года и до дня рождения. В программе нужно использовать класс,описывающий дату. Даты вводить с клавиатуры.
Собственно,я написала программу.
Но вот в чем загвоздка,для класса разработан метод,вычисляющий разницу в днях. И все бы нормально...
Вызываю я этот метод два раза,первый раз все отлично,а второй-появляется окошко "Прекращена работа программы"
Никаких ошибок при генерации программного кода нет.

Привожу код программы. Помогите разобраться,в чем же дело. Заранее спасибо))

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
#include "stdafx.h"
#include <iostream>
#include <locale>
using namespace std;
 
static char daytab [2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
 
class DATE{
    int d,m,y;
public:
    void INPUT()
    {cout<<"\n День - ";
     cin>>d;
     cout<<" Месяц - ";
     cin>>m;
     cout<<" Год - ";
     cin>>y;
     cout<<"\n";
    }
    int YEAR()
    {return (y%4==0 && y%100!=0 || y%400==0);
    }
    int REST(DATE &P,DATE &L)
    {int p,l,rest;
     char *pp;
     char *ll;
     p=P.YEAR();
     l=L.YEAR();
     pp=daytab[p];
     ll=daytab[l];
     while (--P.m)
        P.d+=*++pp;
     while (--L.m)
        L.d+=*++ll;
     if (P.y==L.y)
         rest=L.d-P.d;
     else
        {if (ll==0)
            rest=L.d-P.d+365;
        else 
            rest=L.d-P.d+366;
        }
     return rest;
    }
};
 
void _tmain()
{setlocale(LC_ALL,"Russian");
  DATE day,ny,br;
  cout<<"\n Введите текущую дату:";
  day.INPUT();
  cout<<"\n Введите дату ближайшего Дня Рождения:";
  br.INPUT();
  cout<<" До Дня Рождения осталось - "<<day.REST(day,br)<<" дней!";
  cout<<"\n Введите дату ближайшего Нового Года:";
  ny.INPUT();
  cout<<" До Нового Года осталось - "<<day.REST(day,ny)<<" дней!";
  
  cout<<endl<<endl;
}
P.S. Это далеко уже не первый вариант программы
Создавала и два разных метода,где дату нового года вводить не надо,но результат,к сожалению, аналогичен
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2013, 23:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Прекращена работа программы (C++):

Прекращена работа программы - C++
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;conio.h&gt; #include &lt;windows.h&gt; #include &lt;stdio.h&gt; /* run this program using the...

Прекращена работа программы - C++
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt; #include &lt;stdio.h&gt; #include &lt;iomanip&gt; #include &lt;conio.h&gt; #include...

Прекращена работа программы с++ - C++
Помогите . #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;iterator&gt; using namespace std; bool sorted(int a,int razmer) { ...

Прекращена работа программы - C++
При запуске консольного приложения выскакивает окно, где говорится о том, что прекращена работа программы. Сообщите, пожалуйста, в каких...

Прекращена работа программы - C++
Написал следующую программу на visual c++ express 2010: #include &lt;iostream&gt; using namespace std; void main() { const int rows=3,...

Прекращена работа программы - C++
Написал программу. Суть в следующем - создаешь ее ярлык с заданными параметрами и при запуске с компьютером происходят след. действия:...

4
Ab
75 / 75 / 1
Регистрация: 03.05.2012
Сообщений: 161
23.09.2013, 06:21 #2
У вас при первом вызове REST() модифицируется текущая дата, обнуляются день и месяц. Из-за этого при втором вызове попадаете уже не на элементы в массиве daytab, а неизвестно куда.
1
dac
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 6
23.09.2013, 17:18  [ТС] #3
Спасибо огромное)))
Вот всё из-за чего)
Не подскажете, как я могу это исправить?
А-то я вожусь с этой программой давно, кучу вариантов переделала, не могла понять, в чем же дело...
Даже преподаватель мне не смогла помочь...
0
Ab
75 / 75 / 1
Регистрация: 03.05.2012
Сообщений: 161
23.09.2013, 18:55 #4
Ну, грамотный преподаватель все-таки должен находить ошибки в учебных программах объемом ~50 строк. Исправлять можно по-разному, например:
1. В методе REST используйте дополнительные локальные переменные, а члены класса пусть остаются нетронутыми.
2. Перед первым вызовом REST скопируйте текущую дату и во второй вызов засылайте копию.

И не пишите вы конструкции типа
C++
1
P.d+=*++pp;
Выглядят эффектно, но для новичков сложновато, разбейте на 2-3 простых, будет нагляднее и понятнее.
1
dac
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 6
23.09.2013, 19:03  [ТС] #5
Спасибо))
Я поняла,исправлю)
0
23.09.2013, 19:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2013, 19:03
Привет! Вот еще темы с ответами:

Массив. Прекращена работа программы - C++
Доброго времени суток! Я так понял, что неправильно задаю массив. #include &quot;stdafx.h&quot; #include &quot;iostream&quot; int _tmain(int argc,...

Прекращена работа программы proj.exe - C++
Доброго времени суток всем. У меня возникла неприятная проблемка. Я написал программу(даже не всю а только часть) которая, в последствии,...

Прекращена работа программы, неполадки с конструктором - C++
При запуске выбывает &quot;Прекращена работа программы&quot;. Скорее всего проблемы с конструктором для Note mas; . Может намудрил с указателем на...

Динамическое выделение памяти\конструтор копирования\'работа программы прекращена' - C++
Добрый вечер! Зараннее всех благодарю то время, которое вы потратили на прочтение этого. Особая благодарнасть тому кто сможет...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru