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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2011, 13:27   #1
22Андрей22
 
Регистрация: 14.11.2011
Сообщений: 3
По умолчанию дописать программу, на С++ двумерные массивы

Помогите доработать программу на С++,задача на тему двумерных массивов


Написать программу, реализующую алгоритм задачи индивидуального варианта. В программе необходимо организовать работу с двумерным массивом.
1. Оценки студентов. Записать из файла в двумерный массив информацию об оценках каждого из N студентов группы по тому или иному предмету (в первой строке – информация об оценках первого студента, во второй – второго и т. д.). Общее число предметов равно K. Сформировать список оценок студентов, которые по всем K предметам учатся на 4 и 5. Упорядочить этот список по убыванию среднего балла.
Вот что у меня получилось, не могу понять куда вставить условие, которое будет отсеивать троешников и двоешников



#include <iostream>
#include <fstream>
using namespace std;

void print(int **a, int nrow, int ncol, long *sum);
void sort(int **a, int nrow, int ncol, long *sum);

int main(void)
{ int nrow, ncol;
int i,j; int **a;
ifstream f; // объявление потока для чтения
f.open("D:\\abc5.txt"); // режим ios::in
if (f)
{ cout << "Read file ! \n";
f >> nrow; f >> ncol;

// Выделение памяти под массив
a = new int *[nrow];
for(i = 0;i < nrow;i++)
a[i]= new int [ncol];

// Заполнение массива
for(i = 0;i < nrow;i++)
for(j = 0;j < ncol;j++)
f >> a[i][j];
cout << "\n";
f.close();

//суммирование баллов для каждого спортсмена
// (суммирование элементов строк)
long *sum = new long [nrow];long *h=new long[nrow];
for (i = 0;i < nrow;i++)
{ sum[i] = 0;
for (j = 0;j < ncol; j++){
sum[i] += a[i][j];
h[i] =sum[i]/ncol;
}}

//вывод исходного масива
cout<<"\n Исходные баллы учеников\n";
print(a, nrow, ncol, h);
cout << "\n";

sort(a, nrow, ncol, h);

//вывод на экран упорядоченной матрицы
cout << "\n Баллы учеников,";
cout << "\n упорядоченные по cр. баллу\n";
print(a, nrow, ncol, h);
cout << "\n";
}
else cout << "File not found \n";
}

void print(int **a, int nrow, int ncol, long *h)
{ for (int i = 0;i < nrow; i++)
{ for (int j = 0;j < ncol; j++)
cout << " " << a[i][j]<< " ";
cout << "| " << h[i] << "\n";
}
}

void sort(int **a, int nrow, int ncol, long *h)
{ long buf_h;
int nmin, buf_a;
for(int i = 0;i < nrow-1; i++)
{ nmin = i;
for(int j = i+1;j < nrow; j++)
if (h[j] < h[nmin])
nmin = j;
buf_h = h[i];
h[i] = h[nmin]; h[nmin] = buf_h;
for(int j = 0;j < ncol;j++)
{ buf_a = a[i][j];
a[i][j] = a[nmin][j];
a[nmin][j] = buf_a;
}
}
}
22Андрей22 вне форума Ответить с цитированием
Старый 20.12.2011, 13:37   #2
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

как вариант само отсеивание производить ещё на стадии считывания... считываем инфу о студенте - встретили оценку 3 и ниже... прекратили считывать... перехходим к следующему.... не записывая нашего 3 или двоечника...
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дописать программу на С++ до 23.07 insar Фриланс 6 20.07.2011 10:16
Дописать программу Deshrefresh Помощь студентам 0 04.12.2010 13:31
дописать программу span80 Паскаль, Turbo Pascal, PascalABC.NET 0 20.05.2010 10:15
Не могу дописать программу IROKEZ Общие вопросы C/C++ 1 19.04.2010 19:41