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

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

Войти
Регистрация
Восстановить пароль
 
Денис96
0 / 0 / 0
Регистрация: 10.08.2011
Сообщений: 55
#1

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

14.01.2013, 12:34. Просмотров 261. Ответов 2
Метки нет (Все метки)

Доброго времени суток, уважаемые форумчане.
Будьте добры, помогите, пожалуйста, решить задачу.

______________________________________________________________________
Дана структура с информацией о 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; 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2013, 12:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Использование функций (C++):

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов - C++
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг у вас они завалялись на компе или...

Итерационные циклы,Определение и вызов функций,Использование библиотечных функций stdio.h - C++
Помогите решить задания: 1.Дано натуральное число n. Найти разность между первой цифрой этого числа и суммой всех остальных. ...

Работа с двумерными числовыми массивами. Использование указателей. Использование функций пользователя. - C++
Помогите пожалуйста!!!!!!! Сделать три варианта: первый вариант – передача данных между функциями с помощью глобального...

Использование функций и шаблонов функций - C++
Люди помогите пожалуйста буду очень благодарна) вобщем вот первая часть лабы Написать программу, функция main которой включает...

Использование функций и шаблонов функций - C++
Составьте программу – формирование цены на молоко. Животновод в начале каждой зимы цену на молоко на р%, а каждым летом снижает на столько...

C/C++ Использование функций, использование break - C++
Здравствуйте. Не знал как назвать тему, боялся что, если назову &quot;КАК ЭТО РАБОТАЕТ?&quot; то её удалят. Пишу программу для вычисления длинных...

2
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 минут
Еще неравенство в условном операторе функции не в ту сторону стоит). Функция выводит предприятия котрые превысили план...
1
Денис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;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2013, 13:57
Привет! Вот еще темы с ответами:

Использование функций - C++
Даны три действительных числа x, y, z. Получить A= arccos((x^2+y^2-z^2)/(2xy)) - arccos(z^2*y/(x+z*y)) где arccos(a) = arctg...

Использование функций. - C++
Помогите пожалуйста решить задачи. 1. Составить программу для нахождения максимальных значений среди элементов линейных таблиц А и В....

Использование функций - C++
Даны действительный числа a,b,c. Получить: (u+v2,3.14), где u=min(a,b), v=min(ab,a+b). Прошу любой помощи(будь то хороший сайт где я...

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


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

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

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