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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Parovozov
Сообщений: n/a
#1

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

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

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

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

Кликните здесь для просмотра всего текста
Дана последовательность отсчетов, представляющих собой пары (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;
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2013, 22:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проредить исходную последовательность отсчетов (C++):

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

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

Написать функцию вычисляющую амплитудный спектр отсчетов звукового сигнала формата WAV - C++
Нужно написать функцию вычисляющую амплитудный спектр отсчетов звукового сигнала формата WAV. Посоветуйте с чего начать выполнение задания,...

Преобразовать исходную матрицу C++ - C++
Преобразовать исходную матрицу так, чтобы первый элемент каждой строки был заменен средним арифметическим элементов этой строки

Разбить исходную строку на две подстроки - C++
Здравствуйте форумчане, пытаюсь решить задание с использованием строк, но не выходит. Учителя временно нету, хотелось бы услышать ваш...

Разбить исходную строку на максимальной длины подстроки - C++
Дана строка, состоящая из слов, разделённых одним пробелом. Разработайте программу, которая разбивает исходную строку на максимальной...

1
Comrad()
1 / 1 / 0
Регистрация: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2014, 11:46
Привет! Вот еще темы с ответами:

Разделить исходную строку на несколько строк длины K - C++
Помогите пожалуйста: Разделить исходную строку на несколько строк длины K.

переделать программу Pascal -> C++ (Восстановить исходную матрицу и напечатать ее по строкам) - C++
с паскаля на с++...буду очень признателен. вот текст задачи. Квадратная матрица, симметричная относительно главной диагонали, задана своим...

Сложение строк затирает исходную строку сначала, что делать? - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;cstring&gt; #include &lt;string&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; ...

Исходную матрицу отсортировать по возрастанию количества положительных элементов в столбцах - C++
Задача: Исходную матрицу отсортировать по возрастанию количества положительных элементов в столбцах Прошу, помогите написать код, весь...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru