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

Не могу "собрать" прогу - C++

Восстановить пароль Регистрация
 
Skies
0 / 0 / 0
Регистрация: 30.06.2012
Сообщений: 23
02.07.2012, 22:07     Не могу "собрать" прогу #1
Добрый день, в прошлой теме Структуры. Сортировка мне помогли написать 2 функции, спасибо отдельное им за это, но я столкнулся с другой проблемой, никак не могу грамотно впихнуть их в основную программу(совсем дурачок ), не могли бы оказать мне и здесь помощь. Знаю что совсем обнаглел может быть, просто самому ну никак не справиться. Вот cpp файл для тех, кто, может быть, отзовется.
Вот, если что куда их нужно запихнуть:
1ая функция с таблицей: switch(menu1) -> case(1) -> switch(menu2) -> case(4) (я там, попытался сам сделать что-то, но как то не очень выходит, да и еще компилятор ругается на саму функцию )
2ая функция: switch(menu1) -> case(1) -> switch(menu2) -> case(3)

PROG.rar
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2012, 22:07     Не могу "собрать" прогу
Посмотрите здесь:

кто нибудь делал прогу на С++ "Эмулятор клавиш с промежутком времени между "нажатиями""?! C++
Ничего сложного, но разобраться не могу. За "реал" плюсану! C++
Здраствуйте помогите пожалуста написать прогу "Разработать программу эмуляции работы командного интерпретатора ОС" C++
C++ Вывод слов, заканчивающихся на "о" (чуть дописать прогу)
C++ Как переделать эту прогу в шаблон классов "Двусвязный список" произвольных элементов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
02.07.2012, 22:29     Не могу "собрать" прогу #2
да, прикольно написано. нагромождения свичей, мегавложенность и прочие прелести. функция main - просто мегафункция. жаль что вы не умеете разбивать код на подзадачки и реализовывать их в отдельных функциях. код был бы проще для понимания и поиска ошибок.
если компилятор ругается - это не приговор. в сообщениях и строка есть, и описание проблемы. нужно пробовать разобраться самостоятельно.
ваш вопрос сформирован криво. из него не понятно, что вы хотите сделать, что получается и о каких ошибках сообщает компилятор.
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
02.07.2012, 22:32     Не могу "собрать" прогу #3
Цитата Сообщение от Skies Посмотреть сообщение
switch(menu1) -> case(1)
1 не нужно в скобки заключать и приведи пожалуйста фрагмент кода,который нужно исправить,просматривать 800 строк кода нет желания
Skies
0 / 0 / 0
Регистрация: 30.06.2012
Сообщений: 23
02.07.2012, 22:43  [ТС]     Не могу "собрать" прогу #4
Функция GroupTable(); там компилятор ругается почти на все "std": "нестатическая ссылка на член должна указываться относительно заданного объекта" и почти на все "bstd": "имя за которым следует выражение "::" должно определять класс или пространство имен".

И еще в программу надо вставить вот это

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
float average_m (group *gr) // возвращает средний балл группы.
{
    int i = 0;
    float summ_gr = 0;
    student *st;
    for (i = gr -> count, st = gr -> headst; i > 0; --i, st = st -> nextst) //подсчёт суммы баллов группы.
    {
        for (int i = 0; i < 4; i++)
        {
            summ_gr += st -> marks[i];
        }
    }
    return summ_gr / (gr -> count * 4);
}
 
group* group_k(group *gr) // создаёт группу контрактников, у которых средний балл выше, чем в группе.
{
    group *gr_k = new group; // создание группы контрактников.
    gr_k -> headst = 0;
    gr_k -> count  = 0;
    gr_k -> nextgr = 0;
    
    student *st_last; // для адреса последней  структуры в группе контрактников.
    student *st;      // для перебора структур группы *gr.
    
    for ( st = gr -> headst; st != 0; st = st -> nextst) //перебор группы *gr.
    {
        if (!(st -> b)) // если контрактник, то заход.
        {
            float summ_m = 0;
            for (int i = 0; i < 4; i++) // подсчёт суммы баллов у контрактника.
            {
                summ_m += st -> marks[i];
            }
            if ((summ_m / 4) > average_m (gr)) // если средний балл выше, чем средний в группе, то заход.
            {
                if ( gr_k -> count == 0) // если заход первый, то создём первую структуру в группе
                                         // контрактников.
                {
                    st_last = new student;    // первая  структура.
                    gr_k -> headst = st_last; // запоминаем адрес первой структуры.
                    *st_last = *st;           // копируем старую структуру в первую.
                    st_last -> nextst = 0;    // первая, она же последняя, указывает на 0.
                    gr_k -> count++;          // увеличиваем счётчик сруктур в группе контрактников.
                } 
                else                          // если заход не первый.
                {
                    student *st_k = new student; // очередная структура.
                    *st_k = *st;                 // копирование старой в новую.
                    st_last -> nextst = st_k;    // предыдущая указывает на новую.
                    st_last = st_k;              // новая становится последней.
                    st_last -> nextst = 0;      // последняя указывает на 0.
                    gr_k -> count++;      // увеличиваем счётчик сруктур в группе контрактников
                } 
             }
         }
    }
    return gr_k; // указатель на структуру контрактников.
и функцию group_k()
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
group* group_k(group *gr) // создаёт группу контрактников, у которых средний балл 
                          //выше, чем в группе.
{
    group *gr_k = new group; // создание группы контрактников.
    gr_k -> headst = 0;
    gr_k -> count  = 0;
    gr_k -> nextgr = 0;
    
    student *st_last; // для адреса последней  структуры в группе контрактников.
    student *st;      // для перебора структур группы *gr.
    
    for ( st = gr -> headst; st != 0; st = st -> nextst) //перебор группы *gr.
    {
        if (!(st -> b)) // если контрактник, то заход.
        {
            float summ_m = 0;
            for (int i = 0; i < 4; i++) // подсчёт суммы баллов у контрактника.
            {
                summ_m += st -> marks[i];
            }
            if ((summ_m / 4) > average_m (gr)) // если средний балл выше, чем средний в группе, то заход.
            {
                student *add = new student;    // новая структура.
                *add = *st;           // копируем старую структуру в новую.
                add -> nextst = 0;    // дальше новой ничего.
                gr_k -> count++;      // увеличиваем счётчик сруктур в группе контрактников.
                if (gr_k -> headst == 0)  // если группа пуста.
                {
                    gr_k -> headst = add; // новая в начало группы.
                }
                else  // если группа не пуста.
                {       
                    st_last -> nextst = add; // новая в конец группы.
                }
                st_last = add;  // новая становится последней.
            } // если средний балл выше
        } // если контрактник
    } // for
    return gr_k; // указатель на структуру контрактников.
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
02.07.2012, 22:48     Не могу "собрать" прогу #5
Цитата Сообщение от Skies Посмотреть сообщение
"std" и "bstd".
второе замените первым,это просто синтаксическая ошибка

Цитата Сообщение от Skies Посмотреть сообщение
И еще в программу надо вставить вот это
я могу это сделать при помощи Ctrl+C и Ctrl+V,но это ли вы просите?
Skies
0 / 0 / 0
Регистрация: 30.06.2012
Сообщений: 23
02.07.2012, 22:53  [ТС]     Не могу "собрать" прогу #6
Цитата Сообщение от alexey31415 Посмотреть сообщение
второе замените первым,это просто синтаксическая ошибка


я могу это сделать при помощи Ctrl+C и Ctrl+V,но это ли вы просите?
ну, в принципе да, только еще чтобы вызывалось со switch(menu2)->case(3)

заменил. по прежнему выдает ошибку
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
02.07.2012, 22:56     Не могу "собрать" прогу #7
в теле switch(menu2) добавьте case 3: и напишите следом функцию

Цитата Сообщение от Skies Посмотреть сообщение
по прежнему выдает ошибку
можно список ошибок?
Skies
0 / 0 / 0
Регистрация: 30.06.2012
Сообщений: 23
02.07.2012, 23:08  [ТС]     Не могу "собрать" прогу #8
Ошибка 1 error C2352: std::ios_base::width: недопустимый вызов нестатической функции-члена

41 IntelliSense: нестатическая ссылка не член должна указываться относительно заданного объекта
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
02.07.2012, 23:43     Не могу "собрать" прогу #9
http://www.cplusplus.com/reference/i...os_base/width/
C++
1
2
3
4
5
6
7
//вместо
 std::cout<<std::ios::width(53)<<"+------------+-----------------+-------------------------------+"<<std::endl;
//нужно
 std::cout.width(53);
 std::cout<<"+------------+-----------------+-------------------------------+"<<std::endl;
//и везде в других местах точно так же либо
 std::cout<<std::setw(53)<<"+------------+-----------------+-------------------------------+"<<std::endl;
http://www.cplusplus.com/reference/i...pulators/setw/
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2012, 04:07     Не могу "собрать" прогу
Еще ссылки по теме:

C++ Элементарно. Но ошибку найти не могу. Вывод имени "Jim" на экран
Класс "Дроби". Как собрать приложение из трёх файлов? C++
Не могу убрать ошибку: "error LNK2001: неразрешенный внешний символ" C++

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

Или воспользуйтесь поиском по форуму:
агерон
 Аватар для агерон
265 / 264 / 33
Регистрация: 12.10.2009
Сообщений: 1,030
03.07.2012, 04:07     Не могу "собрать" прогу #10
Данную программу легче переписать чем заставить компилироваться
Yandex
Объявления
03.07.2012, 04:07     Не могу "собрать" прогу
Ответ Создать тему
Опции темы

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