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

Использование функций - C++

Восстановить пароль Регистрация
 
Денис96
 Аватар для Денис96
0 / 0 / 0
Регистрация: 10.08.2011
Сообщений: 55
14.01.2013, 12:34     Использование функций #1
Доброго времени суток, уважаемые форумчане.
Будьте добры, помогите, пожалуйста, решить задачу.

______________________________________________________________________
Дана структура с информацией о 12-ти заводах, в которой есть такие поля: "Наименование", "Площадь", "Плановый обьем продаж", "Фактический обьем продаж", "Комментарии". Нужно написать функцию, которая выводит заводы, которые не выполнили план.
Объясните, что у меня не так. Заранее простите за корявый код.

______________________________________________________________________
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
99
100
101
102
103
104
105
106
107
108
109
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;
struct Plants
{
    char* name; 
    int square; 
    int vplan;
    int vfact;
    char* com;
};
int func(bool found);
int main()
{
    setlocale (LC_ALL, "Russian");
    Plants f[11];
    int k=0;
    f[0].name = "MotorSICH";
    f[0].square = 158;
    f[0].vplan = 950;
    f[0].vfact = 1020;
    f[0].com="not bad";
 
    f[1].name = "Ferro";
    f[1].square = 220;
    f[1].vplan = 1000;
    f[1].vfact = 950;
    f[1].com="not so good";
 
    f[2].name = "Ferro1";
    f[2].square = 100;
    f[2].vplan = 500;
    f[2].vfact = 600;
    f[2].com = "good";
 
    f[3].name = "Toyota";
    f[3].square = 2000;
    f[3].vplan = 9000;
    f[3].vfact = 11500;
    f[3].com = "awesome";
 
    f[4].name = "Amazon";
    f[4].square = 500;
    f[4].vplan = 500;
    f[4].vfact = 400;
    f[4].com = "not very good";
 
    f[5].name = "Obolon";
    f[5].square = 300;
    f[5].vplan = 800;
    f[5].vfact = 790;
    f[5].com = "so close";
 
    f[6].name = "Sarmat";
    f[6].square = 400;
    f[6].vplan = 1000;
    f[6].vfact = 1000;
    f[6].com = "normally";
 
    f[7].name = "Marga";
    f[7].square = 100;
    f[7].vplan = 500;
    f[7].vfact = 300;
    f[7].com = "so bad";
 
    f[8].name = "Scallop";
    f[8].square = 200;
    f[8].vplan = 100;
    f[8].vfact = 100 ;
    f[8].com = "normally";
 
    f[9].name = "Pineapple";
    f[9].square = 350;
    f[9].vplan = 1000;
    f[9].vfact = 1025;
    f[9].com = "good";
 
    f[10].name = "Mushel";
    f[10].square = 1000;
    f[10].vplan = 150;
    f[10].vfact = 165; 
    f[10].com = "great";
 
    f[11].name = "Walno";
    f[11].square = 250;
    f[11].vplan = 1000;
    f[11].vfact = 1015;
    f[11].com = "not bad";
    func(found);
    getch();
    return 0;
}
 
 
int func(bool found)
{
    struct Plants f[11];
    for (int i=0; i<=11; i++) 
    {
        if (f[i].vplan<f[i].vfact) 
        {
            cout << endl << "Name: " << f[i].name << "(plan="<<f[i].vplan<<"; fact="<<f[i].vfact<<")"<<endl; 
            bool found = true;
        }
    }
    return found; 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2013, 12:34     Использование функций
Посмотрите здесь:

C++ Использование функций и шаблонов функций
C++ Использование функций
Использование функций C++
Использование функций C++
C++ Использование функций и шаблонов функций
Использование функций C++
C++ Использование функций
C++ Использование функций

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TrueBit
 Аватар для TrueBit
95 / 95 / 12
Регистрация: 19.11.2012
Сообщений: 195
14.01.2013, 13:48     Использование функций #2
Строка 18 вашей программы, там вы выделяете под 11 предприятий, а сами инициализируете 12, программа сыпется после завершения, поскольку вы в неинициализированную память пишите. надо под 12 выделять там. 0,1,2,...,11 всего 12 эл-тов. Что касается функции. То что вы объявили структуру тем же именем, не означает что будет обращение к структуре в мейне. Там память заного будет выделена. Поэтому нужно передавать указатель на вашу структуру(на память где расположены данные). Вот поправил немного ваш код:
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
99
100
101
102
#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;
struct Plants
{
    char * name; 
    int square; 
    int vplan;
    int vfact;
    char * com;
};
void func(Plants * f)
{
    bool found;
    for (int i=0; i<=11; i++) 
    {
        if (f[i].vplan<f[i].vfact) 
        {
            cout << endl << "Name: " << f[i].name << "(plan="<<f[i].vplan<<"; fact="<<f[i].vfact<<")"<<endl; 
        }
    }
}
int main()
{
    setlocale (LC_ALL, "Russian");
    Plants f[12];
    f[0].name = "MotorSICH";
    f[0].square = 158;
    f[0].vplan = 950;
    f[0].vfact = 1020;
    f[0].com="not bad";
 
    f[1].name = "Ferro";
    f[1].square = 220;
    f[1].vplan = 1000;
    f[1].vfact = 950;
    f[1].com="not so good";
 
    f[2].name = "Ferro1";
    f[2].square = 100;
    f[2].vplan = 500;
    f[2].vfact = 600;
    f[2].com = "good";
 
    f[3].name = "Toyota";
    f[3].square = 2000;
    f[3].vplan = 9000;
    f[3].vfact = 11500;
    f[3].com = "awesome";
 
    f[4].name = "Amazon";
    f[4].square = 500;
    f[4].vplan = 500;
    f[4].vfact = 400;
    f[4].com = "not very good";
 
    f[5].name = "Obolon";
    f[5].square = 300;
    f[5].vplan = 800;
    f[5].vfact = 790;
    f[5].com = "so close";
 
    f[6].name = "Sarmat";
    f[6].square = 400;
    f[6].vplan = 1000;
    f[6].vfact = 1000;
    f[6].com = "normally";
 
    f[7].name = "Marga";
    f[7].square = 100;
    f[7].vplan = 500;
    f[7].vfact = 300;
    f[7].com = "so bad";
 
    f[8].name = "Scallop";
    f[8].square = 200;
    f[8].vplan = 100;
    f[8].vfact = 100 ;
    f[8].com = "normally";
 
    f[9].name = "Pineapple";
    f[9].square = 350;
    f[9].vplan = 1000;
    f[9].vfact = 1025;
    f[9].com = "good";
 
    f[10].name = "Mushel";
    f[10].square = 1000;
    f[10].vplan = 150;
    f[10].vfact = 165; 
    f[10].com = "great";
 
    f[11].name = "Walno";
    f[11].square = 250;
    f[11].vplan = 1000;
    f[11].vfact = 1015;
    f[11].com = "not bad";
    func(f);
    getchar();
    return 0;
}
Добавлено через 6 минут
Еще неравенство в условном операторе функции не в ту сторону стоит). Функция выводит предприятия котрые превысили план...
Денис96
 Аватар для Денис96
