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

Программа выводит число и месяц по вводимому номеру порядкового дня: ошибка в программе - C++

Восстановить пароль Регистрация
 
bubik
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 21
15.05.2013, 22:47     Программа выводит число и месяц по вводимому номеру порядкового дня: ошибка в программе #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
40
41
42
43
#include "stdafx.h"
#include <iostream>
using namespace std; 
 
struct data {
int d;
int y;
int dy;
int *pm; 
int *pd;
};
 
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}};
 
void daymonth (data d)
 
{
int l;
char *p;
l = (d.y%4 == 0) && (d.y%100 != 0) || (d.y%400 == 0);
p=daytab[l];
while (d.dy>*++p)
d.dy-=*p;
*d.pm=p-*(daytab+l);
*d.pd=d.dy;
}
 
int _tmain()
 
{ data date;
cout<<"Vvedite poryadkoviy nomer chisla: \n";
cin>>date.d;
cout<<"Vvedite god: \n";
cin>>date.y;
 
daymonth(date);
cout<<endl<<"Day: "<<date.pd<<endl;
cout<<"Month: "<<date.pm<<endl;
cout<<"Year: "<<date.y<<endl<<endl;
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2013, 22:47     Программа выводит число и месяц по вводимому номеру порядкового дня: ошибка в программе
Посмотрите здесь:

Составить программу, которая по номеру введенного дня недели вводит название дня. C++
программа которая по номеру дня в году выводит число и месяц C++
По вводимому числу от 1 до 11 (номеру класса) выдать соответствующее сообщение C++
По заданной дате (число, месяц, год, например, 6, 5, 2012) вычислить номер дня в году C++
Программа выводит изображение календаря на любой месяц C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
15.05.2013, 23:23     Программа выводит число и месяц по вводимому номеру порядкового дня: ошибка в программе #2
учитесь пользоваться дебагером.
проблемный код:
C++
1
2
3
4
5
6
...
while (d.dy>*++p)
  d.dy-=*p;
*d.pm=p-*(daytab+l);
*d.pd=d.dy;
...
d.dy - неинициализировано, значит значение может быть любым, значит тело цикла может выполняться
неопределенное количество раз. но так как там только операции чтения, это не приводит к крашу. к
крашу приводят следующие после цикла строки.
d.pm - неинициализированный указатель.
*d.pm - разыменовывание неинициализированного указателя дает неопределенное поведение (например краш приложения.)
bubik
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 21
15.05.2013, 23:46  [ТС]     Программа выводит число и месяц по вводимому номеру порядкового дня: ошибка в программе #3
DU, Спасибо за пояснение, но я все равно не очень все понял...)
Не могли бы вы помочь исправить?
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
15.05.2013, 23:57     Программа выводит число и месяц по вводимому номеру порядкового дня: ошибка в программе #4
неинициализированные переменные нужно явно проинициализировать какими-нибудь значениями. какими именно - вам виднее. я задумку программы не понял и не очень охото пытаться понять. так что постарайтесь как-нибудь сами.
zatochka
Сообщений: n/a
16.05.2013, 02:54     Программа выводит число и месяц по вводимому номеру порядкового дня: ошибка в программе #5
Вам надо задать конкретные начальные значения переменных, и указать, на, что ссылается ваша переменная-указатель.) Только и всего. А какие они будут, это вы посмотрите сами относительно постановки задачи.
bubik
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 21
16.05.2013, 20:20  [ТС]     Программа выводит число и месяц по вводимому номеру порядкового дня: ошибка в программе #6
Все, разобрался)
Спасибо большое!
Yandex
Объявления
16.05.2013, 20:20     Программа выводит число и месяц по вводимому номеру порядкового дня: ошибка в программе
Ответ Создать тему
Опции темы

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