0 / 0 / 0
Регистрация: 26.02.2017
Сообщений: 3
1

Проредить исходную последовательность отсчетов

06.02.2013, 22:40. Показов 2935. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
рожаю и родить уже не могу - мозг поплыл.

под плюсиком:

Кликните здесь для просмотра всего текста
Дана последовательность отсчетов, представляющих собой пары (double Х : double Y). Отсчеты упорядочены по значениям Х.
В этой последовательности могут встречаться подпоследовательности, состоящие из идентичных отсчетов. Идентичные отсчеты имеют одинаковые значения Y.

Проредить исходную последовательность следующим образом:
В каждой подпоследовательности идентичных отсчетов оставить только первый и последний отсчеты, а так же каждый n-ный отсчет (n > 2).
Вывести на экран исходную последовательность и результат.
Пример:
Исходная:
(1.0, 10.0) (2.0, 11.0), (3.0, 11.0), (4.0, 11.0), (5.0, 11.0) (6.0, 10.0)
Результат при n = 3:
(1.0, 10.0) (2.0, 11.0), (4.0, 11.0), (5.0, 11.0) (6.0, 10.0)
Результат при n = 4:
(1.0, 10.0) (2.0, 11.0), (5.0, 11.0) (6.0, 10.0)


Вопщем мои действия:
создал 2мерный массив 6х2.
Путем сравнения определил подпоследовательности, а вот вывести на консоль 1й, последний и n-й ни как. посоветуйте как можно сделать.

Спасибо.

Добавлено через 2 часа 50 минут
Это код который имеет место быть.
собственно после того как определяются подпоследовательности, я впадаю в ступор-пытаюсь полученную выборку воткнуть в другой двумерный массив, чтобы в дальнейшем работать именно с теми данными, которые нужны, не получается.
Я до не уверен в правильном выборе пути решения задачи, может кто что подскажет?

И STL я пока не готов пользоваться, только начал постигать дзен.

Камрады, помогите советом.

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
#include <iostream>
#include <iomanip>
using namespace std;
 
// прототипы функций
//--------------------------------------------------------------------------
// функция вывода исходных последовательностей
void show(const double arr[][2], int x);
//--------------------------------------------------------------------------
 
// глобальные переменные
 
const int X=6,  Y=2;        // количество последовательностей
const int s = 4;            // Ширина вывода
 
int main()
{
    int n=3;                // условие при выводе последовательностей
    double arraypairs [X][Y]=       // массив пар последовательностей
    {               
        {1.0, 10.0}, 
        {2.0, 11.0}, 
        {3.0, 11.0}, 
        {4.0, 11.0}, 
        {5.0, 11.0}, 
        {6.0, 10.0} 
    };
 
// вывод исходной последовательности
    show(arraypairs,X);
    cout<<endl;
 
// поиск подпоследовательностей путем сравнения верхней последовательности с нижней    
    for (int i=0; i<X; i++)
    {
        for (int j=0; j<Y; j++)
        {   
                if (arraypairs[i][1] == arraypairs[i+1][1] || arraypairs[i][1] == arraypairs[i-1][1]) // нашли все подпоследовательности
                    cout<<setw(s)<<arraypairs[i][j];// проверка правильности нахождения
 
                    
        }
    }
 
return 0;
}
 
void show(const double arr[][2], int x)
{
    for (int sequence=0; sequence<X; sequence++)
    {
        cout<<endl;
        for(int pair=0; pair<Y; pair++)
            cout<<setw(s)<<arr[sequence][pair];
    }
    cout<<endl;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.02.2013, 22:40
Ответы с готовыми решениями:

Сжать исходную целочисленную последовательность, выбросив из неё каждый второй элемент
Перепишите текст руками У меня вопрос как это реализовать? Реализовал через обычные 2 массива...

Определить последовательность ходов, которая позволит обойти все поля и вернуться на исходную.
Помогите решить задачу... Очень сильно нужно!! Задача: Вводится начальная позиция коня на...

Проредить точки на плоскости, в соответствии с заданным максимальным расстоянием
Здравствуйте! Не могу додуматься, как наиболее оптимально решить задачу: задано множество точек на...

Проредить последовательность чисел по заданному условию.
короче n-это любое число может быть m- тоже и надо сократить эти числа сначала на нечетных потом на...

1
1 / 1 / 1
Регистрация: 27.08.2012
Сообщений: 11
19.05.2014, 11:46 2
Вдруг кому-то пригодится:
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
#include <iostream>
#define MULTI_ARRAY_LENGTH 20
#define N 3
 
using namespace std;
 
int main(){
    int mArray[MULTI_ARRAY_LENGTH][2] = {
        { 1, 22 },
        { 2, 33 },
        { 3, 33 },
        { 4, 33 },
        { 5, 33 },
        { 6, 22 },
        { 7, 22 },
        { 8, 22 },
        { 9, 22 },
        { 10, 22 },
        { 11, 33 },
        { 12, 33 },
        { 13, 33 },
        { 14, 33 },
        { 15, 33 },
        { 16, 33 }
 
    };
 
    for (int i = 0; i < MULTI_ARRAY_LENGTH; i++){
        if (mArray[i][0] != 0){
            cout << mArray[i][0] << " " << mArray[i][1] << endl;
        }
    }
    cout << "\n";
 
    int counter = 0;
    int j = 0;
    for (int i = 0; i < MULTI_ARRAY_LENGTH; i++){                       //находим две одинаковые по Y пары
        if (mArray[i][1] == mArray[i + 1][1] && mArray[i][0] != 0){     //если нашли начинаем считать до N
            counter++;                                                  //досчитали до N и соседнии пары все равно равны? это и есть наша пара которую надо убрать
            if (counter%N == 0){                                        //превращаем ее X в 0, чтобы потом вычистить
                mArray[i][0] = 0;
                counter = 0;
                j++;
            }
        }
        else { counter = 0; };
    }
 
    for (int i = 0; i < MULTI_ARRAY_LENGTH; i++){                               //вычищаем нулевые X и смещаем весь массив, чтобы было красиво
        if (mArray[i][0] == 0){
            for (int j = i; j < MULTI_ARRAY_LENGTH && mArray[j][1] != 0; j++){
                mArray[j][0] = mArray[j + 1][0];
                mArray[j][1] = mArray[j + 1][1];
            }
        }
    }
 
    for (int i = 0; i < MULTI_ARRAY_LENGTH; i++){
        if (mArray[i][0] != 0){
            cout << mArray[i][0] << " " << mArray[i][1] << "\n";
        }
    }
 
    system("pause");
    return 0;
}
0
19.05.2014, 11:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.05.2014, 11:46
Помогаю со студенческими работами здесь

Распечатать слова в алфавитном порядке с указанием числа вхождений в исходную последовательность
нужно написать программу на паскале. ана непустая последовательность слов, в каждом из которых...

Проредить массив
Есть два массива e1 и e2. Они имеют одинаковую размерность 1x101. Необходимо: перебирая элементы...

Восстановление отсчетов сигнала
Имеется программа, которая модулирует канал связи. Дискретизируется сигнал, с помощью алгоритма БПФ...

Абсолютная система отсчетов
Можно ли ввести абсолютную систему координат вселенной ?


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru