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

Серии в массиве. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создать абстрактный тип данных (структура) - вектор, который имеет указатель на short и число элементов http://www.cyberforum.ru/cpp-beginners/thread353407.html
Создать абстрактный тип данных (структура) - вектор, который имеет указатель на short и число элементов. Определить функции: инициализации, удаления вектора, установки/ изменения размера, доступа к элементам вектора, вычисления суммы четных элементов вектора. Для примера, в функции main, организовать сравнение векторов.
C++ Олимпийские игры Задача. Напишите программу, которая подводит итоги Олимпийских игр. Про-грамма должна получить от пользователя число медалей разного достоинства, за-воеванное каждой командой – участницей, вычислить общее количество медалей и соответствующее ему число очков. Количество очков вычисляется по следую-щему правилу: за золотую медаль команда получает семь очков, за серебренную – шесть, за бронзовую –... http://www.cyberforum.ru/cpp-beginners/thread353406.html
Как сделать счетчик в цикле? C++
как сделать счетчик в цыкле таким образом чтобы он был 1 1 1 2 2 2 3 3 3 4 4 4 итд
C++ Перевод 10-го числа в 2-ое
Народ обьясните пжлста как работает эта функция(быстрое возведение числа в степень a^d mod n) : long powmod(long a, long d, long n) { long b = 1; while (d) { if (d % 2 == 0) {
C++ "Гистограмма успеваемости" http://www.cyberforum.ru/cpp-beginners/thread353379.html
Помогите пожалуйста написать программу на C++ или C# "гистограмма успеваемости" ...подскажите хотя бы откуда взять какой-нибудь вспомогательный материал.
C++ Сортировки Ребя сделайте пожалуйста одну из двух задачек, очень прошу( не сочтите за наглость, заранее огромное спасибо вам ! 1.В файле input.txt содержатся сведения о группы студентов в формате: номер группы; запись о каждом студенте группы содержит следующие сведения: фамилия, имя, отчество, год рождения, оценки по пяти предметам. Переписать данные файла input.txt в файл output.txt, отсортировав их в... подробнее

Показать сообщение отдельно
Corvette
1 / 1 / 0
Регистрация: 09.09.2011
Сообщений: 45
18.09.2011, 19:30     Серии в массиве.
Здравствуйте!!!

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

Тест серии последовательности. Под серией понимается последовательность одинаковых символов (нулей и единиц). То есть подсчитать сначала сколько единиц и нулей, далее сколько раз подряд два нуля и две единицы в массиве , далее сколько раз подряд три нуля и три единицы, далее сколько раз подряд четыря нуля и четыре единицы и так далее до шести. Вывести число серий для каждого диапазона от 1 до 6.

Я написал программу (и она даже вроде правильно работает), но она не очень красивая (опыта у меня очень мало), подскажите более красивый вариант реализации этой задачи.

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

using namespace std;

int main ()
{
    setlocale (LC_ALL, "Russian");
    
    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'};
        
    // тест серий
    int run0_1=0, run0_2=0, run0_3=0, run0_4=0, run0_5=0, run0_6=0; 
    int run1_1=0, run1_2=0, run1_3=0, run1_4=0, run1_5=0, run1_6=0; 
    
    // для одного элемента
    for (int i=0; i<60; i++)
    {
        if (A[i]== '0')
        {
           run0_1 = ++run0_1;
        } 
         if (A[i]== '1')
        {
           run1_1 = ++run1_1;
        }       
    }
    // для двух элементов
    for (int i=0; i<60; i++)
    {
        if (A[i]== '0' && A[i]==A[i+1])
        {
           run0_2 = ++run0_2;
        } 
         if (A[i]== '1'&& A[i]==A[i+1])
        {
           run1_2 = ++run1_2;
        }       
    }
    
    // для трех элементов
    for (int i=0; i<60; i++)
    {
        //for (int j=1; j<3; j++){
        if (A[i]== '0' && A[i]==A[i+1] && A[i+1]== A[i+2])
        {
           run0_3 = ++run0_3;
        } 
         if (A[i]== '1'&& A[i]==A[i+1] && A[i+1]== A[i+2])
        {
           run1_3 = ++run1_3;
        }
        //}       
    }
    
     // для четырех элементов
    for (int i=0; i<60; i++)
    {
        //for (int j=1; j<3; j++){
        if (A[i]== '0' && A[i]==A[i+1] && A[i+1]== A[i+2] && A[i+2]==A[i+3])
        {
           run0_4 = ++run0_4;
        } 
         if (A[i]== '1'&& A[i]==A[i+1] && A[i+1]== A[i+2] && A[i+2]==A[i+3])
        {
           run1_4 = ++run1_4;
        }
        //}       
    }
    
    // для пяти элементов
    for (int i=0; i<60; i++)
    {
        //for (int j=1; j<3; j++){
        if (A[i]== '0' && A[i]==A[i+1] && A[i+1]== A[i+2] && A[i+2]==A[i+3] && A[i+3]==A[i+4])
        {
           run0_5 = ++run0_5;
        } 
         if (A[i]== '1'&& A[i]==A[i+1] && A[i+1]== A[i+2] && A[i+2]==A[i+3] && A[i+3]==A[i+4])
        {
           run1_5 = ++run1_5;
        }
        //}       
    }
    
    // для шести элементов
    for (int i=0; i<60; i++)
    {
        //for (int j=1; j<3; j++){
        if (A[i]== '0' && A[i]==A[i+1] && A[i+1]== A[i+2] && A[i+2]==A[i+3] && A[i+3]==A[i+4] && A[i+4]==A[i+5])
        {
           run0_6 = ++run0_6;
        } 
         if (A[i]== '1'&& A[i]==A[i+1] && A[i+1]== A[i+2] && A[i+2]==A[i+3] && A[i+3]==A[i+4] && A[i+4]==A[i+5])
        {
           run1_6 = ++run1_6;
        }
        //}       
    }
    
    
    
    // Результаты тест серии 
    cout <<"Длина серии диапазона 1 для нуля равна: "<<run0_1 << " " << endl;
    cout <<"Длина серии диапазона 1 для единицы равна: " <<run1_1 << " " << endl;
    cout <<"Длина серии диапазона 2 для нуля равна: " << run0_2 << " " << endl;
    cout <<"Длина серии диапазона 2 для единицы равна: " << run1_2 << " " << endl;
    cout <<"Длина серии диапазона 3 для нуля равна: " << run0_3 << " " << endl;
    cout <<"Длина серии диапазона 3 для единицы равна: " << run1_3 << " " << endl;
    cout <<"Длина серии диапазона 4 для нуля равна: " << run0_4 << " " << endl;
    cout <<"Длина серии диапазона 4 для единицы равна: " << run1_4 << " " << endl;
    cout <<"Длина серии диапазона 5 для нуля равна: " << run0_5 << " " << endl;
    cout <<"Длина серии диапазона 5 для единицы равна: " << run1_5 << " " << endl;
    cout <<"Длина серии диапазона 6 для нуля равна: " << run0_6 << " " << endl;
    cout <<"Длина серии диапазона 6 для единицы равна: " << run1_6 << " " << endl;
    
    
    getch ();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru