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

символьные строки А и Б - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Массивы и указатели. http://www.cyberforum.ru/cpp-beginners/thread420426.html
Объясните как работает код, что он будет выводить на экран и почему : #include <stdio.h> #define PRD(a) printf("%d", (a) ) // Print decimal #define NL printf("\n"); // Print new line // Create and initialse array int a={0, 1, 2, 3, 4}; int main() {
C++ Подсчитать количество участков, которые образуют непрерывные последовательности чисел Я составил текст программы, но не могу написать отладку. Помогите пожалуйста написать отладку к программе. (очень нужно написать сегодня, помогите пожалуйста.) Задача: Объявить массив целых чисел и заполнить его случайными значениями. Размер массива и диапазон значений его элементов заданы в задании. В задании указано также, какую обработку массива следует произвести. Размерность массива -50.... http://www.cyberforum.ru/cpp-beginners/thread420421.html
C++ два уравнения и постоить график
Здравствуйте. Задали решить задачу на си++ и естественно я понятия не имею как. Если ктото может прошу помогите. нужно решить два уравнения1) e-x-2x +1=0; 2) 2x3-x2 –x+1=0 методом половинного деления и методом ньютона и построить график по заданному интервалу(ужас)
C++ прямоугольный массив
В прямоугольном массиве с помощью функции найти элемент, у которого самая большая сумма "соседей". Найденный элемент и его индексы напечатать. Исходные числа из файла читать, 1) Распечатать исходный массив с помощью процедуры. 2) Построить функцию, которая для произвольного внутреннего элемента передаваемого ей массива находит сумму всех соседних (8 штук). файл с данными DATF.TXT
C++ Напечатать сумму элементов массива http://www.cyberforum.ru/cpp-beginners/thread420408.html
Подскажите как мне здесь найти сумму элементов массива , заранее большое спасибо. #include<iostream> #include <conio.h> using namespace std; int main() { int i; int mas={1,3,13,4,5,6}; for(i=0;i<6;i++)
C++ Открытие файла другой программы из программы.Косяк. Итак, есть в программе такой кусок: system("E:\\KMPlayer\\KMPlayer.exe E:\\WINDOWS\\New_year.mp3"); Косяк в том, что пока песня не дойдёт до конца, программа дальше не выполняется. Не помогает даже ShowWindow(GetConsoleWindow(),SW_SHOWMAXIMIZED); после этого куска. Как сделать так, чтобы и песня играла и программа печатала дальше? А дальше вот что: while(h!='\0') { cout<<h; Sleep(100); i++; } подробнее

Показать сообщение отдельно
asm
62 / 35 / 1
Регистрация: 05.10.2011
Сообщений: 137
30.12.2011, 03:50     символьные строки А и Б
Цитата Сообщение от SpblrT Посмотреть сообщение
...вычеркивая некоторые символы...
вообще-то если вычеркивать, то получается как раз 27 комбинаций

Добавлено через 3 часа 16 минут
Вот что у меня получилось:
С++ код

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
119
//---------------------------------------------------------------------------
#include <windows.h>
#include <iostream.h>
 
#pragma hdrstop
 
//---------------------------------------------------------------------------
char* Rus(const char*);
bool existTest(string A, string B);
bool lastTest(bool *M, unsigned int A, unsigned int B);
void verify(bool *q, string C, string B, unsigned int *c);
 
#pragma argsused
int main(int argc, char* argv[])
{
        string A,B,C,D,E;
        A = " bb cc bb cc ";
        B = "bc";
        unsigned int b=0,c=0;
 
        bool *q ;
 
        for(unsigned int i=0;i<A.length();i++)
        for(unsigned int j=0;j<B.length();j++)
        {
                if(A[i]==B[j])
                {
                        C.push_back(A[i]);
                        break;
                }
        }
 
        if(!existTest(C,B))
        {
                cout<<Rus("Решений не найдено")<<endl;
                goto END;
        }
 
        q = new bool[C.length()];
        for(unsigned int i=0;i<B.length();i++) q[i]=true;
        for(unsigned int i=B.length();i<C.length();i++) q[i]=false;
            //
            verify(q,C,B,&c);
            //
        while( !lastTest(q,C.length(),B.length()) )
        {
 
                for(unsigned int i=B.length()-1+b;i<C.length()-1;i++)
                {
                        bool temp = q[i];
                        q[i] = q[i+1];
                        q[i+1] = temp;
                        //
                        verify(q,C,B,&c);
                        //
                }
                        q[B.length()-1+b] = true;
                        q[C.length()-1] = false;
 
                q[b]=false;
                q[b+B.length()]=true;
                //
                verify(q,C,B,&c);
                //
                b++;
        }
 
 
 
 
        cout<<"A="<<A<<endl;
        cout<<"B="<<B<<endl;
        cout<<"C="<<C<<endl;
        cout<<"c="<<c<<endl;
END:
 
        system("PAUSE");
        return 0;
}
//---------------------------------------------------------------------------
char bufRus[256];
char* Rus(const char*text)
{
        CharToOemA(text,bufRus);
        return bufRus;
}
//---------------------------------------------------------------------------
bool existTest(string A, string B)
{
        unsigned int a=0;
        for(unsigned int i=0,j=0;i<B.length();i++)
                while(j<A.length())
                {
                        if(B[i]==A[j++])
                        {
                                a++;
                                break;
                        }
                }
        if(a<B.length()) return false;
        return true;
}
//---------------------------------------------------------------------------
bool lastTest(bool *M, unsigned int A, unsigned int B)
{
        for(unsigned int i=A-1;i>A-B-1;i--)
        if(!M[i])return false;
        return true;
}
//---------------------------------------------------------------------------
void verify(bool *q, string C, string B, unsigned int *c)
{
        string temp;
        for(unsigned int i=0; i<C.length(); i++)
                if(q[i])temp.push_back(C[i]);
        if(existTest(temp,B))
                *c=*c + 1;
}
//---------------------------------------------------------------------------


Долго думал как сделать, так толком ничего и не придумал, а программа работает с горем пополам. То есть что-то считает, но далеко не все комбинации проходят. Может тут надо было рекурсию использовать каким-нибудь боком? Не знаю. В общем я написал и выглядит громоздко. Хорошая задача, да вот сложная.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru