Форум программистов, компьютерный форум CyberForum.ru

Непонимание условия задачи - C++

Восстановить пароль Регистрация
 
Asya_inter
 Аватар для Asya_inter
5 / 5 / 0
Регистрация: 14.11.2014
Сообщений: 122
08.02.2016, 17:53     Непонимание условия задачи #1
Помогите пожалуйста понять, почему тест не принимает задачу? Всё правильно выводит. Возможно не так нужно вводить значения?
И ещё вопрос: а можно ли сделать так, чтобы после определённого количества введённых чисел курсор сам уходил на следующую строчку?(возможно в этом ошибка)

Вот задача:
Исходные данные:
В первой строке записано целое число N (1 ≤ N ≤ 100) — количество пикселей на стороне квадратного монитора. Далее идут N строк, в каждой по N целых чисел в пределах от 1 до 100, разделенных пробелом. Это изображение, которое выводит обычная видеокарта (как видно, глубина цветности у нового монитора небольшая, все равно нормальному программисту больше ста цветов и не надо).
Результат:
На выходе преобразователя должна получиться последовательность для ввода в новый монитор. Пиксели нумеруются от левого верхнего угла, по диагоналям, слева-направо и снизу-вверх. Подробнее объяснять тут долго и неинтересно, посмотрите на пример, дальше сами догадаетесь.

Пример:
Вводим:

4
1 3 6 10
2 5 9 13
4 8 12 15
7 11 14 16


Должны получить:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Моё решение:
C++
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
#define _5_CRT_SECURE_NO_DEPRECATE
#include <iostream>
using namespace std;
int main()
{
    int num; 
    int k = 0;
    int v;
    cin >> num; 
    num = num*num;  
    int *d_darr = new int[num];
    for (int i = 0; i < num; i++){
        int f;
        while ( f != num){
        int v1;
        scanf("%d", &v1);
        d_darr[i] = v1;}
    }
 
        for (int i=0; i<num; i++){
 
        for (int j=0; j<num; j++){
            if(d_darr[i] < d_darr[j]){
                v=d_darr[i];
                d_darr[i]=d_darr[j];
                d_darr[j]=v;
            }   
        }
            
        }
        for (int i=0; i<num; i++){
            cout<<d_darr[i]<<" ";}
        delete [] d_darr; 
    return 0;
}
Добавлено через 48 минут
Это не совсем тот код, вот правильный, но всё равно он не принимает:
Код
[CPP]#define _5_CRT_SECURE_NO_DEPRECATE
#include <iostream>
using namespace std;
int main()
{
    int num; 
    int k = 0;
	int v;
    cin >> num; 
	num = num*num;	
    int *d_darr = new int[num];
    for (int i = 0; i < num; i++){
        int v1;
        scanf("%d", &v1);
        d_darr[i] = v1;}
	
		for (int i=0; i<num; i++){

		for (int j=0; j<num; j++){
			if(d_darr[i] < d_darr[j]){
				v=d_darr[i];
				d_darr[i]=d_darr[j];
				d_darr[j]=v;
			}	
		}
			
		}
		for (int i=0; i<num; i++){
			cout<<d_darr[i]<<" ";}
		delete [] d_darr; 
	return 0;
}
[/CPP]
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2016, 17:53     Непонимание условия задачи
Посмотрите здесь:

3 условия C++
Непонимание работы с аргументами для функции main C++
C++ Условия If
C++ Массив структур, непонимание деталей
Использование классов. (или непонимание написания:) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6167 / 2896 / 282
Регистрация: 04.12.2011
Сообщений: 7,703
Записей в блоге: 3
09.02.2016, 00:28     Непонимание условия задачи #2
Цитата Сообщение от Asya_inter Посмотреть сообщение
Подробнее объяснять тут долго и неинтересно, посмотрите на пример, дальше сами догадаетесь.
Вы оптимистка-максималистка (имхо). Никто ни гу-гу. Я вот тоже не понял почему представленная матрица 4x4 должна развернуться в такую строку. Ну да неважно, ведь на монитор оно всё одно не попадёт. Даже на марсианский. Ведь:
Цитата Сообщение от Asya_inter Посмотреть сообщение
Пиксели нумеруются от левого верхнего угла, по диагоналям, слева-направо и снизу-вверх.
это нереально. Тут получилось бы от левого нижнего разве-что. От левого верхнего картинка будет в аккурат над монитором. Феерично.
Попробуйте, всё же трезво оценить наши хилые умственные способности и растолкуйте как ежу: куды бечь-то?
Asya_inter
 Аватар для Asya_inter
