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

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

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

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

10.01.2011, 22:37. Просмотров 352. Ответов 7
Метки нет (Все метки)

здравствуйте. подскажите, пожалуйста, где ошибка ?

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
откуда это береться ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2011, 22:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в выводе данных (C++):

Ошибка в выводе данных, класс выводит правильно, а класс в классе - нет - C++
Неизвестная для меня проблема. Класс выводит данные правильно из Consigment, а вот третий экземпляр класса, работает не верно, если...

Ошибка в выводе - C++
Помогите найти ошибку! Почему то выводит 2 раза фразу введите размер массива, когда второй раз проходит программу #include &quot;stdafx.h&quot; ...

Ошибка в выводе файла С++ - C++
Добрый день, подскажите пожалуйста в чем загвоздка: Файл: R0_11 0 11 1 .PRINT TRAN I(R0_11) R11_12 11 12 1 .PRINT TRAN I(R11_12) ...

Ошибка в выводе стека - C++
void output (node *&amp; st, char t) { cout&lt;&lt;t; if (st) { node *p=st; while (p) { cout&lt;&lt;p-&gt;info; p=p-&gt;next; ...

Ошибка в выводе экран - C++
Добрый день,такая проблема когда пишу вывод всех сотрудников той же функции где я с ними заполняю массив,то все выводится нормально,но...

Ошибка в выводе ответа - C++
int main(int argc, char *argv) { setlocale(0, &quot;RUS&quot;); int a, b, c, result; printf(&quot;Введите a: &quot;); scanf(&quot;%d&quot;, &amp;a); ...

7
MILAN
886 / 780 / 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;
1
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++;
                }
вот в этом куске программы что-то не так(
0
valeriikozlov
Эксперт С++
4673 / 2499 / 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" ;
}
1
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 не создана.... В предыдущем цикле оно было создана только для предыдущего цикла). И теперь не существует).
1
LAans
1 / 1 / 0
Регистрация: 29.04.2010
Сообщений: 46
10.01.2011, 23:05  [ТС] #6
MILAN,
valeriikozlov, спасибо большое !

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

Glafira, всмысле не создана ? не объявлена ?
она же объявлена была в этой ф-ции чуть выше
Ммм.... Наверное, я, такая умная, что-то напутала).
Но твёрдо убеждена, что если объявлена (да-да, я забыла слово это...) в цикле, то в нём существует, а потом уместе с циклом и уходит...
0
vx5
187 / 171 / 4
Регистрация: 04.09.2010
Сообщений: 656
10.01.2011, 23:15 #8
Цитата Сообщение от Glafira Посмотреть сообщение
Но твёрдо убеждена, что если объявлена (да-да, я забыла слово это...) в цикле, то в нём существует, а потом уместе с циклом и уходит..
все правильно. в цикле всего одна инструкция - if, которая в свою очередь содержит целый блок инструкций.
0
10.01.2011, 23:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2011, 23:15
Привет! Вот еще темы с ответами:

Ошибка при выводе - C++
Не могу найти ошибку в цикле. Суть такая: &quot;вывести на дисплей фамилии и номера групп для всех студентов, включенных в массив, имеющих хотя...

Разность матриц. Ошибка в выводе - C++
Вместо двухмерного массива выводит одномерный. Почему это происходит? #include &lt;iostream&gt; using namespace std; int main() ...

Ошибка в выводе сообщения на экран - C++
Как вывести на экран сообщение в виде слова, а не цифры? #include &lt;iostream&gt; using namespace std; int main() { while(true) ...

Ошибка при выводе дерева - C++
#include &lt;iostream&gt; using namespace std; struct node { int inf; node *left; node *right; };


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

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

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