1 / 1 / 0
Регистрация: 09.09.2011
Сообщений: 45
|
|
1 | |
Серии в массиве.18.09.2011, 19:30. Показов 3670. Ответов 2
Метки нет Все метки)
(
Здравствуйте!!!
Подскажите, пожалуйста как решить следующую задачу. Тест серии последовательности. Под серией понимается последовательность одинаковых символов (нулей и единиц). То есть подсчитать сначала сколько единиц и нулей, далее сколько раз подряд два нуля и две единицы в массиве , далее сколько раз подряд три нуля и три единицы, далее сколько раз подряд четыря нуля и четыре единицы и так далее до шести. Вывести число серий для каждого диапазона от 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; }
0
|
|
18.09.2011, 19:30 | |
Ответы с готовыми решениями:
2
Поменять местами две серии в массиве
|
![]() |
||||||
18.09.2011, 20:45 | 2 | |||||
![]() Решение
вы вот что поясните. Например, в слове "000" вы рассматриваете три серии 0 длины 1, две серии - длины 2 и одну серию - длины 3?
А разве это не одна серия длины 3? Если по такой логике, то так можно:
1
|
1 / 1 / 0
Регистрация: 09.09.2011
Сообщений: 45
|
|
18.09.2011, 21:48 [ТС] | 3 |
Спасибо!!!
По заданию мне надо было рассматривать по отдельности для диапазона 1,2,3,4,5,6. Вы правильно поняли задачу.
0
|
18.09.2011, 21:48 | |
Помогаю со студенческими работами здесь
3
Задан целочисленный массив размера N. Отсортировать серии в массиве в порядке убывания их длины Серии (сумма ряда)
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |