Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2012, 20:38   #1
skanku
Пользователь
 
Регистрация: 20.11.2011
Сообщений: 28
По умолчанию ошибки в задаче(код внутри)

надо таким макаром ввести сведенья об учащихся а потом пощитать средний бал всех и вывести инфу об учащимся с макс средним балом.
тут я ввожу оценки в массив потом пытаюсь их вывести, нормально выводится только последние 2 последние оценки.
Код:
#include "stdafx.h"
#include <iostream>
 
using namespace std;
class STUDENT
{
public:
        int n;
        int kol_oc[100];
        int max;
        char **fam;
        unsigned int *god_post;
        unsigned int *kurs;
        unsigned int *nomer_gruppi;
        unsigned int *step;
        unsigned int **oc;
        void sr_bal();
        STUDENT();
        ~STUDENT();
};
STUDENT::STUDENT()
{       
        cout<<"vvedite kol-vo studentov!"<<endl;
        cin>>n;
        fam=new char*[100];
        god_post=new unsigned int[100];
        kurs=new unsigned int[100];
        nomer_gruppi=new unsigned int[100];
        step=new unsigned int[100];
        oc=new unsigned int*[100];
        for(int i=0;i<n;i++)
        {
                fam[i]=new char[30];
                cout<<endl<<endl<<"vvod infi po "<<i+1<<"-omu studentu!"<<endl;
                cout<<"familia studenta"<<endl;
                cin>>fam[i];
                cout<<"god postuplenia"<<endl;
                cin>>god_post[i];
                cout<<"kurs"<<endl;
                cin>>kurs[i];
                cout<<"nomer gruppi"<<endl;
                cin>>nomer_gruppi[i];
                cout<<"stependia"<<endl;
                cin>>step[i];
                cout<<"vvedite kol-vo ekzamenov dl9 dannogo studenta ";
                cin>>kol_oc[i];
                for (int j=0; j<kol_oc[i]; j++) //ввод оценок в массив
                {
                        oc[j]=new unsigned int[100];
                        cout<<j+1<<"-a9 ocenka: "<<endl;
                        cin>>oc[i][j];
                }
        }
}
STUDENT::~STUDENT()
{       
        delete []fam;
        delete []god_post;
        delete []kurs;
        delete []nomer_gruppi;
        delete []step;
        delete []oc;
}
void STUDENT::sr_bal()
{
        cout<<endl<<endl<<endl;
        for(int i=0;i<n;i++)//вывод оценок на экран(всех)
                    for (int j=0; j<kol_oc[i]; j++)
                        cout<<oc[i][j]<<endl;
}
int main()
{
        STUDENT a;
        a.sr_bal();
        system("pause");
        return EXIT_SUCCESS;
}

Последний раз редактировалось ACE Valery; 09.01.2012 в 22:55.
skanku вне форума Ответить с цитированием
Старый 10.01.2012, 08:13   #2
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

Код:
                oc[i]=new unsigned int[100];
                for (int j=0; j<kol_oc[i]; j++) //ввод оценок в массив
                {
                        cout<<j+1<<"-a9 ocenka: "<<endl;
                        cin>>oc[i][j];
                }
Выделение памяти под массив оценок было ошибочное (во-первых не по тому индексу, во-вторых внутри цикла каждую итерацию генерировался новый, затирая предыдущие)
благодарность - сюда (не забываем писать от кого)

Последний раз редактировалось Zer0; 10.01.2012 в 08:21.
Zer0 вне форума Ответить с цитированием
Старый 10.01.2012, 08:58   #3
ElectroMent
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 27
По умолчанию

Код:
 cin>>n;
        fam=new char*[100];
        god_post=new unsigned int[100];
        kurs=new unsigned int[100];
        nomer_gruppi=new unsigned int[100];
        step=new unsigned int[100];
        oc=new unsigned int*[100];
надо так, иначе если введут n, больше 100 - "упадешь".

Код:
       fam=new char*[n];
        god_post=new unsigned int[n];
        kurs=new unsigned int[n];
        nomer_gruppi=new unsigned int[n];
        step=new unsigned int[n];
        oc=new unsigned int*[n];
ElectroMent вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибки в задаче. какие? Olgaandsasha Паскаль, Turbo Pascal, PascalABC.NET 1 05.12.2011 08:04
Нахождение слов-анаграмм, Ошибка выдается. Задание внутри. Код внутри. TYMON Общие вопросы .NET 2 22.11.2010 21:07
Решите ошибки в задаче! Ivanito Общие вопросы C/C++ 5 16.10.2009 20:55
помогите исправить ошибки в задаче на С++ Wia Помощь студентам 4 14.12.2008 16:09