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

Массивы. Вычислить по формуле и вывести на экран все возможные комбинации сумм чисел - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ UnicodeString to Array of char c++ builder http://www.cyberforum.ru/cpp-beginners/thread779232.html
Подскажите пожалуйста, каким образом можно посимвольно записать AnsiString в Array char. Можно так же вариант и из файла. Если не трудно, то можно ссылки на аналогичную тему. Пролистал гугл, подходящего не нашел, к сожалению... Необходимость заключается в том, чтобы перевернуть содержимое текста из компонента memo, либо файла. Буду благодарен за помощь.
C++ Написать рекурсивную функцию вычисления полинома: Написать рекурсивную функцию для вычисления полинома: G0(x)=1; G1(x)=x-1 Gn(x)=(x-2n+1)Gn-1(x) –(n-1)2Gn-2(x) даже мыслей нет в формулах вообще не шарю( http://www.cyberforum.ru/cpp-beginners/thread779231.html
C++ В каком случае проверка условия выполняется быстрее?
В каком случае проверка условия выполняется быстрее? while(1); или while(true); Ведь в одном из этих случаев должно происходить приведение типов, в каком именно?
Попадание точки в заданную область по координатам C++
1)задать круг и триугольник(смотреть рискунок) 2)ввести координаты точки (x,y); 3)вывести результат (попадает точка в заданную область или нет). мне хотя б саму формулу как задать круг и треугольник
C++ Составьте программу, которая создает стек из произвольного количества элементов http://www.cyberforum.ru/cpp-beginners/thread779221.html
Здравствуйте!!! Помогите пожалуйста, не могу разобраться с программой. Составьте программу, которая создает стек из произвольного количества элементов. Информационная часть динамического элемента должна состоять из двух целых чисел. Организуйте обработку каждого элемента: печать целых чисел из информационной части и остатка от деления первого целого числа на второе.
C++ Ошибка на cout и cin немогу понять в чем ошибка, есть код программы, вроде бы все правильно написано, но возможно я где-то допустил ошибку, но почему-то в упор невижу ругается на cout и cin и на "<<" ">>", может я что-то с библиотеками напутал? или что не так #include <iostream> #include <math.h> void main () { int Ax,Ay,Bx,By,d,Cx,Cy,Dx,Dy,u,xc,yc; cout << "input Ax:"; cin >> Ax; cout << "input Ay:"; подробнее

Показать сообщение отдельно
Genn55
360 / 207 / 39
Регистрация: 26.12.2012
Сообщений: 694

Массивы. Вычислить по формуле и вывести на экран все возможные комбинации сумм чисел - C++

05.02.2013, 02:54. Просмотров 2361. Ответов 2
Метки (Все метки)

Доброго всем времени суток.Я делаю только первые шаги в программировании.Начал разбираться с массивами простенькие задачки вроде получаются,а вот с этой не могу справиться.Дано 30 произвольных чисел типа double.Требуется вычислить по формуле и вывести на экран все возможные комбинации сумм этих чисел в произвольном,заданным пользователем интервале с заданной пользователем точностью.Комбинации в заданном интервале в 2,3,4,5,6.Все верные комбинации не должны повторяться.В моем решении массив уже отсортирован и выбран интервал.Вот что у меня получилось
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
#include <iostream>
#include <iomanip>
#include <math.h>
const int size = 30;
double  A[size] = {0.25,0.28,0.3,0.315,0.335,0.355,0.38,0.4,0.45,0.5,0.53,0.56,0.6,0.63,
                 0.67,0.71,0.75,0.8,0.85,0.9,0.95,1.0,1.06,1.12,1.18,1.25,1.32,1.40,1.45,1.5};
double  const pi = 3.14159;
using namespace std;
 
int main()
{
  double S =1.,G = 0.01;//temp ;
  int a,b,c,i,j,k,t; //для массивов и суммы сечений
  int M =3;
  float flag =1;
  double  *B = new double  [size];//динамический массив
 
  bool q1 =1;
  bool q;
   b = 0; c = 0;t = 0;
 for (;;)
 {
double  *AB = new double  [size];//динамический массив
    for ( i = 0; i < size; i++)//интервал
    for ( i = 0; i < size; i++)//интервал
    {
        if(A[i] >= 0.75 && A[i]<= 0.9)//интервал
            B[b++] =((A[i]/2)*(A[i]/2))*pi;//интервал и вычислене сечения
    }
 for ( i = 0; i < b; i++)                 //интервал и начало перебора
 for( j = B[i]; j <b ; j++)
 for( k = B[i]; k <b ; k++)
 for ( a = i;  a <= b*3 ;  a ++ )          //сумма перебора
 
if ((((((i+j+k)==a)))&&(a <=a*2)))//выборка значений
 
 
{
    (AB[c] =S-(B[j]+B[i]+B[k]));                 //сумма сечений
if ((((i==0)||(j ==b))||((i==j)&&(j==k)))&&((j-(i-1))&&(k-(j-1))!=0)//выборка значений
   &&((AB[c] >= -G)&&(AB[c] <= G)))
{
    for(int j1 = 0; j < c; j++)
{
//если найдено соответствие, то меняем флаг q1
if(AB[j1] == AB[c])
 q1 = 0;
}
//если соответствия не было найдено, то печатаем 
if(q1 == 1)
 
 
 cout << setw(15)<<setprecision(3) << 2*(sqrt ((B[i])/pi))<< setw(15) << 2*(sqrt ((B[j])/pi))
      << setw(15) << 2*(sqrt ((B[k])/pi))
      << setw(15)<<setprecision(4) << AB[c]<< endl;
 
     q=1; //если нет значений меняем флаг q
 
}
}
         if (q==0)
         {
cout <<"" << endl;
 cout << " PODBOP V " << M << " PROVODA S TOCHNOST'U    " << G << "      USPESHNO ZAVERSHEN !!!"
      << endl << endl;
cout << "                VARIANTOV NET!!  " << endl << endl;
//cout << setw (7)<< VjchisS (pi,i)<< setw (7) << VjchisS (pi,j) << setw (7) << VjchisS (pi,k) << endl;
 cout << "Prodoljit?     DA 1  NET  0" << endl;
 cin >>flag;
                  if (!((flag == 0)||((flag == 1))))
                       {
   cout << "           Oshibka !!!" << endl;
 cout << "Chislo mojet bjt 0 ili 1   Povtorite vvod!!" << endl;
 cin >> flag;
                       }
             if (flag == 1)
                     {
 
cout << "Zadajte tochnost podbora provoda  > ili <   " << G << endl;
cin >>G;
delete [] AB;
                    }
 
           }
 
        if  (q==1)
          {
 cout <<"" << endl;
 cout << " PODBOP V " << M << " PROVODA S TOCHNOST'U    " << G << "      USPESHNO ZAVERSHEN !!!"
      << endl << endl;
 cout << "Prodoljit?     DA 1  NET  0" << endl;
 cin >>flag;
                  if (!((flag == 0)||((flag == 1))))
                       {
   cout << "           Oshibka !!!" << endl;
 cout << "Chislo mojet bjt 0 ili 1   Povtorite vvod!!" << endl;
 cin >> flag;
                       }
             if (flag == 1)
                     {
 delete [] AB;
cout << "Zadajte tochnost podbora provoda  > ili <   " << G << endl;
cin >>G;
 
                    }
 
           }
 
   if (flag == 0)
   break;
   delete [] AB;
 }
 
 
return 0;
 
}
Здесь выбран интервал от 0,75 до 0,9 в 3.Пытаюсь решить простым перебором всех вариантов 2,3,4,5,6 циклами.На 3 циклах застопорился,не получается убрать повторяющиеся значения,а что я не правильно делаю не могу понять.Помогите разобраться одному мне не под силу.Возможно и все решение не верно.
Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru