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

Выделение последовательности ненулевых и нулевых элементов (вперемешку) из одномерного массива данных - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти наименьшее среди тех чисел в первой последовательности, которые не входят во вторую http://www.cyberforum.ru/cpp-beginners/thread1013324.html
1. Даны 2 последовательности по 5 чисел в каждой.Найти наименьшее среди тех чисел в первой последовательности, которые не входят во вторую 2. Дана вещественная матрица А. Упорядочить её строки по возрастанию их наибольших элементов 3. Проверить, имеется ли среди элементов массива Х хотя бы одно число Фибоначчи и вывести их, если они есть
C++ Составить программу данных о человеке Помогите пожалуйста! Составить программу.Начальные данные берутся из файла и вводятся вручную. Минимальное содержание 15 элементов. Составить программу данных о человеке. 1) Имя 2) Фамилия 3)Дата рождения 4) Место жительства Задание: Вывести на экран данные о пенсионерах (старше 62 лет) Буду очень благодарен любой помощи! http://www.cyberforum.ru/cpp-beginners/thread1013293.html
C++ Что не так?
// laba1_cpp.cpp : Defines the entry point for the console application. // //не удается составить аргумент шаблон для "T" #include "stdafx.h" #include <iostream> #include <vector> #include <algorithm> #include <fstream> #include <string>
C++ Вывести строку длины N, которая состоит из символов C
Мне задали написать задачу ,вывести строку длины N, которая состоит из символов C. вот мой код, не пашет... Вижуал студии у меня пока нет, пользуюсь Rad studio 10, много библиотек подключен... SOS//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include <iostream.h> #include <tchar.h> #include <cstring.h> #include <string.h>
C++ Ввести одномерный массив А , вывести его. Переставить в обратном порядке все элементы между максимальным из отрицательных и минимальным элементами http://www.cyberforum.ru/cpp-beginners/thread1013262.html
Ввести одномерный массив А , вывести его. Переставить в обратном порядке все элементы между максимальным из отрицательных и минимальным элементами массива.(ПОМОГИТЕ,ПОЖАЛУЙСТА, СДЕЛАТЬ ЗАДАНИЕ )
C++ Ввести одномерный массив А , вывести его Ввести одномерный массив А , вывести его. Найти произведение элементов стоящих слева и справа от минимального элемента массива. Разделить на найденное произведение минимум и максимум. Изменённый массив вывести. (ПОМОГИТЕ сделать задание,пожалуйста) подробнее

Показать сообщение отдельно
DimKaKiber
 Аватар для DimKaKiber
9 / 9 / 0
Регистрация: 20.11.2013
Сообщений: 55
21.11.2013, 10:25  [ТС]     Выделение последовательности ненулевых и нулевых элементов (вперемешку) из одномерного массива данных
Вобщем - вот мое решение. не совсем конечно шустро все работает, но, по крайней мере, то, что надо выдергивает (проверял по графикам и по численным значениям). Единственное - почему то последнюю точку последнего интервала не пишет (((. Это меня жутко напрягает. Вот мое решение задачки:

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
//Поиск длинных нулевых последовательностей, ограничивающих значимые паттерны
TMemoryStream *Position = new TMemoryStream(); //поток с найденными начальными и конечными значениями точек значимых интервалов данных
long Len; //Дина нулевой последовательности
 long Na4_Int;//Начало значимого интервала
  long End_Int;//Конец значимого интервала
   bool Flag_Nul;//Флаг начала последовательности
Len = 0;
Na4_Int = 0;
End_Int = 0;
for (long i = 0; i < Size; i++)
 {
  //Слева-направо. Ищем начальные и конечные точки интересующего набора данных
  if (Mass[i] == 0) //нашли нулевой элемент
   {
    if (Flag_Nul)
     {
      Len++;
     }
     else
      {
       Len = 1; //Входим внутрь последовательности нулей
       Flag_Nul = true; //Выставляем флаг, говорящий о том,, что нашли нулевую последовательность
      }
   }
   else
    {
     if ((Len >= 1400 ) && (Na4_Int == 0))
      {
       Na4_Int  = i; //Запоминаю начало интервала ненулевых значений
       Len = 0;
       Position->Write(&Na4_Int,4); //Пишу начальную точку массива нужных данных в поток данных
      }
     if ((Len >= 1400) && (Na4_Int != 0))
      {
       End_Int = i- Len;
       i = End_Int;
       Len = 0;
       Position->Write(&End_Int,4); //Пишу конечную точку массива нужных данных в поток данных
      }
 
     if ((Na4_Int != 0) && (End_Int != 0)) //Интервал записал - теперь надо новый искать
      {
       Na4_Int = 0;
       End_Int = 0;
      }
     Len = 0;//Сброс длины последовательности
     Flag_Nul = false; //Сброс флага о том, что находимся внутри последовательности нулей
    }
   if ((i == Size) && (End_Int != 0) && ((Len <= 1400)|| (Len >=1400)))
    {
     End_Int = i;
     Position->Write(&End_Int,4); //Пишу конечную точку конечного интервала нужных данных в поток данных
    }
 }
//Пишу точки начала и конца интервалов в массив
long *Interval = (long*)malloc(sizeof(long)*(Position->Size/4));
Position -> Position = 0;
Position -> Read(Interval,Position->Size);
//Что то делаю с данными на основании полученных интервальных точек
//------------------------------------------------------------------
//------------------------------------------------------------------
Position->~TMemoryStream(); //Убиваю поток
free(Interval); //Освобождаю память из под массива Interval
 
Текущее время: 05:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru