Форум программистов, компьютерный форум 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
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
06.02.2013, 00:22  [ТС]     Массивы. Вычислить по формуле и вывести на экран все возможные комбинации сумм чисел
Я наверное не очень внятно сформулировал задачу.Задача взята из справочника по электротехнике.Есть таблица замены круглого провода в несколько проводов.Например диаметр провода 1мм можно заменить в 2 провода 0,55+0,83.0,59+0,8 и так далее,аналогично в 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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#include <iostream>
#include <iomanip>
#include <cmath>
 
using namespace std;
 
int main()
{
  const int size = 30;//объявляем массив на 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;
  //double D; //диаметр задаются с клавиатуры здесь используется только в потоке вывода по формуле
              //2*(sqrt (S/pi),а здесь используется сечение
  double S =1,G = 0.01;//задаются с клавиатуры сейчас задано произвольно S уже вычеслено из заданного диаметра
  int M =3;            //задаются с клавиатуры сейчас задано произвольно
  int a,b,c,i,j,k;
  float flag =1;
  double  *B = new double  [size];//динамический массив
  bool  q;//q1 =1;
 
   b = 0; c = 0;
 
 for (;;)
 {
 
 double  *AB = new double  [size];//динамический массив будет хранить набор диаметров в диапазоне
              //заданным пользователем
 
    for ( i = 0; i < size; i++)//верхний интервал диаметров задаются с клавиатуры
     for ( i = 0; i < size; i++)// нижний интервал диаметров задаются с клавиатуры
     //в данном случае заданы 0,75 и 0,9,но могут быть любыми
        {
        if(A[i] >= 0.75 && A[i]<= 0.9)// если это интервал
        //заполняется массив с одновременным вычислением сечения ((D/2)*(D/2))*pi
            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 ++)         //циклами i,j,k
              for ( a = i;  a <= b*M ;  a ++ )   //этим циклом просматриваем все варианты
                                                 //и заполняем массив
 
        if ((((((i+j+k)==a)))&&(a <=a*2))) //выборка значений
 
       {
         //суммируем все значения,вычисляем разницу и сохраняем в массиве AB[c]
         AB[c] = S - (B[j] + B[i] + B[k]);//разница сумма сечений
 
         //AB[c+1] = S - (B[j+1]+B[i]+B[k+1]);
          if ((((i==0)||(j ==b))||((i==j)&&(j==k)))&&((j-(i-1))&&(k-(j-1))!=0)//выборка значений
              &&((AB[c] >= -G)&&(AB[c] <= G)))
            {
 
              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; //setw (15)<< AB[c+1] << endl;
 
                   q=1; //если нет значений меняем флаг q
 
            }
       }
 if (q==0)  // если нет ни одного значения выводим сообщение вариантов нет
            // запрашиваем продолжение или выход
            // если выбран выход (введен 0) меняем флаг программа завершается
            // если выбрано продолжение проверяем правильность ввода
    {
     cout <<"" << endl;
     cout << " PODBOP V " << M << " PROVODA S TOCHNOST'U    " << G << "      USPESHNO ZAVERSHEN !!!"
          << endl << endl;
     cout << "                VARIANTOV NET!!  " << 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) // если ввод верный просим задать другую точность
            {
 
              cout << "Zadajte tochnost podbora provoda  > ili <   " << G << endl;
              cin >>G;
              delete [] AB;
            }
 
    }
 
 if  (q==1) //если есть хотя бы одно значение оно выводится на экран
            //и запрашиваем продолжение или выход
            // если выбран выход (введен 0) меняем флаг программа завершается
            // если выбрано продолжение проверяем правильность ввода
    {
      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) // если выбран выход (введен 0) меняем флаг программа завершается
break;
delete [] AB;
delete [] B;
 }
 
 
return 0;
 
}
Буду благодарен за любой ответ.
 
Текущее время: 03:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru