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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2013, 13:08   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
это будет подгонка под ответ этой матрицы. Там после неё идёт тест 2
входные
3 4
-2 0 4 0
6 -8 1 1
0 -3 5 1
Должно получится
0 -3 5 1
6 -8 1 1
-2 0 4 0
смотрите.

в строке 0 -3 5 1 нет повторяющихся элементов. Она идёт первая. Тут двухсмысленностей (неопределённостей) нет.

а вот дальше хуже.
в строке 6 -8 1 1 два повторяющихся элемента ( 1 и 1)
в строке -2 0 4 0 два повторяющихся элемента ( 0 и 0)
на основании чего Вы поместили строку 6 -8 1 1 раньше, чем строку -2 0 4 0 ?!

дело в том, что раз в вашем задании не уточнено, как должны сортироваться строки, содержащие одинаковое количество повторяющихся элементов, то Вы не вправе утверждать, что матрица
0 -3 5 1
6 -8 1 1
-2 0 4 0
является корректным результатом, а матрица
0 -3 5 1
-2 0 4 0
6 -8 1 1
не является.
андерстенд?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.11.2013, 13:16   #12
ELaX
Пользователь
 
Регистрация: 24.11.2013
Сообщений: 29
По умолчанию

Компьютер вставляет данные в мою программу и сравнивает с ответом который есть у него. Если они точно не совпадают он пишет неверно и мне задачу не засчитывают.
В этом то и проблема.
nikmoon
я привёл 2 примера матрицы и что должно из них получится. Мне нужно понять по какому принципу сортируется что строки меняются в таком порядке... Код по идее я могу и сам написать. До меня не доходит ответ на вопрос КАК?
ELaX вне форума Ответить с цитированием
Старый 25.11.2013, 13:22   #13
nikmoon
Форумчанин
 
Регистрация: 13.11.2013
Сообщений: 149
По умолчанию

В моем коде кстати ошибка в сортировке, но ответа, который нужен все равно не получится.
Ищу решение.
nikmoon вне форума Ответить с цитированием
Старый 25.11.2013, 13:27   #14
ELaX
Пользователь
 
Регистрация: 24.11.2013
Сообщений: 29
По умолчанию

Serge_Bliznykov
Оба результата верны с точки зрения задания. Но проблема которую я описал в самом начале такая, что код вводишь и проверяет его машина и она сверяет со своим. И приходится учитывать что верна матрица
0 -3 5 1
6 -8 1 1
-2 0 4 0
Но есть ещё тест 1 где матрица ещё более запутанная
Пример входных данных:
4 5
-5 6 0 -1 -5
-1 1 0 -5 0
-5 0 4 1 1
-1 -5 0 -5 -5
Пример выходных данных:
-1 1 0 -5 0
-5 0 4 1 1
-5 6 0 -1 -5
-1 -5 0 -5 -5
3
И мне как раз интересно на каком основании машина считает верной именно такую последовательность.
ELaX вне форума Ответить с цитированием
Старый 25.11.2013, 13:43   #15
Baburek
Форумчанин
 
Аватар для Baburek
 
Регистрация: 12.12.2010
Сообщений: 205
По умолчанию

Попробуй еще раз:

Код:

#include <iostream>

using namespace std;

int main()
{
 int n = 0, m = 0;
 int temp;
 cin >> n >> m;
 int ** matrix = new int *[n];
 for(int i = 0; i < n; i++) matrix[i] = new int[m];
 int max = 0;
 for(int i = 0; i < n; i++){
 for(int j = 0; j < m; j++) {
     cin >> matrix[i][j]  ;
     }
     cout << endl;
     }
 cout << endl;
 int i=0;
 int k=0;
 while (i < n){
 for(int j = 0; j < m; j++) {
  bool common=false;
   for (int l=0; l<m; l++){
            if (j-l!=0 && matrix[i][j]==matrix[i][l]) {common=true;};
            if (common) k++;
            }
  }
  if (k<=max && max !=0){
        for (int j=0; j<m; j++){
                                temp = matrix[i-1][j];
                                matrix[i-1][j]= matrix[i][j];
                                matrix[i][j] = temp;
                               }
		i=0;
		max=0;
                k=0;
        }
 else {
        max=k;
        k=0;
        i++;
       }
 }

 for(int i = 0; i < n; i++){
 for(int j = 0; j < m; j++) {
     cout << matrix[i][j]<<" ";
     }
     cout << endl;
     }
 cout << endl;


 for (int j = 0; j < m; j++)   {
 for (int i=0; i<n; i++)
 {
  if (matrix[i][j]<=0) k++;
 }
 if (k == 0){
        cout << "Check: " << j+1 <<endl;
        break;
 }
 else k=0;
 }




 for(int i = 0; i < n; i++) delete[] matrix[i];
 delete[] matrix;
 system("pause");
 return 0;
}
Точно не то, что надо преподавателю?
Baburek вне форума Ответить с цитированием
Старый 25.11.2013, 13:50   #16
nikmoon
Форумчанин
 
Регистрация: 13.11.2013
Сообщений: 149
По умолчанию

Подогнал я те алгоритм. дальше маты...
Код:
// теперь нужно сделать сортировку строк по возрастанию количества одинаковых элементов
	// не знаю что за метод.
	for(i = 0; i < (n-1); i++)
	{
		// находим максимальный элемент
		int max_elem_index = 0;
		for(j = 0; j < (n - i); j++)
		{
			if (a[j] > a[max_elem_index])
				max_elem_index = j;
		}

		// помещаем в последнюю ячейку максимальный элемент
		int tmp = a[n-1-i];
		a[n-1-i] = a[max_elem_index];
		a[max_elem_index] = tmp;

		int *row = matrix[n-1-i];
		matrix[n-1-i] = matrix[max_elem_index];
		matrix[max_elem_index] = row;
	}
nikmoon вне форума Ответить с цитированием
Старый 25.11.2013, 13:51   #17
ELaX
Пользователь
 
Регистрация: 24.11.2013
Сообщений: 29
По умолчанию

Baburek тест 1 не проходит т.е. не получается
входные
4 5
-5 6 0 -1 -5
-1 1 0 -5 0
-5 0 4 1 1
-1 -5 0 -5 -5
программа выдаёт
-5 0 4 1 1
-1 1 0 -5 0
-5 6 0 -1 -5
-1 -5 0 -5 -5
должно быть
-1 1 0 -5 0
-5 0 4 1 1
-5 6 0 -1 -5
-1 -5 0 -5 -5
любой другой ответ просто не принимает, пишет неправильный ответ. Я конечно подойду к преподу, но дядя весьма строгий и может обидится если сказать что его программа проверки немножко неверна) Я прямо вижу как он меня посылает... думать лучше)
Я с 8 утра сегодня непрерывно пробую разные способы... если первая верно то тест 2 не проходит и наоборот...
ELaX вне форума Ответить с цитированием
Старый 25.11.2013, 13:54   #18
nikmoon
Форумчанин
 
Регистрация: 13.11.2013
Сообщений: 149
По умолчанию

Я проверил оба твои набора. Выдает то, что надо.
Вставь в том месте, где надо сортировать.
И ваще, ппц, дожили, подгоняем алгоритм под ответ )))
nikmoon вне форума Ответить с цитированием
Старый 25.11.2013, 13:57   #19
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
И мне как раз интересно на каком основании машина считает верной именно такую последовательность.
ну, например, на основании того, что автор задачи и/или автор-контрольных тестов - глупые, недалёкие люди (это я ещё мягко пытаюсь сказать). Им невдомёк, что представленное ими условие задачи можете иметь НЕСКОЛЬКО равнозначно корректных вариантов.
Поэтому нужно или менять процедуру тестирования (она должна проверять, что строки результирующей матрицы соотвествуют заданным условиям, а не тупо сравнивать числа построчно ответ==образец ответа), либо менять условия задачи, нужно в них чётко прописать, как должны сортироваться строки, если элементы у них совпали.

я на вашем месте обратился бы к преподавателю с жалобой на некорректную проверку задачи.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.11.2013, 13:58   #20
ELaX
Пользователь
 
Регистрация: 24.11.2013
Сообщений: 29
По умолчанию

Serge_Bliznykov ой я с тобой полностью согласен, но сказать такое магистру у которого экзамен и впереди 2 года ещё учится... Надо бы как то не обидеть)
ELaX вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Укажите ошибку С++ ELaX Помощь студентам 8 25.11.2013 13:13
Укажите ошибку bad9 Помощь студентам 3 11.06.2012 03:23
укажите на ошибку маГГ85 JavaScript, Ajax 2 23.02.2012 13:15
Укажите на ошибку. Wh15per Общие вопросы C/C++ 2 27.12.2011 20:02
Укажите ошибку kerbeross PHP 7 25.08.2009 21:47