0 / 0 / 0
Регистрация: 10.08.2011
Сообщений: 55
14.01.2013, 13:57  [ТС]     Использование функций #3
Спасибо, я уже все сделал, все вышло, но только в 13 строке я передал в функцию сам массив, а не указатель на него, и все равно заработало.
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
99
100
101
102
103
104
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;
struct Plants
{
    char* name; 
    int square; 
    int vplan;
    int vfact;
    char* com;
};
 
    void func(Plants f[12])
    {
        for(int i=0;i<12;i++)
        {
            if (f[i].vplan>f[i].vfact) 
            {
                cout << endl << "Name: " << f[i].name << "(plan="<< f[i].vplan <<"; fact="<< f[i].vfact <<")"<<endl;
            }
        } 
    }
int main()
{
    setlocale (LC_ALL, "Russian");
    Plants f[12];
    
    f[0].name = "MotorSICH";
    f[0].square = 158;
    f[0].vplan = 950;
    f[0].vfact = 1020;
    f[0].com="not bad";
 
    f[1].name = "Ferro";
    f[1].square = 220;
    f[1].vplan = 1000;
    f[1].vfact = 950;
    f[1].com="not so good";
 
    f[2].name = "Ferro1";
    f[2].square = 100;
    f[2].vplan = 500;
    f[2].vfact = 600;
    f[2].com = "good";
 
    f[3].name = "Toyota";
    f[3].square = 2000;
    f[3].vplan = 9000;
    f[3].vfact = 11500;
    f[3].com = "awesome";
 
    f[4].name = "Amazon";
    f[4].square = 500;
    f[4].vplan = 500;
    f[4].vfact = 400;
    f[4].com = "not very good";
 
    f[5].name = "Obolon";
    f[5].square = 300;
    f[5].vplan = 800;
    f[5].vfact = 790;
    f[5].com = "so close";
 
    f[6].name = "Sarmat";
    f[6].square = 400;
    f[6].vplan = 1000;
    f[6].vfact = 1000;
    f[6].com = "normally";
 
    f[7].name = "Marga";
    f[7].square = 100;
    f[7].vplan = 500;
    f[7].vfact = 300;
    f[7].com = "so bad";
 
    f[8].name = "Scallop";
    f[8].square = 200;
    f[8].vplan = 100;
    f[8].vfact = 100 ;
    f[8].com = "normally";
 
    f[9].name = "Pineapple";
    f[9].square = 350;
    f[9].vplan = 1000;
    f[9].vfact = 1025;
    f[9].com = "good";
 
    f[10].name = "Mushel";
    f[10].square = 1000;
    f[10].vplan = 150;
    f[10].vfact = 165; 
    f[10].com = "great";
 
    f[11].name = "Walno";
    f[11].square = 250;
    f[11].vplan = 1000;
    f[11].vfact = 1015;
    f[11].com = "not bad";
    func(f);
    getch();
    return 0;
}
Yandex
Объявления
14.01.2013, 13:57     Использование функций
Ответ Создать тему
Опции темы

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