5 / 5 / 0
Регистрация: 14.11.2014
Сообщений: 122
09.02.2016, 00:55  [ТС]     Непонимание условия задачи #3
Спасибо за ответ! Это так в задаче было дано, но в скором мне стало ясно, что мной задача была понята неправильно. Это конечно дало ответ на то, почему тест не принимает, но легче от этого не стало.
Вот другой вариант ввода и ответа:
3
1 14 15
23 24 26
2 3 4
Результат:

1 23 14 2 24 15 3 26 4

То есть нужно не по возрастанию делать (а по диагонали снизу вверх). И придётся через двумерный массив всё это строить, а в этом у меня трудности. Уже четвёртый час ничего не получается(
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6167 / 2896 / 282
Регистрация: 04.12.2011
Сообщений: 7,703
Записей в блоге: 3
09.02.2016, 02:18     Непонимание условия задачи #4
Цитата Сообщение от Asya_inter Посмотреть сообщение
То есть нужно не по возрастанию делать.
Asya_inter,
То есть нужно штриховать по диагонали слева-направо, снизу-вверх? Это точно не новая фантазия? Вы такая затейница!
Может всё же текст задачки наберёте, дословно? Хотя глядя на первый пост, я начинаю понимать.
Вывести в линию последовательность пикселей составленную точками лежащими на диагоналях от левого верхнего угла.
Вот сам алгоритм, а динамический массив сами прикрутите и причешите:
C++
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
#include <iostream> 
using namespace std; 
void main()
{
    const int size_dim_a=4;
    int a[][size_dim_a]=
    {
        {1,2,3,4},
        {5,6,7,8},
        {9,10,11,12},
        {13,14,15,16}
 
    };
int k,j;
    for(int i=0; i<2*size_dim_a-1; ++i)
    {
        if(i<size_dim_a)
        { 
            k=0;
            j=i;            
        }
        else
        {
            k=i-size_dim_a+1;
            j=size_dim_a-1;         
        }
for(; j>-1 && k<size_dim_a;k++,j--)
{
cout.width(5); 
cout<<a[j][k];
}
    }
std::system("pause");    
}
Asya_inter
 Аватар для Asya_inter
5 / 5 / 0
Регистрация: 14.11.2014
Сообщений: 122
09.02.2016, 07:52  [ТС]     Непонимание условия задачи #5
IGPIGP, спасибо вам большое, да это действительно работает так как нужно. Но скажите, а можно ли здесь как-то использовать динамический массив?? (Чтобы лично ввести параметр размера массива и сами значения)

А если вам интересно, то сама задача такая:
Уральские медики очень озабочены состоянием здоровья молодежи. Как показали исследования, многие талантливые студенты вместо того, чтобы играть в футбол, кататься на коньках или велосипедах, занимаются олимпиадами по программированию. Так они это еще и спортивным программированием называют! Ну какой же это спорт, сидеть перед монитором и думать по пять часов в день! И ладно бы только на соревнованиях два раз в год, так ведь при подготовке к очередному чемпионату у них на сидение за компьютером уходит по несколько дней в неделю! И пусть бы это были разгильдяи какие-то, так ведь лучшие студенты, говорят, что и на мировом уровне результаты показывают приличные — жалко молодежь!
Чтобы отучить студентов от вредной привычки часами сидеть у компьютеров, уральские медики придумали принципиально новую разработку — монитор с диагональной разверткой! В скором будущем его будут вручать победителям и призерам чемпионатов Урала. В специально разработанном квадратном мониторе электронный луч должен проходить экран не по горизонталям, а по диагоналям. Поскольку длины диагоналей разные, нестандартные параметры мерцания и нелинейные искажения изображения быстро отучат оболтусов пялиться в экран. Разумеется, им ничего не останется делать, кроме как идти и заниматься спортом. Проблема в том, что большинство видеокарт подают на вход монитору нормальную развертку. Для успешного внедрения нового типа монитора нужна программа-адаптер, которая преобразует квадратное изображение в формат, требуемый для ввода в квадратный монитор. Программа должна быть надежной и быстрой, поэтому её разработкой будут заниматься самые лучшие программисты — участники чемпионата Урала по спортивному программированию.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6167 / 2896 / 282
Регистрация: 04.12.2011
Сообщений: 7,703
Записей в блоге: 3
09.02.2016, 10:31     Непонимание условия задачи #6
Цитата Сообщение от Asya_inter Посмотреть сообщение
а можно ли здесь как-то использовать динамический массив??
Asya, элементарно. Выделяете память оператором
Код
new[]
для указателей на одномерные блоки-цепочки (массивы), а потом каждый указатель инициализируете оператором
Код
new[]
выделяя под одномерный массив. Или функцией
Код
malloc(size_t bytes_of_mem)
, где
Код
 bytes_of_mem=size_of_dim* size_of_dim*size_of_int
.
Это гораздо проще чем олимпиадная задача, потому как, повторяю, - элементарно. Почему, если не умеете ещё и таких вещей, берётесь за такие задачи?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2016, 11:10     Непонимание условия задачи
Еще ссылки по теме:

Неточность в понимании условия задачи "Жук" (acmp) C++
C++ Не могу понять условия задачи
C++ Условия с++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Mr.X
Эксперт С++
 Аватар для Mr.X
2801 / 1577 / 247
Регистрация: 03.05.2010
Сообщений: 3,663
09.02.2016, 11:10     Непонимание условия задачи #7
C++
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
//Исходные данные
//В первой строке записано целое число N (1 ≤ N ≤ 100) — количество пикселей на стороне
//квадратного монитора. Далее идут N строк, в каждой по N целых чисел в пределах
//от 1 до 100, разделенных пробелом. Это изображение, которое выводит обычная
//видеокарта (как видно, глубина цветности у нового монитора небольшая, все равно
//нормальному программисту больше ста цветов и не надо).
 
//Результат
//На выходе преобразователя должна получиться последовательность для ввода в новый монитор.
//Пиксели нумеруются от левого верхнего угла, по диагоналям, слева-направо и снизу-вверх.
//Подробнее объяснять тут долго и неинтересно, посмотрите на пример, дальше сами догадаетесь.
 
//Пример
 
//исходные данные
//4
//1 3 6 10
//2 5 9 13
//4 8 12 15
//7 11 14 16
 
//результат
//1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
///////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <deque>
#include <iostream>
#include <utility>
///////////////////////////////////////////////////////////////////////////////
typedef std::pair   < int,      int     >   T_pixel;
typedef std::deque  < T_pixel           >   T_pixels;
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    int     n{};
    std::cin    >>  n;
 
    T_pixels    pixels;
 
    for( int  i = 0; i < n; ++i )
    {
        for( int  j = 0; j < n; ++j )
        {
            int     val{};
            std::cin    >>  val;
 
            pixels.push_front
                (
                    {
                        i + j,
                        val
                    }
                );
        }//for
    }//for
 
    std::stable_sort
        (
            pixels.begin    (),
            pixels.end      (),
 
            []              (
                                auto    const   &   L,
                                auto    const   &   R
                            )
            {
                return      L.first
                        <   R.first;
            }
        );
 
    std::for_each
        (
            pixels.begin    (),
            pixels.end      (),
 
            []              ( auto  const   &   val )
            {
                std::cout   <<  val.second
                            <<  "\t";
            }
        );
}
Yandex
Объявления
09.02.2016, 11:10     Непонимание условия задачи
Ответ Создать тему
Опции темы

Текущее время: 12:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru