Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / даны массивы F-фамилий студентов ... / 23 сообщений из 23, страница 1 из 1
22.12.2015, 17:45
    #39134960
fr0st1k123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
даны массивы F-фамилий студентов ...
Даны массивы F-фамилий студентов и S-результаты сессии (5 оценок) , причем s[i]- результат сессии F[i] студента.
Отсортировать массив S по сумме баллов и вывести на экран вместе с фамилиями.
Подскажите алгоритм , как сделать программу.
...
Рейтинг: 0 / 0
22.12.2015, 19:25
    #39135063
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
даны массивы F-фамилий студентов ...
...
Рейтинг: 0 / 0
22.12.2015, 19:34
    #39135071
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
даны массивы F-фамилий студентов ...
fr0st1k123Подскажите алгоритм
Сначала выводишь на экран тех, у кого сумма баллов 25. Потом - тех у кого 24. Потом - тех
у кого 23. И так далее до единицы. Всё, задача решена.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
22.12.2015, 20:05
    #39135087
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
даны массивы F-фамилий студентов ...
Всегда интересовало. Стабильный троешник отличается от
отличника, получающего периодически "кол" ?

Средний бал вроде одинаков...
...
Рейтинг: 0 / 0
22.12.2015, 20:24
    #39135104
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
даны массивы F-фамилий студентов ...
maytonСредний бал вроде одинаков...
ИМХУ "Периодически" и "каждый второй" разные понятия.
...
Рейтинг: 0 / 0
22.12.2015, 20:53
    #39135133
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
даны массивы F-фамилий студентов ...
Интересно. В матричном виде эта задача звучала-бы как
расчёт вектора рангов для матрицы size([i]) строк на 1+5 колонок.
...
Рейтинг: 0 / 0
23.12.2015, 07:39
    #39135329
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
даны массивы F-фамилий студентов ...
fr0st1k123Даны массивы F-фамилий студентов и S-результаты сессии (5 оценок) , причем s[i]- результат сессии F[i] студента.
Отсортировать массив S по сумме баллов и вывести на экран вместе с фамилиями.
Подскажите алгоритм , как сделать программу.


тут ключ к решению задачи в том, что, чтобы не нарушить структуру параллельных массивов студентов и их оценок, нужно либо сортировать их вместе, либо сортировать косвенно индексы к ним в отделении массиве.

или можно переписать все в массив структур (студент, его оценки), и далее сортировать его.

более ни в чем сложности нет, поскольку по-видимому можно не писать сортировка самому, а использовать стандартную функцию сортировки.
...
Рейтинг: 0 / 0
23.12.2015, 08:46
    #39135360
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
даны массивы F-фамилий студентов ...
MasterZivлибо сортировать косвенно индексы к ним в отделении массиве.
опрос общественного мнения можно провести
...
Рейтинг: 0 / 0
23.12.2015, 13:44
    #39135968
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
даны массивы F-фамилий студентов ...
Вот автор пишет
авторДаны массивы F-фамилий студентов и S-результаты сессии (5 оценок) , причем s[i]- результат сессии F[i] студента.
У него что. Многомерный массив? Или массив структур? Или матрица? Как на сях кодить-та?

Как кодить?
...
Рейтинг: 0 / 0
24.12.2015, 05:54
    #39136678
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
даны массивы F-фамилий студентов ...
maytonВот автор пишет
авторДаны массивы F-фамилий студентов и S-результаты сессии (5 оценок) , причем s[i]- результат сессии F[i] студента.
У него что. Многомерный массив? Или массив структур? Или матрица? Как на сях кодить-та?

Как кодить?

я так понял паралленьные массивы, два.
второй еще и многомерный, т.о. параллельность идет только по одному изменению
...
Рейтинг: 0 / 0
24.12.2015, 06:53
    #39136687
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
даны массивы F-фамилий студентов ...
maytonВот автор пишет
авторДаны массивы F-фамилий студентов и S-результаты сессии (5 оценок) , причем s[i]- результат сессии F[i] студента.
У него что. Многомерный массив? Или массив структур? Или матрица? Как на сях кодить-та?

Как кодить?
Пофиг что. Создать массив индексов и его сортировать.
...
Рейтинг: 0 / 0
24.12.2015, 11:27
    #39136871
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
даны массивы F-фамилий студентов ...
Dima TmaytonВот автор пишет
пропущено...

У него что. Многомерный массив? Или массив структур? Или матрица? Как на сях кодить-та?

Как кодить?
Пофиг что. Создать массив индексов и его сортировать.
Тоесть надо создать доп-структуру данных (как минимум из двух
полей key:index) и ее сортировать. Какое-то усложнение получается.
...
Рейтинг: 0 / 0
24.12.2015, 13:06
    #39137032
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
даны массивы F-фамилий студентов ...
maytonDima Tпропущено...

Пофиг что. Создать массив индексов и его сортировать.
Тоесть надо создать доп-структуру данных (как минимум из двух
полей key:index) и ее сортировать. Какое-то усложнение получается.

чего там сложного?
простой массив индексов, косвенная адресация.
...
Рейтинг: 0 / 0
24.12.2015, 13:12
    #39137045
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
даны массивы F-фамилий студентов ...
maytonТоесть надо создать доп-структуру данных (как минимум из двух полей
key:index) и ее сортировать. Какое-то усложнение получается.
Я же предложил решение без дополнительных структур и сортировки. В чём проблема-то? Оно
как раз на лабораторную сойдёт.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
24.12.2015, 14:59
    #39137217
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
даны массивы F-фамилий студентов ...
maytonКакое-то усложнение получается.
Просто массив int`ов
Код: plaintext
1.
int idx[SIZE];


Инициализируем
Код: plaintext
1.
for(int i = 0; i < SIZE; i++) idx[i] = i;


Обращение в элементу:
Код: plaintext
1.
2.
s[idx[i]]
F[idx[i]]


Дальше написать свою функцию сравнения
Код: plaintext
1.
int compareMyType (const void * a, const void * b) ...


и отсортировать
Код: plaintext
1.
qsort (idx, SIZE, sizeof(int), compareMyType);
...
Рейтинг: 0 / 0
24.12.2015, 17:33
    #39137432
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
даны массивы F-фамилий студентов ...
А точно. Я вспомнил эту тему.
...
Рейтинг: 0 / 0
27.12.2015, 14:33
    #39138839
fr0st1k123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
даны массивы F-фамилий студентов ...
нужна помощь , если ввожу больше 4 фамилий в конце выдает ошибку.
Код: plaintext
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.
#include "stdafx.h"
#include <iostream>
#include<algorithm>
#include<numeric>
using namespace std;

bool sravnenie(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)
{setlocale(LC_CTYPE, "rus");
		int n = 0;
		cout << "Введите количество студентов\n";
		cin >> n;
		char **F = new char*[n];
		for (int i = 0; i < n; i++)
			F[i] = new char[50];
		int **S = new int*[n];
		for (int i = 0; i < n; i++)
			S[i] = new int[5];
		for (int i = 0; i < n; i++)
		{
cout << "Введите фамилию\n";
			cin >> F[i];
			if (F[i] != 0) {
				cout << "Введите оценки\n";
				for (int j = 0; j < 5; j++) {
					cin >> S[i][j];
				if (S[i][j] < 1 || S[i][j]>5) {
					cout << "Оценки\n" << S[i][j]<<"-" << "Неверно.Введите заного\n" << endl;
					cin >> S[i][j];
					}}}}
	int*** idx = new int**[n];
	for (int i = 0; i < n; i++)
		idx[i] = S + i;
	sort(idx, idx + n, sravnenie);
	for (int i = 0; i < n; i++)
		cout << F[idx[i] - S] << ":" << accumulate(*idx[i], *idx[i] + 5, 0) << endl;
	for (int i = 0; i < n; i++)
	delete[] idx[i];
	return 0;
}
...
Рейтинг: 0 / 0
27.12.2015, 20:00
    #39138906
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
даны массивы F-фамилий студентов ...
Уж если подключил std::algorithm то строки можно тоже подключить. Проще было-б.
...
Рейтинг: 0 / 0
27.12.2015, 20:05
    #39138909
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
даны массивы F-фамилий студентов ...
Код: sql
1.
int*** idx = new int**[n];


"И вот мы видим две звёздочки... три звёздочки...
Лучше всего, конечно, пять звёздочек." (с)

Извините, не смог удержаться.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.12.2015, 20:11
    #39138914
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
даны массивы F-фамилий студентов ...
Dimitry Sibiryakov, давай без сарказма. Ато автор подумает что на этом форуме все злые.
...
Рейтинг: 0 / 0
27.12.2015, 20:12
    #39138916
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
даны массивы F-фамилий студентов ...
fr0st1k123
Код: plaintext
1.
*idx[i] + 5


Это за пределами массива S

fr0st1k123
Код: plaintext
1.
"Неверно.Введите заного\n"


Может "за ногу"? :)
...
Рейтинг: 0 / 0
27.12.2015, 20:25
    #39138921
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
даны массивы F-фамилий студентов ...
Dima TЭто за пределами массива S
Тут все верно.

Вот косяк
fr0st1k123
Код: plaintext
1.
2.
	for (int i = 0; i < n; i++)
	delete[] idx[i];


Надо
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
	for (int i = 0; i < n; i++) 
		delete[] F[i];
	for (int i = 0; i < n; i++) 
		delete[] S[i];
	delete[] S;
	delete[] F;
	delete[] idx;



Выравнивай код правильно. отступы не для того чтобы по центру экрана код помещать.
...
Рейтинг: 0 / 0
27.12.2015, 21:05
    #39138939
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
даны массивы F-фамилий студентов ...
maytonдавай без сарказма. Ато автор подумает что на этом форуме все злые.
Во-первых, это не сарказм. Просто ассоциация.
Во-вторых, ок, маленькая добрая лекция:

Поскольку в задании сказано "даны массивы", их не надо вводить с клавиатуры. Достаточно
задать константами в коде. Далее, условие сортировки ещё и по фамилии тоже не стоит.
Следовательно...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
#include <stdio.h>

int main()
{
   const char* F[3] = {"Иванов", "Петров", "Сидоров"};
   const int S[3][5] = {{1,2,3,4,3},{1,2,3,4,2},{1,2,3,4,1}};
   for (int i = 5; i<=25; ++i)
   {
     for (int j = 0; j < 3; ++j)
     {
       if (S[j][0]+S[j][1]+S[j][2]+S[j][3]+S[j][4] == i)
         puts(F[j]);
     }
   }
   return 0;
}


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / даны массивы F-фамилий студентов ... / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]