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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2011, 23:20   #1
Corvette
Пользователь
 
Регистрация: 31.07.2011
Сообщений: 55
По умолчанию "Пробег" по массиву.

Пробег по массиву.

Здравствуйте!

Стоит следующая задача:

Программе необходимо проверить длину серии одинаковых элементов массива. И вывести максимальную длину серии.
Например, для следующего массива из 20 элементов максимальный пробег будет 5 нулей.

{'0','1','0','1','1','0','0','0','1 ', '1','0','0','0','0','0','1','0', '1','0', '0'}

Мой вариант программы теряет промежуточные величину пробега. Хотел записывать все результаты пробега в массив, а потом выводить максимальный элемент массива. Но что то, не получается.

Пожалуйста, подскажите, как решить эту задачу.

Код:
#include <iostream>
#include <conio.h>
#include <clocale>

using namespace std;

int main ()
{
        
        setlocale (LC_ALL, "Russian");
        
        int run0=1;
        int massiv [60] = {0}; // массивов для результатов пробегов
        
        char a[60] = {'0','0','0','0','0','1','1','1','1','0','0','0','0','0','0','0','0','0','0','0',\
        '0','1','1','1','1','1','1','0','0','1','0','0','0','0','0','0','0','0','0','0',\
        '0','0','0','0','0','1','1','0','0','1','0','1','0','1','1','0','0','0','0','0'};
        
        for (int i=1; i<60; i++)
        {
            if (a[i]==a[i-1]) // если два элементы равны
            {
                 run0=run0+1; // увеличиваем пробег
            }
            else
            {
                 /*for (int j=1; j<60; j++)
                 {
                 massiv [j] = run0;
                 cout << massiv [j] <<" "; 
                 } */
            } 
        }    
        
        getch ();
        return 0;
}
Corvette вне форума Ответить с цитированием
Старый 17.09.2011, 04:58   #2
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Код:
const int ZERO = 0;
const int MAXSIZE = 12;

int Array[MAXSIZE] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1 };

int iTemp = 0, iMaxSubsequence = 0;

for (int i = 0; i < MAXSIZE; i++) {
 if (Array[i] == Array[i + 1] && Array[i] == ZERO) { 
  iMaxSubsequence++;
 }
 else { 
  if (iMaxSubsequence > iTemp)
   iTemp = iMaxSubsequence;
  else
   iMaxSubsequence = 0; 
 }
}

Последний раз редактировалось coNsept; 17.09.2011 в 05:07.
coNsept вне форума Ответить с цитированием
Старый 17.09.2011, 21:08   #3
Corvette
Пользователь
 
Регистрация: 31.07.2011
Сообщений: 55
По умолчанию

Спасибо!!!!!!!!
Corvette вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как "убрать" имя заданное массиву ячеек? koval911 Microsoft Office Excel 2 15.11.2010 10:56
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
"ОКРВВЕРХ", "ОКР", "ЕСЛИ". Как бы их связать. Каравай Microsoft Office Excel 13 17.02.2010 09:53
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04