0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 13
1

Структуры. Ошибки в работе программы

07.06.2015, 23:59. Показов 1088. Ответов 6
Метки нет (Все метки)

Компиляция проходит успешно. После запуска происходят различные ошибки. Наиболее частая- та, что на скриншоте.
Подозрение падает на 37-ю строчку кода.
Подскажите, пожалуйста, где ошибка и как исправить.
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
#include <conio.h>
#include <stdio.h>
#include <locale.h>
#include <iostream>
 
using namespace std;
 
struct student
{
    char pib[30];
    int group;
    float sb;
};
 
void output(student *arr1, int ng, int n)
{
    int nvg=0;
    for (int i=0;i<n;i++)
            if (arr1[i].group == ng)
                nvg++;
    student *arr2 = new student[nvg];
    int j = 0;
    for ( int i = 0; i < nvg; i++ )
        if ( arr1[i].group == ng)
        {
            arr2[j] = arr1[i];
            j++;
        }
            for( int k = 0; k < nvg; k++ )
                for(int i=0;i<nvg-k;i++)
                    if(arr2[i].sb<arr2[i+1].sb)
                        swap(arr2[i].sb,arr2[i+1].sb);
 
    for (int i=0;i<nvg;i++)
    {
        cout<<"Студент "<<arr2[i].pib<<" має середнiй бал ";
        cout<<arr2[i].sb<<endl;
    }
    delete[] arr2;
}
 
void input(student *arr1,int n)
{
    for (int i=0; i < n; i++)
    {
        cout << "\n Введiть ПIБ студента:";
        cin >> arr1[i].pib;
        cout << "Введiть групу, в якiй навчається студент: ";
        cin >> arr1[i].group;
        cout << "Введiть середнiй бал студента: ";
        cin >> arr1[i].sb;
    }
}
void main()
{
    setlocale(LC_ALL,"Ukrainian");
 
    int ng,n;
    cout << "Введiть кiлькiсть студентiв"<<endl;
    cin >> n;
    student *arr1 = new student[n];
    input(arr1,n);
    cout <<"Введiть номер групи"<<endl;
    cin >> ng;
    output( arr1, ng, n);
    delete[] arr1;
    system( "pause" );
}
Миниатюры
Структуры. Ошибки в работе программы  
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.06.2015, 23:59
Ответы с готовыми решениями:

Структуры, ошибки при работе с аргументами методов
Всем привет!Ошибка вылазит, Точнее две ошибки... Ошибка 1 error C2660: Students::SetStudents:...

Ошибки в работе программы с классами, наследованием и т.д
Имеется моя первая попытка создать класс, производный из него, конструктор и всю эту радость...

Исправить ошибки в работе программы нахождения координат
//а) удалить все точки не из окружности радиуса 10 с центром в начале координат //б) подсчитать...

Ошибки в выполнении программы при динамическом создании структуры
Всем привет! В с++ не силен, только постигаю азы. Имеется задание (во вложении). Смахивает на...

6
94 / 48 / 63
Регистрация: 16.06.2014
Сообщений: 385
08.06.2015, 08:30 2
Halo43, задача какая?
0
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 13
08.06.2015, 08:42  [ТС] 3
Из заполненой с клавиатуры ведомости, вывести список студентов определенной группы по уменьшению среднего бала (т.е. поля sb)
0
94 / 48 / 63
Регистрация: 16.06.2014
Сообщений: 385
08.06.2015, 08:49 4
Halo43, строку 32 кода из первого поста замени на
C++
1
swap(arr2[i],arr2[i+1]);
1
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 13
08.06.2015, 09:07  [ТС] 5
Заменил. Та же ошибка.
0
67 / 67 / 72
Регистрация: 10.04.2015
Сообщений: 281
08.06.2015, 10:10 6
Лучший ответ Сообщение было отмечено Halo43 как решение

Решение

Немного изменил,arr2 конечно теперь больше памяти занимает, но ошибок нет.
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
void output(student *arr1, int ng, int n)
{
student *arr2 = new student[n];
    int nvg=0;
    for (int i=0;i<n;i++)
        if (arr1[i].group == ng)
            {           
                arr2[nvg].group = arr1[i].group;
                strcpy(arr2[nvg].pib,arr1[i].pib);
                arr2[nvg].sb = arr1[i].sb;
                nvg++;
            }
 
     for(int i = 0; i<nvg; i++)
         for(int j = i+1; j<nvg;j++)
             if(arr2[i].sb<arr2[j].sb)
                swap(arr2[i],arr2[j]);
 
    for (int i=0;i<nvg;i++)
    {
        cout<<"Студент "<<arr2[i].pib<<" має середнiй бал ";
        cout<<arr2[i].sb<<endl;
    }
    delete[] arr2;   
}
Миниатюры
Структуры. Ошибки в работе программы  
1
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 13
08.06.2015, 12:28  [ТС] 7
Спасибо большое.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.06.2015, 12:28
Помогаю со студенческими работами здесь

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

Ошибки при работе программы
Помогите плиз народ срочно нужно. проверьте прогу. понять не могу по поводу ошибок...

Ошибки в работе программы Delphi 2007
У меня проблема с работой программы и я не знаю что делать Я создаю новый проект и все вроде бы...

Ошибки при работе программы CDRoller
Короче ребят перебил винду все норм но ток один прикол на той винде CDRoller 8.61 работал без...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru