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

рекурсия на расставление знаков между числами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ матрицы http://www.cyberforum.ru/cpp-beginners/thread65700.html
в матрицу С добавить строки, которые есть в матрице А, но отсутствуют в матрице В. нужно разработать программу на си, реализующую этот алгоритм.
C++ Работа со строками Люди, если есть у кого время прошу просветить на тему Работу со строками ! Начили изучать, а примеров никаких нет ! И надо решить четыре задачи, но четвёртую не обязательно.....Спасибо ! :sorry: Задача №1 Задача №2 Задача №3 Задача №4 http://www.cyberforum.ru/cpp-beginners/thread65676.html
C++ Консоль и GUI
Доброго времени суток! Я-новичок, в рамках учебной программы изучал когда-то С++, было это давно, и программировали тогда мы под консоль. Собственно, в данное время иногда чувствуется острая необходимость в умении программировать. Решил начать с самого начала, с книги Стефана Р. Дэвиса "С++ для чайников". Но взглянув на количество различных компиляторов С++ (поправьте меня, если я употребил не...
не могу решить до конца C++
Есть задачка, и не могу понять в чём я ошибаюсь: Нужно из одного текста, который мы вводим с клавиатуры, найти самые длиное слово и сравнить если его последние буквы равны с первыми буквами из последуюшего слова к примеру"букВА ВАл" первое слово он находит а вот остальные слова если есть такого же размера он не проверяет! вот собственно и код:#include <stdio.h> #include <stdlib.h> #include...
C++ Win API форма курсора http://www.cyberforum.ru/cpp-beginners/thread65604.html
Привет. Делаю оконное приложение на win api. Надо программно сделать форму курсора - стрелка (стандартная). Как это сделать, подскажите?
C++ Метод Фибоначчи Ребята, помогите пожалуйста написать программу на С++ по методу Фибоначчи, при условии f(x)=2x*x*x-6*x+3, a=0, b=2,5 . подробнее

Показать сообщение отдельно
manfeese
129 / 128 / 16
Регистрация: 04.01.2009
Сообщений: 415
23.11.2009, 13:46     рекурсия на расставление знаков между числами
Упс, опоздал немного, походу прогу уже решили, но все же вот мой вариант и тоже с рекурсией!
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
#include <iostream.h>
#include <math.h>
#include <conio.h>
 
void swap(unsigned a,unsigned b) {a^=a, b^=b, a^=a;}
 
int GetSum(unsigned Xx[],char Yy[],unsigned A_Size)
{
    int SSum=Xx[0];
    for (int i = 1; i < A_Size; i++)
    {
     if (Yy[i]=='*')
     {
      int j = i+1;
      int Pr=Xx[j-1]*Xx[j];
      while (Yy[j]=='*') Pr*=Xx[j],j++;
 
      if (Yy[i-1]=='+') SSum+=Pr;
      else if (Yy[i-1]=='-') SSum-=Pr;
      else if (Yy[i-1]=='*') SSum*=Pr;
      i=j;
     }
     else
        {
        if (Yy[i-1]=='+') SSum+=Xx[i];
        else if (Yy[i-1]=='-') SSum-=Xx[i];
        else if (Yy[i-1]=='*') SSum*=Xx[i];
        }
    }
    return SSum;
}
 
void Generate(unsigned X[],char Y[],char Z[],unsigned A_Size,int Num, unsigned &Min,int k=0)
 {
   if ( k==A_Size-1 )
   {
    int Sum = GetSum(X,Y,A_Size);
 
    if (abs(Num-Sum) < Min)
    {
     Min = abs(Num-Sum);
     for (int i = 0; i < A_Size; i++) Z[i]=Y[i];
    }
   }
   else
   for (int j=k; j < A_Size-1; j++)
   {
    if (j!=k && Y[j]==Y[k]) continue;
    swap(Y[j],Y[k]);
    Generate(X,Y,Z,A_Size,Num,Min,k+1);
    swap(Y[j],Y[k]);
   }
 }
 
int main()
 {
 int K = 10;              // число, которому должна быть равна функция
 unsigned X[] = {1,2,3,4,5};   // Массив чисел
 unsigned N = sizeof(X)/sizeof(int);  // Кол-во элементов массива чисел
 char *Y = new char [N];         // Массив знаков
 char *MinMas = new char [N];    // Оптимальный массив знаков
 
 int p,um,Sum;                  // дополнительные переменные
 unsigned min = ~0;
 
   ((N-1)%3) ? p = (N-1)/3+1 : p = (N-1)/3;
   ((N-1-p)%2) ? um=(N-1-p)/2+1 : um=(N-1-p)/2;
 
   for (int i = 0; i < N-1; i++)
   {
     if (i<p) Y[i]='+';
     else
       if ( (i>=p) && (i<p+um) ) Y[i]='-';
       else Y[i]='*';
 
   Generate(X,Y,MinMas,N,K,min);
 
   Sum = GetSum(X,MinMas,N);
 
   for (int i = 0; i < N; i++)
   {
    cout<<X[i];
    if (i<N-1) cout<<MinMas[i];
   }
   cout<<" = "<<Sum;
 
   getch();
   return 0;
 }
 
Текущее время: 19:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru