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

Преобразовать массив удвоив длину его серии - C++

Восстановить пароль Регистрация
 
Last_Night
19 / 19 / 0
Регистрация: 02.10.2012
Сообщений: 124
14.02.2013, 01:03     Преобразовать массив удвоив длину его серии #1
Дано целое число K (> 0) и целочисленный массив размера N. Преобразовать массив, удвоив длину его серии с номером K. Если серий в массиве меньше K, то вывести массив без изменений.
Под серией понимается ряд одинаковых цифр к примеру 1112222225555555
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2013, 01:03     Преобразовать массив удвоив длину его серии
Посмотрите здесь:

Для заданного текста определить длину содержащейся в нем максимальной серии символов C++
Преобразовать массив, увеличив первую/последнюю/все серии наибольшей длины на один элемент C++
C++ Можно ли задать массив, не зная заранее его длину?
Преобразовать массив, уменьшив каждую его серию на один элемент. C++
C++ Дан целочисленный массив размером N. Преобразовать массив, увеличив длину каждой серии на один элемент
Одномерный массив B[n] и преобразовать его следующим образом C++
C++ В строке определить длину максимальной серии символов
В массиве определить длину серии символов отличных от букв C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Last_Night
19 / 19 / 0
Регистрация: 02.10.2012
Сообщений: 124
17.02.2013, 18:44  [ТС]     Преобразовать массив удвоив длину его серии #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
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<math.h>
 
void schet(int row[], int n) {
    int k=1,kol_s=0;
    for (int i=0; i<=n; i++){   
            if ( row[i] == row[i+1] ) k++;
            if ( (row[i] == row[i+1])&&row[i] != row[i+2]) { cout<<k<<"-dlina"<<endl; kol_s++; k=1; }
    }
    cout<<endl<<kol_s<<" kolich serii";
    
}
void vvod ( int row[], int n ) {
    for (int i=0; i<=n; i++) {
        cout<<"Vvedite "<<i<<" - element massiva"<<endl;
        cin>>row[i];
    }
}
 
void print  ( int row[], int n ) {
        for (int i=0; i<=n; i++)
        cout<<row[i]<<" ";
}
 
void main() {
int arr[40];
int n,k;
cin>>n>>k;
vvod(arr,n);
schet(arr,n);
 
getch();
 
}
кое что начёркал, нужно довести до ума пока ток серии выделяет

Добавлено через 20 часов 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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<math.h>
 
int lenOne,lenTwo;
 
void createRow(int row[],int row2[],int n,int start) {
    int j=0,leng=0,i=0;
    leng=n-start;
    lenTwo=leng;
    for (i=start; i<n; i++, j++) {
    row2[j]=row[i];
    }
    //for (int k=0; k<leng; k++) cout<<row2[k]<<" ";
 
}
void addToRow(int row[],int start,int len) {
    int i=0,leng;
    leng=start+len;
    lenOne=leng;
    for(i=start; i<=leng; i++) {
        row[i]=row[start-1];
 
    }
    //for (int k=0; k<leng; k++) cout<<row[k]<<" ";
 
 
}
void joinRow(int row[],int row2[],int lenOne,int lenTwo) {
    int j=0;
    lenTwo+=lenOne;
    for (lenOne; lenOne<=lenTwo; lenOne++,j++) {
         row[lenOne]=row2[j];
    }
 
    for (int k=0; k<lenTwo; k++) cout<<row[k]<<" ";
 
}
 
int len(int row[], int n, int s) {
    int len=1,num_s=0;
    for(int i=0; i<=n; i++) {
        if(row[i]==row[i+1]) len++;
        if((row[i]==row[i+1])&&(row[i]!=row[i+2])) {
            num_s++;
            if(num_s==s) {
                //cout<<"Dlina="<<len<<endl;
                return len;
                //break;
 
            }
            len=1;
 
        }
 
    }
       return len;
}
 
int start(int row[], int n, int s) {
    int kol_s=0,start=0;
    for (int i=1; i<=n; i++){
        if(row[i]==row[i+1])
            if ( row[i] != row[i-1] ) {
                kol_s++;
                if (s==kol_s) {
                    start=i;
                    break;
                }
            }
    }
    //cout<<"ser "<<kol_s<<endl;
    //cout<<"Start "<<start;
    return start;
 
}
 
/*void printAfter(int arr[],int start,int len) {
    for (int i=n; i>=start+len; n--) {
        arr[i] = arr[i-len];
    }
 
} */
/*void vvod ( int row[], int n ) {
    for (int i=0; i<=n; i++) {
        cout<<"Vvedite "<<i<<" - element massiva"<<endl;
        cin>>row[i];
    }
} */
 
void print  ( int row[], int n ) {
        for (int i=0; i<n; i++)
        cout<<row[i]<<" ";
}
 
void main() {
clrscr();
int arr[40]={1,1,1,1,2,2,3,3,3,5,5,5};
int arr2[20];
int n,k,st,ln;
cout<<"Razmer=";
cin>>n;
cout<<"Seria=";
cin>>k;
//vvod(arr,n);
clrscr();
print(arr,n);
st=start(arr,n,k);
ln=len(arr,n,k);
createRow(arr,arr2,n,st);
addToRow(arr,st,ln);
cout<<endl;
joinRow(arr,arr2,lenOne,lenTwo);
 
getch();
 
}
Yandex
Объявления
17.02.2013, 18:44     Преобразовать массив удвоив длину его серии
Ответ Создать тему
Опции темы

Текущее время: 21:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru