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

Ошибка в выводе данных - C++

Восстановить пароль Регистрация
 
LAans
1 / 1 / 0
Регистрация: 29.04.2010
Сообщений: 46
10.01.2011, 22:37     Ошибка в выводе данных #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
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
 
struct date
    {
    int day;
    char month[30];
    int year;
    };
 
date make();
void print (date);
void form(date*,int);
void pechat(date*,int);
void poisk(date*,int);
 
int main()
{
    clrscr();
    int n;
    cout<<"\nEnter the size of array: ";
    cin >> n;
 
    date *mass=new date [n];
 
    form(mass,n);
    pechat(mass,n);
    poisk(mass,n);
    delete[]mass;
    getch();
    return 0;
}
 
date make()
{
    int day;
    char month[30];
    int year;
    cout <<"Day? ";
    cin >> day;
    cout<<"Month? ";
    cin >> month;
    cout <<"Year? ";
    cin >> year;
    date p;
    p.day=day;
    strcpy(p.month,month);
    p.year=year;
    return p;
}
 
void form(date *mass,int n)
{
 
    for(int i=0;i<n;i++)
    mass[i]=make();
 
}
 
void print(date p)
{
    cout<<"\nDay:  "<<p.day<<"\tMonth: "<<p.month<<"\tYear: "<<p.year;
}
 
void pechat(date *mass,int n)
{
    for(int i=0;i<n;i++)
    print(mass[i]);
    cout << endl;
    cout << endl;
}
 
void poisk(date *mass, int n)
{
int num = 0, t;
    for (int i=0; i<n; i++)
        if ((mass[i].day>=1) && (mass[i].day<=10))
        num++;
        if (num!=0)
        {
        cout << "K pervoi dekade mesyaca otnosyatca: " << endl;
        date *mass2=new date [num];
        for (i=0; i<n; i++)
        if ((mass[i].day>=1) && (mass[i].day<=10))
        {
        mass2[t]=mass[i];
        t++;
        }
 
    for (i=0; i<n; i++)
    print(mass2[t]);
    cout << endl;
}
else
cout <<"Net dati, sovpadaushei s 1 dekadoi mesyaca" ;
}
смысл программы - найти даты, которые совпадают с 1 декадой месяца
проверяет на наличие этих дат правильно, а вот с выводом проблемы

Date: -23326 Month: ельной строке программы и начинае Year: -24403
откуда это береться ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2011, 22:37     Ошибка в выводе данных
Посмотрите здесь:

Ошибка при выводе строки C++
ошибка при выводе в последовательности sn на с++ C++
C++ ошибка в выводе стека
C++ ошибка в выводе
C++ Ошибка в выводе файла С++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
10.01.2011, 22:47     Ошибка в выводе данных #2
Цитата Сообщение от LAans Посмотреть сообщение
int num = 0, t;
Здесь не инициализировано t!!!

C++
1
int num = 0, t=0;
LAans
1 / 1 / 0
Регистрация: 29.04.2010
Сообщений: 46
10.01.2011, 22:47  [ТС]     Ошибка в выводе данных #3
C++
1
2
3
4
5
6
7
                date *mass2=new date [num];
                for (i=0; i<n; i++)
                if ((mass[i].day>=1) && (mass[i].day<=10))
                {
                mass2[t]=mass[i];
                t++;
                }
вот в этом куске программы что-то не так(
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
10.01.2011, 22:50     Ошибка в выводе данных #4
См комментарии:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int num = 0, t;// тут t присвойте начальное значение 0
        for (int i=0; i<n; i++)
                if ((mass[i].day>=1) && (mass[i].day<=10))
                num++;
                if (num!=0)
                {
                cout << "K pervoi dekade mesyaca otnosyatca: " << endl;
                date *mass2=new date [num];
                for (i=0; i<n; i++)
                if ((mass[i].day>=1) && (mass[i].day<=10))
                {
                mass2[t]=mass[i];
                t++;
                }
 
        for (i=0; i<n; i++)// в цикле условие должно быть: i<t или i<num
        print(mass2[t]);// нужно print(mass2[i]);
        cout << endl;
}
else
cout <<"Net dati, sovpadaushei s 1 dekadoi mesyaca" ;
}
Glafira
 Аватар для Glafira
2 / 2 / 0
Регистрация: 04.01.2010
Сообщений: 10
10.01.2011, 22:50     Ошибка в выводе данных #5
Цитата Сообщение от LAans Посмотреть сообщение
C++
1
2
3
4
5
6
7
                date *mass2=new date [num];
                for (i=0; i<n; i++)
                if ((mass[i].day>=1) && (mass[i].day<=10))
                {
                mass2[t]=mass[i];
                t++;
                }
вот в этом куске программы что-то не так(

Но ведь i не создана.... В предыдущем цикле оно было создана только для предыдущего цикла). И теперь не существует).
LAans
1 / 1 / 0
Регистрация: 29.04.2010
Сообщений: 46
10.01.2011, 23:05  [ТС]     Ошибка в выводе данных #6
MILAN,
valeriikozlov, спасибо большое !

Glafira, всмысле не создана ? не объявлена ?
она же объявлена была в этой ф-ции чуть выше
Glafira
 Аватар для Glafira
2 / 2 / 0
Регистрация: 04.01.2010
Сообщений: 10
10.01.2011, 23:09     Ошибка в выводе данных #7
Цитата Сообщение от LAans Посмотреть сообщение
MILAN,
valeriikozlov, спасибо большое !

Glafira, всмысле не создана ? не объявлена ?
она же объявлена была в этой ф-ции чуть выше
Ммм.... Наверное, я, такая умная, что-то напутала).
Но твёрдо убеждена, что если объявлена (да-да, я забыла слово это...) в цикле, то в нём существует, а потом уместе с циклом и уходит...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2011, 23:15     Ошибка в выводе данных
Еще ссылки по теме:

C++ Ошибка в выводе сообщения на экран
Ошибка при выводе C++
C++ Ошибка в выводе ответа

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

Или воспользуйтесь поиском по форуму:
vx5
 Аватар для vx5
187 / 171 / 4
Регистрация: 04.09.2010
Сообщений: 656
10.01.2011, 23:15     Ошибка в выводе данных #8
Цитата Сообщение от Glafira Посмотреть сообщение
Но твёрдо убеждена, что если объявлена (да-да, я забыла слово это...) в цикле, то в нём существует, а потом уместе с циклом и уходит..
все правильно. в цикле всего одна инструкция - if, которая в свою очередь содержит целый блок инструкций.
Yandex
Объявления
10.01.2011, 23:15     Ошибка в выводе данных
Ответ Создать тему
Опции темы

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