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

Вложенные циклы. Вычислить суммарное сечение и эквивалентную замену проводов (код внутри) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ динамическое программирование (Ship routes) http://www.cyberforum.ru/cpp-beginners/thread747537.html
Задача на динамическое программирование: Римский турист отправился в плавание по Средиземному морю. Он прибыл в один из городов 3 островов, которые он собирается посетить. Каждый остров имеет в точности N городов и все они являются портами. турист планирует начать путешествие с того города,в котором он находится и посетить другие 3*N - 1 городов в точности один раз и затем вернуться в...
C++ Нарисовать эллипс Нарисуйте, пожалуйста, эллипс.Срочно нужно!!! http://www.cyberforum.ru/cpp-beginners/thread747522.html
Цикл бесконечно повторяется C++
попытался решить вот эту задачку http://acm.timus.ru/problem.aspx?space=1&num=1404 но, почему-то, второй цикл бесконечно повторяется... помогите плиз) #include <iostream> using namespace std; int main() { int a, i, i1; char code;
Cгенерировать одномерный массив из 10 чисел,отсортировать его по возрастанию или убыванию C++
Суть собственно в чем, я полный чайник и задача мне нужна написанная самым простым языком, помогите кто-нибудь если сможете, а то я совсем блондинка) 1.сгенерировать одномерный массив из 10 чисел,отсортировать его по возрастанию или убыванию 2.найти наименьшеее и наибольшее и вывести на экран ну и тоже самое только в двумерном массиве
C++ Заменить в каждом массиве максимальный элемент средним арифметическим положительных элементов (если оно существует) соответствующего массива http://www.cyberforum.ru/cpp-beginners/thread747515.html
Здравствуйте, помогите пожалуйста: Ввести одномерные массивы X1(N1) , X2(N2) и X3(N3) . Заменить в каждом из них максимальный элемент средним арифметическим положительных элементов (если оно существует) соответствующего массива. Вывести массивы до преобразования и после. (При решении реализовать процедуры ввода и вывода массивов Vvod1m и Vivod1m, а также функции IndMax – поиск индекса...
C++ характеристика и операции обработки файлов с позиции ОС Кто знает, распишите пожалуйста по пунктам или кинье ссылку где это написано(гуглил - ничего толкового). Добавлено через 1 минуту Во-первых, нужно найти данные файла и его атрибуты по его символьному имени, во-вторых, считать необходимые атрибуты файла в отведенную область оперативной памяти и проанализировать права пользователя на выполнение требуемой операции. Затем выполнить операцию,... подробнее

Показать сообщение отдельно
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
27.12.2012, 02:04     Вложенные циклы. Вычислить суммарное сечение и эквивалентную замену проводов (код внутри)
Доброго всем времени суток!Я делаю только первые шаги в с++. Вот задача:дано произвольное число проводов различного диаметра.Написать программу которая должна вычислить суммарное сечение и эквивалентную замену в 1,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
#include <iostream>
#include <iomanip>
#include <math.h>
 
using namespace std;
 
int main()
{
float s,smin,smax;
float pi = 3.14159;
float d,di,dj,dk,dL,di1,dj1,dk1,dL1;
 
cout << "Vvedite diametr" << endl;//  любое от 0,53 до 3
cin >> d;
cout <<""<<endl;
s = (d/2)*(d/2)*pi;
cout << setw(8) << "diametr1" << setw(18) << "diametr2" << setw(17)
     <<"diametr3"<<setw (12) << setw (17) << "diametr4" << setw (15) << "Sechenie"
     << endl <<endl;
     int A;          // достаточная точность подбора
     if (s <= 1.6)
     A = 1000;
     if (s >=1.6)
     A = 100;
s = (floor (s * A + 0.5) / A)*A;
smin = floor ((s/4)/1.2);      // соизмеримые сечения
smax = floor ((s/4)*1.3);      // интервал значений
 
for (int i = smin; i <= smax; i += 1)
for (int j = smin; j <= smax; j += 1)
for (int k = smin;  k <= smax; k += 1)
for (int L = smin; L <= smax; L += 1)
for (int Sechenie = i;  Sechenie <= smax*4;  Sechenie += 1 ) // перебор всех заданных значений
 // вычисление сечения и 0 разницы и исключение парных значений типа (1+2)и (2+1)
if (((i+j+k+L) == Sechenie )&& ((s-(i+j+k +L)) == 0)&&(((i/2)-(j/2)-(k/2)-(L/2))<=0)&&
    ((((i/2)-(j/2))<=0)&&(((j/2)-(k/2))<=0))
    &&(((((i/2)-(j/2))<=0)&&(((j/2)-(k/2))<=0)&&(((j/2)-(L/2))<=0)&&(((k/2)-(L/2)<=0)))))
 
{    //вычисление диаметра заданной точности
    di= floor ((2*(sqrt (((double)i/A)/pi))) * 100 + 0.5) / 100;
    di1=floor ((2*(sqrt (((double)(i+1)/A)/pi))) * 100 + 0.5) / 100;
    dj =floor ((2*(sqrt (((double)j/A)/pi))) * 100 + 0.5) / 100;
    dj1 =floor ((2*(sqrt (((double)(j+1)/A)/pi))) * 100 + 0.5) / 100;
    dk =floor ((2*(sqrt (((double)k/A)/pi))) * 100 + 0.5) / 100;
    dk1 =floor ((2*(sqrt (((double)(k+1)/A)/pi))) * 100 + 0.5) / 100;
    dL =floor ((2*(sqrt (((double)L/A)/pi))) * 100 + 0.5) / 100;
    dL1 =floor ((2*(sqrt (((double)(L+1)/A)/pi))) * 100 + 0.5) / 100;
 
    if ((!(di1 != di)&&(dj1 != dj)&&(dk1 != dk)&&(dL1 != dL))) // исключение повторяющихся значений
                                                               //вывод результатов
    {
 
        cout << setw(7)<< di<< setw (10)<< setw (7)<<"+"<<setw (10)
             << dj << setw (13) << setw (7) <<"+" << setw (10)  << dk << setw (7)
             << "+" << setw (10)<< setw (10)<< dL <<setw (15) << setw (7)
             << "=" << setw (10)<<(double)Sechenie/A << endl;
    }
 
}
 
     return 0;
}
Код рабочий. Программа работает,но очень медленно.Я понимаю,что при таких числах и таком количестве итераций она и не будет работать быстрее.А если вложить еще 2 цикла.Наверное это не самый лучший вариант но ничего другого на ум не приходит.С функциями и массивами я еще не разобрался.Подскажите кто может код или хотя бы идею.
Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru