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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
dnb_dnb
44 / 0 / 1
Регистрация: 13.11.2011
Сообщений: 95
#1

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

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

Здравуствуйте! Чтобы показать вам, что такое циклическая форма я прикрепляю картинку - пример ( На ней 1, 2, 3, 4 - последовательность действий. В моём примере должно получиться (bf) (dc) , но получается только (bf). Подскажите, пожалуйста, что не так.
[IMG]http://s018.***********/i525/1302/73/4e9f9605b872.jpg[/IMG]

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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2013, 08:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Формирование циклической формы перестановки (C++):

Перестановки: чтобы любые две соседние перестановки отличались только порядком двух соседних элементов - C++
Вводится число n &lt;= 8. Вывести все перестановки чисел 1,2..,n, так, чтобы две любые две соседние перестановки отличались только порядком...

Программирование алгоритмов циклической структуры - C++
Найти сумму целых положительных чисел, больших 30 и меньших100, кратных трём и оканчивающихся на 2, 4 или 8.

Написать программу циклической перестановки элементов массива - Turbo Pascal
1. Написать программу циклической перестановки элементов массива. (с random) 2. Является ли массив упорядоченным по возрастанию? (числа...

Составить программу циклической перестановки букв в словах - Visual Basic
Пожалуйста, помогите решить задачу в visual basic. вот задача: Составить программу циклической перестановки букв в словах ...

Составить программу циклической перестановки столбцов двумерного массива - Lazarus
Помогите составить программу циклической перестановки столбцов двумерного массива К, при которой i-й столбец становится i+1-м, а последний...

Составить программу циклической перестановки букв в словах текста - Pascal
Составить программу циклической перестановки букв в словах текста так, что i-я буква слова становится i+1-ой, а последняя - первой.:huh:

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2013, 08:51
Привет! Вот еще темы с ответами:

Составить программу циклической перестановки букв в словах текста - Turbo Pascal
Составить программу циклической перестановки букв в словах текста так, что i-я буква слова становится i+1-ой, а последняя - первой. на...

Составить программу циклической перестановки элементов одномерного массива - Pascal
Составить программу циклической перестановки элементов одномерного массива а(n) при которой i элемент становится i+1 , а последний 1.

Напишите программу циклической перестановки букв в слове X так, что i буква слова становится (i+1), а последняя - первой - Turbo Pascal
Напишите программу циклической перестановки букв в слове X так, что i-я буква слова становится (i+1)-ой, а последняя - первой.

Обработчик циклической формы =) - PHP
Есть форма для обновления статистики, которая выводится циклом из бд Идея тут в том, чтобы вставлять в бд новые записи сразу по всем...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru