Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Массив описать как указатель на указатель


Автор: flusha 27.12.2015, 10:15
даны массивы F-фамилий студентов и S-результаты сессии (5 оценок) , причем s[i]- результат сессии F[i] студента.
Отсортировать массив S по сумме баллов и вывести на экран вместе с фамилиями.
"Нужно инициализировать F и S"! (нужна помощь в этом)
Код

#include "stdafx.h"
#include <iostream>
#include<algorithm>
#include<numeric>
using namespace std;
 
bool sortSFunc(int**a, int**b) {
    int aS = 0, bS = 0;
    aS = accumulate(*a, *a + 5, 0);
    bS = accumulate(*b, *b + 5, 0);
        return aS > bS;
}
int main(int argc,char**argv)
{
    int n = 4;
    char** F;
    int** S;
 
    int*** sortedS = new int**[n];
    for (int i = 0; i < n; i++)
        sortedS[i] = S + i;
    sort(sortedS, sortedS + n, sortSFunc);
    for (int i = 0; i < n; i++)
        cout << F[sortedS[i] - S] << ":" << accumulate(*sortedS[i], *sortedS[i] + 5, 0) << endl;
    delete[] sortedS;
    return 0;
}

Автор: rudolfninja 27.12.2015, 17:25
Непонятно зачем у вас S - указатель на указатель. Судя по заданию, хватило бы просто указателя (массива). Ну а инициализация F выглядит так:
Код

char** F = {"Ivanov", "Petrov", "Sidorov", "Sergeev", "Bush"};

Автор: Toyamatokanava 30.12.2015, 23:07
Цитата(rudolfninja @ 27.12.2015,  17:25)
Код

char** F = {"Ivanov", "Petrov", "Sidorov", "Sergeev", "Bush"};

Так же не получится.  smile 

А если по теме, то можно так сделать.
Код

#include "stdafx.h"
#include <iostream>
#include <Windows.h>
using namespace std;
int main(int argc, _TCHAR* argv[])
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int **s = new int*[2];
    for (int i = 0; i < 2; i++)
    {
        s[i] = new int[5];
    }
    char f[][10] = { "Ivanov", "Petrov" };
    cout << "Введите оценки студентов:\n";
    for (int p = 0; p < 2; p++)
    {
        cout << "Оценки студента " << f[p]<<"a"<<endl;
    
            for (int j = 0; j < 5; j++)
            {
                cout << j + 1 << " экзамен:";
                cin >> s[p][j];
                cout << "\n";
            }
        cout << "\n";
    }
    for (int p = 0; p < 2; p++)
    {
        for (int j = 1; j < 5; j++)
        {
            s[p][j] = s[p][j - 1] + s[p][j];

        }
    }
    for (int p = 0; p < 2; p++)
    {
        cout << "Сумма оценок студента " << f[p] << "a равна:";
        cout << s[p][4];
        cout << "\n";
    }
    system("pause");
    return 0;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)