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

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

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

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

02.07.2012, 22:07. Просмотров 653. Ответов 9
Метки нет (Все метки)

Добрый день, в прошлой теме Структуры. Сортировка мне помогли написать 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++
Здравствуйте,вот собственно код: #include <stdlib.h> #include <stdio.h> #include <string.h> #define STR_LEN 200 /*Максимальная...

Чтения структуры из файла (описать структуру с именем "ORDER": "счет плательщика"; "счет получателя"; "сумма, переводится банковской операцией") - C++
Описать структуру с именем "ORDER", содержащий следующие поля: "Счет плательщика"; "Счет получателя"; "Сумма, переводится банковской...

Как переделать эту прогу в шаблон классов "Двусвязный список" произвольных элементов - C++
#include <iostream.h> #include <stdlib.h>2 #include <conio.h> using namespace std; struct Element { public: double...

Здраствуйте помогите пожалуста написать прогу "Разработать программу эмуляции работы командного интерпретатора ОС" - C++
mv – перемещение файла pd – текущее местоположение cp – копирование файла rm – удаление файла Три команды должны быть написаны...

Создать класс комплексных чисел и ввести операции: "+", "-", "*", "/". - C++
пожалуйста-помогите написатьпрограмму!!! сижу на экзамене!!! вот само задание: создать класс комплексных чисел и ввести операции: "+",...

Вставить пробел после каждого символа "." "," "!" или "?", если за этими символами не следует пробел - C++
Вставить пробел после каждого символа "." "," "!" или "?", если за этими символами не следует пробел (т. е. следует любой символ, кроме...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
02.07.2012, 22:29     Не могу "собрать" прогу #2
да, прикольно написано. нагромождения свичей, мегавложенность и прочие прелести. функция main - просто мегафункция. жаль что вы не умеете разбивать код на подзадачки и реализовывать их в отдельных функциях. код был бы проще для понимания и поиска ошибок.
если компилятор ругается - это не приговор. в сообщениях и строка есть, и описание проблемы. нужно пробовать разобраться самостоятельно.
ваш вопрос сформирован криво. из него не понятно, что вы хотите сделать, что получается и о каких ошибках сообщает компилятор.
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
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
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
1482 / 1058 / 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++
Определить иерархию классов (в соответствии с вариантом – выделить базовый и производные). Реализовать классы (самостоятельно задать...

Написать функцию поиска человека по полю "фамилия" в массиве структур "Note" ("Персональная информация") - C++
Вывести из структуры информацию о человеке, чья фамилия введена с клавиатуры #include &lt;iostream&gt; #include &lt;locale&gt; #include...

В массиве структур студент с полями "ИМЯ" "ВОЗРАСТ" "УСПЕВАЕМОСТЬ" выполнить сортировку по успеваемости по возрастанию - C++
в массиве структур студент с полями &quot;ИМЯ&quot; &quot;ВОЗРАСТ&quot; &quot;УСПЕВАЕМОСТЬ&quot; выполнить сортировку по успеваемости по возрастанию. Использовать...

После каждого знака препинания (".", ",", ";") вставить в строку пробел, если там его нет - C++
Выполните задания с использованием библиотечного класса string. Даны строка S. Необходимо после каждого знака препинания (&quot;.&quot;, &quot;,&quot;,...


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

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

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