![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 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; } } } |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 30.01.2011
Сообщений: 1,578
|
![]()
как вариант само отсеивание производить ещё на стадии считывания... считываем инфу о студенте - встретили оценку 3 и ниже... прекратили считывать... перехходим к следующему.... не записывая нашего 3 или двоечника...
пишу код не только за печеньки
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Дописать программу на С++ до 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 |