Форум программистов, компьютерный форум, киберфорум
Наши страницы

Формирование циклической формы перестановки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Подпрограмма - процедура (получить вектор длины слов) http://www.cyberforum.ru/cpp-beginners/thread796039.html
Словом назовём всякую последовательность букв латинского алфавита длины не более 20, а предложением - всякую последовательность не более чем 30 слов, отделённых друг от друга сериями пробелов, тогда...
C++ Сравнение параметров перегруженной ф-ии Есть два типа параметров у ф-ии (перегрузка) long int и float, нужно их сравнить на "больше-меньше" (не понятно как) и указать на правильность реализации перегрузки. #include <iostream> using... http://www.cyberforum.ru/cpp-beginners/thread795975.html
присваивание char - где тут может быть ошибка? C++
Есть простая функция, обратную строку должна выдавать, а вместо этого передает "необработаное исключение" проблема в s = s; s = temp; Но ведь насколько я знаю так МОЖНО писать, разве нет??...
С++ метод Гаусса с единичной диагональю - програма не работает C++
#include <stdio.h> #include <stdlib.h> #define N 3 int main() { int i, j, k; float AMAX,M; float A={{1,1,2,-1}, {2,-1,2,-4}, {4,1,4,2}};
C++ Суммировать два значения (классы) http://www.cyberforum.ru/cpp-beginners/thread795962.html
Объекты класса С1 и С2 анализируются нормально, но почему С3=2? Даже если инициализировать С1 =2, а С2 =5, то С3 = С1+С2 =2. Подскажите где ошибка. #include <iostream> using namespace std;...
C++ Подключить нужные библиотеки и исправить ошибки Здравствуйте, вот код кажется на с++, помогите пожалуйста подключить нужные библиотеки, исправить ошибку или сделать проект, а то у меня никак неполучаеться. int n; vector < vector<int> > a; ... подробнее

Показать сообщение отдельно
dnb_dnb
44 / 0 / 1
Регистрация: 13.11.2011
Сообщений: 95

Формирование циклической формы перестановки - C++

27.02.2013, 08:51. Просмотров 255. Ответов 0
Метки (Все метки)

Здравуствуйте! Чтобы показать вам, что такое циклическая форма я прикрепляю картинку - пример ( На ней 1, 2, 3, 4 - последовательность действий. В моём примере должно получиться (bf) (dc) , но получается только (bf). Подскажите, пожалуйста, что не так.


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
#include "stdafx.h"
#include <conio.h>
#include <iostream>
        using namespace std;
#define SIZE 6 // максимально возможный для работы размер массива
 
int main()
{
        int i,j;
        int k = 0;
        char ch,tt;
 
        char NEW_MAS [SIZE] = {};
        char MAS_1[SIZE]={'b','c','d','f'}; // массив переставляемых символов
        char MAS_2[SIZE]={'f','d','c','b'};; // массив переставленных символов
 
        for(i = 0; i < SIZE; i++)
        {
                ch=MAS_1[i];
                MAS_1[i]=MAS_2[i];
                MAS_2[i]=ch;
 
    }
        for(j = 0; j < SIZE-1; j++)  // j - индекс второй строки после первой перестановки
        {
                for(i=j;i<SIZE;i++)      //   индекс первой строки
                {
                         // i-й столбей должен стать j- ым
 
                        if(MAS_2[j]==MAS_1[i])
                        {
                                ch=MAS_1[i];
                                MAS_1[i]=MAS_1[j];
                                MAS_1[j]=ch;
 
                                ch=MAS_2[i];
                                MAS_2[i]=MAS_2[j];
                                MAS_2[j]=ch;
 
 
                        }
                }
 
        }
 
    cout<<"New MAS_1 with old oder :"<<endl;
    for(i = 0; i < SIZE; i++)     cout<<MAS_1[i]<<" ";
        cout<<"\n New MAS_2 :"<<endl;
    for(i = 0; i < SIZE; i++)     cout<<MAS_2[i]<<" ";
 
 
    k=1;
    NEW_MAS[k]='(';
        j=0;
    tt= MAS_1 [j];
 
   while(j<SIZE)  // цикл по элементам 1 строки
    { 
        for(i=0; i < SIZE; i++)  // формирование блока
        {
            NEW_MAS[k]='(';
            k++;
            NEW_MAS[k] = MAS_1 [j];  // начало цикла
            
            k++;
            NEW_MAS[k] = MAS_2 [j];  //b
 
            // запись из второй строки
 
                    if(MAS_2[j]!=MAS_1[j])
                    {
                        NEW_MAS[k]=MAS_2[j]; // f
                   
                     j++;  
                    }
            //  поиск по первой строке последнего элемента
l1:                 j++;
                    if(j==SIZE) break;
                    if((NEW_MAS[k]==MAS_1[j])&&(MAS_2[j]!=tt))
                    { 
                        k++;
                        NEW_MAS[k]=MAS_2[j]; 
                        
                    }
                    else 
                    {
                         k++;
                         NEW_MAS[k] = ')';       
                         
                         break;
                    }
                    goto l1;                    
                                     
        }
         j=tt+1;
    }
 
   
    for(j = 1; j <= k; j++)     cout<<NEW_MAS[j]<<" ";
 
        getch();
        return 0;
}
Ошибка, видимо, где-то здесь:
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
k=1;
    NEW_MAS[k]='(';
        j=0;
    tt= MAS_1 [j];
 
   while(j<SIZE)  // цикл по элементам 1 строки
    { 
        for(i=0; i < SIZE; i++)  // формирование блока
        {
            NEW_MAS[k]='(';
            k++;
            NEW_MAS[k] = MAS_1 [j];  // начало цикла
            
            k++;
            NEW_MAS[k] = MAS_2 [j];  //b
 
            // запись из второй строки
 
                    if(MAS_2[j]!=MAS_1[j])
                    {
                        NEW_MAS[k]=MAS_2[j]; // f
                   
                     j++;  
                    }
            //  поиск по первой строке последнего элемента
l1:                 j++;
                    if(j==SIZE) break;
                    if((NEW_MAS[k]==MAS_1[j])&&(MAS_2[j]!=tt))
                    { 
                        k++;
                        NEW_MAS[k]=MAS_2[j]; 
                        
                    }
                    else 
                    {
                         k++;
                         NEW_MAS[k] = ')';       
                         
                         break;
                    }
                    goto l1;                    
                                     
        }
         j=tt+1;
    }
 
   
    for(j = 1; j <= k; j++)     cout<<NEW_MAS[j]<<" ";
 
        getch();
        return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru