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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
jafrey kerns
5 / 5 / 0
Регистрация: 12.08.2011
Сообщений: 24
#1

Правильно ли я написал? - C++

12.08.2011, 12:01. Просмотров 1636. Ответов 30
Метки нет (Все метки)

Начал изучать С++. Книга "Язык программирования С++. Лекции и упражнения". Хочется узнать насколько правильно я пишу код. Вот два первых задания:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <locale>
 
double astrUnits (double);
 
int main()
{
    setlocale(LC_ALL,"Rus");
 
    double lYears;
 
    std::cout << "Введите количество световых лет: ";
    std::cin >> lYears;
    std::cout << lYears << " световых лет " << astrUnits(lYears) << " астрономических единиц\n";
 
    std::cin.get();
    std::cin.get();
 
    return 0;


второе:

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
// 1_2011.cpp: главный файл проекта.
 
 
#include <iostream>
#include <locale>
//using namespace System;
 
double fahrenheit(double);
 
int main()
{
    setlocale(LC_ALL,"Rus");
 
    double cels;
    std::cout << "Введите температуру в градусах Цельсия: ";
    std::cin >> cels;
 
    double fahr = fahrenheit(cels);
 
    std::cout << cels << " градусов Цельсия равно " << fahr <<" градусов Фаренгейта \n";
    std::cin.get();
    std::cin.get();
}
 
double fahrenheit(double tempcels)
{
    double fahr = 1.80*tempcels+32.0;
    return fahr;
}
 Комментарий модератора 
Используйте теги форматирования кода!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.08.2011, 12:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Правильно ли я написал? (C++):

написал программу для этой формулы. Скажите правильно ли я написал ее - C++
написал программу для этой формулы. Скажите правильно ли я написал ее #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace...

Правильно ли я написал программу? - C++
//В зависимости от размера суммы, размер налога с нее рассчитывается по следующей схеме: 1) Если сумма не превышает некоторую величину а,...

Написал но не уверен что правильно - C++
1. Написать программу на Си для вычисления значений функции y (рис. 1) если Х изменяться от Xmin до Xmax с шагом dx. Х , Xmin, Xmax, dx...

Правильно ли я написал программу? Оператор if - C++
Всем доброго дня, не моглы бы проверить правиьно ли написана программа? Задание : Все числа, о которых идет речь в индивидуальных...

Ребят я правильно написал код:)? - C++
#include &quot;stdafx.h&quot; #include &lt;math.h&gt; #include &lt;clocale&gt; #include &lt;iostream&gt; using namespace std; int main () { ...

Правильно ли я написал программу? Из книжки Павловская Щупак - C++
Задание во вложении, вот не могу разобраться, помогите, правильно ли написана программа? #include &lt;iostream&gt; #include &lt;iomanip&gt; ...

30
co6ak
Кошковед
408 / 501 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
12.08.2011, 12:05 #2
код списанный с книги... комментировать... ну хз
1
ValeryLaptev
Эксперт С++
1041 / 820 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
12.08.2011, 12:06 #3
Цитата Сообщение от jafrey kerns Посмотреть сообщение
Начал изучать С++. Книга "Язык программирования С++. Лекции и упражнения". Хочется узнать насколько правильно я пишу код. Вот два первых задания:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <locale>
 
double astrUnits (double);
 
int main()
{
    setlocale(LC_ALL,"Rus");
 
    double lYears;
 
    std::cout << "Введите количество световых лет: ";
    std::cin >> lYears;
    std::cout << lYears << " световых лет " << astrUnits(lYears) << " астрономических единиц\n";
 
    std::cin.get();
    std::cin.get();
 
    return 0;
}
второе:

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
// 1_2011.cpp: главный файл проекта.
 
 
#include <iostream>
#include <locale>
//using namespace System;
 
double fahrenheit(double);
 
int main()
{
    setlocale(LC_ALL,"Rus");
 
    double cels;
    std::cout << "Введите температуру в градусах Цельсия: ";
    std::cin >> cels;
 
    double fahr = fahrenheit(cels);
 
    std::cout << cels << " градусов Цельсия равно " << fahr <<" градусов Фаренгейта \n";
    std::cin.get();
    std::cin.get();
}
 
double fahrenheit(double tempcels)
{
    double fahr = 1.80*tempcels+32.0;
    return fahr;
}
В первом файле не видать функции, которая вычисляет астрономические единицы.
1
jafrey kerns
5 / 5 / 0
Регистрация: 12.08.2011
Сообщений: 24
13.08.2011, 00:29  [ТС] #4
Цитата Сообщение от co6ak Посмотреть сообщение
код списанный с книги... комментировать... ну хз
Код писал сам, видел в какой-то книге похожие коды, но там было без использования функций.


Цитата Сообщение от ValeryLaptev Посмотреть сообщение
D первом файле не видать функции, которая вычисляет астрономические единицы.
Случайно скопировал не весь код, вот продолжение:

C++
1
2
3
4
5
double astrUnits(double lightYears)
{
    double aUnits = lightYears*63240;
    return aUnits;
}
Добавлено через 12 часов 17 минут
Закончил еще один пример, надеюсь не скажут, что из книги. На работе часто приходится подбирать резисторы при отсутствии нужного номинала, решил доверить компу. Хотелось бы прочитать конструктивную критику.

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
// Проверка наличия на складе резисторов нужного номинала и расчет замены параллельным соединением
 
#include <iostream>
#include <locale>
#include <cmath>
 
//using namespace std;
//double parResistor(double, double);      // объявление функции вычисления необходимого номинала
 
//double R1;
 
int main ()
{
    setlocale(LC_ALL,"Rus");
 
    double R1;
    std::cout << "Введите необходимый номинал резистора в кОм(xx.xx): \n";
    std::cin >> R1;
 
    double tablRes[52] = {13, 13.3, 14, 14.7, 15, 15.4, 16, 16.5, 20, 22, 24,      //объявление и инициализация массива резисторов
                          27, 30, 31, 33, 33.2, 36, 39, 39.2, 40.2, 47, 48.7,
                          51, 56, 62, 63.4, 75, 82, 91, 100, 118, 120, 150,
                          180, 200, 220, 240, 270, 300, 316, 324, 330, 360,
                          390, 432, 470, 510, 620, 680, 750, 787, 1000};
 
    int i;                                                                                                      // объявление счетчика номиналов
    i = 0;
    for (i=0; i < 52; i++)                                                                                 // проверка наличия резисторов на складе
    {
        double dopusk = fabs(R1-tablRes[i]);
        if (dopusk <= 0.1)
            std::cout << "Номинал " << tablRes[i] << " имеется на складе!\n";  
    }
 
    std::cout << "Для получения необходимого результата\n"        
                  << "можно взять параллельное соединение:\n\n  ";
 
    int a,b;                                                                                                   // расчет необходимых номиналов,
    double r1, r2, dop;                                                                                  // для параллельного соединения из
    for (a=0; a<10; a++)                                                                               // того, что есть в наличии
    {
        for (b=51; b>10; b--)
        {
             r1 = tablRes[a];
             r2 = tablRes[b];
            double pres = fabs((r1*r2)/(r1+r2));
            dop = fabs(R1-pres);
            if (dop < 0.05)
                std::cout << "   " << r1 << "  и  " << r2 << "\n\n\n";                    // вывод на экран всех вариантов
        }   
    }
 
    std::cin.get();
    std::cin.get();
    return 0;
}
0
SDmaN
54 / 51 / 2
Регистрация: 22.07.2011
Сообщений: 436
13.08.2011, 00:57 #5
Я вроде ошибок не нашёл. но код можно слегка упростить. Там где идёт проверка наличия резисторов не обязательно 2 раза присваивать значение 0 переменной i, достаточно сделать так:
C++
1
for(int i = 0; i < 52; i++)
Не особо важно для сегодняшних процессоров, однако.

Функцию fabs использовать не обязательно, но если вам так удобнее, то пожалуйста.
Зачем в конце 2 раза std::cin.get()? Достаточно 1, а лучше перед return 0 вписать system("PAUSE"), так понятнее на мой взгляд.
1
jafrey kerns
5 / 5 / 0
Регистрация: 12.08.2011
Сообщений: 24
13.08.2011, 01:19  [ТС] #6
Спасибо. Присваивание переменной i исправлю, без функции fabs при проверке наличия мне выводит на экран все номиналы больше нужного, так как после вычитания получаются отрицательные числа, а они по определению < 0.1. До system("PAUSE") я еще не добрался в процессе обучения, но поищу и почитаю.
0
Сыроежка
Заблокирован
13.08.2011, 04:21 #7
Цитата Сообщение от jafrey kerns Посмотреть сообщение
Код писал сам, видел в какой-то книге похожие коды, но там было без использования функций.



Случайно скопировал не весь код, вот продолжение:

C++
1
2
3
4
5
double astrUnits(double lightYears)
{
    double aUnits = lightYears*63240;
    return aUnits;
}
Добавлено через 12 часов 17 минут
Закончил еще один пример, надеюсь не скажут, что из книги. На работе часто приходится подбирать резисторы при отсутствии нужного номинала, решил доверить компу. Хотелось бы прочитать конструктивную критику.

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
// Проверка наличия на складе резисторов нужного номинала и расчет замены параллельным соединением
 
#include <iostream>
#include <locale>
#include <cmath>
 
//using namespace std;
//double parResistor(double, double);      // объявление функции вычисления необходимого номинала
 
//double R1;
 
int main ()
{
    setlocale(LC_ALL,"Rus");
 
    double R1;
    std::cout << "Введите необходимый номинал резистора в кОм(xx.xx): \n";
    std::cin >> R1;
 
    double tablRes[52] = {13, 13.3, 14, 14.7, 15, 15.4, 16, 16.5, 20, 22, 24,      //объявление и инициализация массива резисторов
                          27, 30, 31, 33, 33.2, 36, 39, 39.2, 40.2, 47, 48.7,
                          51, 56, 62, 63.4, 75, 82, 91, 100, 118, 120, 150,
                          180, 200, 220, 240, 270, 300, 316, 324, 330, 360,
                          390, 432, 470, 510, 620, 680, 750, 787, 1000};
 
    int i;                                                                                                      // объявление счетчика номиналов
    i = 0;
    for (i=0; i < 52; i++)                                                                                 // проверка наличия резисторов на складе
    {
        double dopusk = fabs(R1-tablRes[i]);
        if (dopusk <= 0.1)
            std::cout << "Номинал " << tablRes[i] << " имеется на складе!\n";  
    }
 
    std::cout << "Для получения необходимого результата\n"        
                  << "можно взять параллельное соединение:\n\n  ";
 
    int a,b;                                                                                                   // расчет необходимых номиналов,
    double r1, r2, dop;                                                                                  // для параллельного соединения из
    for (a=0; a<10; a++)                                                                               // того, что есть в наличии
    {
        for (b=51; b>10; b--)
        {
             r1 = tablRes[a];
             r2 = tablRes[b];
            double pres = fabs((r1*r2)/(r1+r2));
            dop = fabs(R1-pres);
            if (dop < 0.05)
                std::cout << "   " << r1 << "  и  " << r2 << "\n\n\n";                    // вывод на экран всех вариантов
        }   
    }
 
    std::cin.get();
    std::cin.get();
    return 0;
}
Первое правило: переменные должны быть локализованы там, где они используются. В противном случае у читающего код возникает вопрос: а почему переменные продолжают существовать? Может быть они еще где-то дальше используются?

Это я имею в виду ваши переменные типа int i, a, b, а аткже переменные типа double r1, r2, dop.

Затем для читающего ваш код совершено непонятны магические константы 52 и 10. Что они означают? Ваш возраст? Поэтому желательно для таких констант определить содержательные имена либо с помощью команды препроцессора #define, либо как константы.

Кроме того название переменных a и b могли бы быть более содержательными, так как совершенно непонятно, что они ознрачают.
1
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
13.08.2011, 06:09 #8
Цитата Сообщение от SDmaN
Зачем в конце 2 раза std::cin.get()? Достаточно 1, а лучше перед return 0 вписать system("PAUSE"), так понятнее на мой взгляд.
1) cin.get() пишется два раза, потому что когда он ввёл значение, то после этого он нажал <return>, который остался в потоке
2) cin.get() не требует запуска внешней программы, подключения cstdlib и является переносимым способом
1
fasked
Эксперт С++
4942 / 2522 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
13.08.2011, 11:42 #9
А лучше запускать приложения из консоли, ага
1
jafrey kerns
5 / 5 / 0
Регистрация: 12.08.2011
Сообщений: 24
14.08.2011, 19:22  [ТС] #10
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
// Проверка наличия на складе резисторов нужного номинала и расчет замены параллельным соединением
 
#include <iostream>
#include <locale>
#include <cmath>
 
int parResistor();                                                                                          // объявление функции вычисления необходимого номинала
 
int main ()
{
    setlocale(LC_ALL,"Rus");
 
    double R1;
    std::cout << "Введите необходимый номинал резистора в кОм(xx.xx): \n";
    std::cin >> R1;
 
    double tablRes[52] = {13, 13.3, 14, 14.7, 15, 15.4, 16, 16.5, 20, 22, 24,      //объявление и инициализация массива резисторов
                          27, 30, 31, 33, 33.2, 36, 39, 39.2, 40.2, 47, 48.7,
                          51, 56, 62, 63.4, 75, 82, 91, 100, 118, 120, 150,
                          180, 200, 220, 240, 270, 300, 316, 324, 330, 360,
                          390, 432, 470, 510, 620, 680, 750, 787, 1000};
 
    for (int i=0; i < 52; i++)                                                                                 // проверка наличия резисторов на складе
    {
        double dopusk = fabs(R1-tablRes[i]);
        if (dopusk <= 0.1)
            std::cout << "Номинал " << tablRes[i] << " имеется на складе!\n";  
    }
 
    std::cout << "Для получения необходимого результата\n"        
                  << "можно взять параллельное соединение:\n\n  ";
 
    
    for (int a=0; a<10; a++)                                                                              // расчет необходимых номиналов, 
    {                                                                                                              // для параллельного соединения из
        for (int b=51; b>10; b--)                                                                         // того, что есть в наличии
        {                                                                                                        
            double r1 = tablRes[a];
            double r2 = tablRes[b];
            double pres = fabs((r1*r2)/(r1+r2));
            double dop = fabs(R1-pres);
            if (dop < 0.05)
                std::cout << "   " << r1 << "  и  " << r2 << "\n\n\n";                    // вывод на экран всех вариантов
        }   
    }
    
 
    system ("PAUSE");
    return 0;
}
Можно ли сделать так, чтобы программа не закрывалась после окончания рассчетов, а давала возможность провести новый расчет. Например:
C++
1
2
3
4
5
6
std::cout << "Вы хотите продолжить? ( y/n) \n";
std::cin >> vibor;
if (vibor == y)
        //начать расчет заново;
else 
       //завершить программу
0
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
14.08.2011, 19:42 #11
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
// Проверка наличия на складе резисторов нужного номинала и расчет замены параллельным соединением
 
#include <iostream>
#include <locale>
#include <cmath>
 
#include <conio.h> // для getch()
 
int parResistor();                                                                                          // объявление функции вычисления необходимого номинала
 
int main ()
{
        setlocale(LC_ALL,"Rus");
 
        while( 1 ) // бесконечный цикл
        {
            double R1;
            std::cout << "Введите необходимый номинал резистора в кОм(xx.xx): \n";
            std::cin >> R1;
 
            double tablRes[52] = {13, 13.3, 14, 14.7, 15, 15.4, 16, 16.5, 20, 22, 24,      //объявление и инициализация массива резисторов
                                      27, 30, 31, 33, 33.2, 36, 39, 39.2, 40.2, 47, 48.7,
                                                      51, 56, 62, 63.4, 75, 82, 91, 100, 118, 120, 150,
                                                      180, 200, 220, 240, 270, 300, 316, 324, 330, 360,
                                                      390, 432, 470, 510, 620, 680, 750, 787, 1000};
 
            for (int i=0; i < 52; i++)                                                                                 // проверка наличия резисторов на складе
            {
                    double dopusk = fabs(R1-tablRes[i]);
                    if (dopusk <= 0.1)
                            std::cout << "Номинал " << tablRes[i] << " имеется на складе!\n";
            }
 
            std::cout << "Для получения необходимого результата\n"
                                      << "можно взять параллельное соединение:\n\n  ";
 
 
            for (int a=0; a<10; a++)                                                                              // расчет необходимых номиналов,
            {                                                                                                              // для параллельного соединения из
                    for (int b=51; b>10; b--)                                                                         // того, что есть в наличии
                    {
                            double r1 = tablRes[a];
                        double r2 = tablRes[b];
                            double pres = fabs((r1*r2)/(r1+r2));
                            double dop = fabs(R1-pres);
                        if (dop < 0.05)
                                std::cout << "   " << r1 << "  и  " << r2 << "\n\n\n";                    // вывод на экран всех вариантов
                    }
            }
 
            std::cout << "Нажмите любую клавишу для повтора, или ESC для выхода" << endl;
 
            if( getch() == 0x1B ) // 0x1B - сканкод ESC
               break; // выход из цикла
        }
 
        system ("PAUSE");
        return 0;
}
Добавлено через 44 секунды
Выполняете основной код в бесконечном цикле, в конце проверяете нажатую клавишу, и, если это Escape (0x1B), то выходите из цикла инструкцией break
1
Сыроежка
Заблокирован
14.08.2011, 19:49 #12
Цитата Сообщение от talis Посмотреть сообщение
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
// Проверка наличия на складе резисторов нужного номинала и расчет замены параллельным соединением
 
#include <iostream>
#include <locale>
#include <cmath>
 
#include <conio.h> // для getch()
 
int parResistor();                                                                                          // объявление функции вычисления необходимого номинала
 
int main ()
{
        setlocale(LC_ALL,"Rus");
 
        while( 1 ) // бесконечный цикл
        {
            double R1;
            std::cout << "Введите необходимый номинал резистора в кОм(xx.xx): \n";
            std::cin >> R1;
 
            double tablRes[52] = {13, 13.3, 14, 14.7, 15, 15.4, 16, 16.5, 20, 22, 24,      //объявление и инициализация массива резисторов
                                      27, 30, 31, 33, 33.2, 36, 39, 39.2, 40.2, 47, 48.7,
                                                      51, 56, 62, 63.4, 75, 82, 91, 100, 118, 120, 150,
                                                      180, 200, 220, 240, 270, 300, 316, 324, 330, 360,
                                                      390, 432, 470, 510, 620, 680, 750, 787, 1000};
 
            for (int i=0; i < 52; i++)                                                                                 // проверка наличия резисторов на складе
            {
                    double dopusk = fabs(R1-tablRes[i]);
                    if (dopusk <= 0.1)
                            std::cout << "Номинал " << tablRes[i] << " имеется на складе!\n";
            }
 
            std::cout << "Для получения необходимого результата\n"
                                      << "можно взять параллельное соединение:\n\n  ";
 
 
            for (int a=0; a<10; a++)                                                                              // расчет необходимых номиналов,
            {                                                                                                              // для параллельного соединения из
                    for (int b=51; b>10; b--)                                                                         // того, что есть в наличии
                    {
                            double r1 = tablRes[a];
                        double r2 = tablRes[b];
                            double pres = fabs((r1*r2)/(r1+r2));
                            double dop = fabs(R1-pres);
                        if (dop < 0.05)
                                std::cout << "   " << r1 << "  и  " << r2 << "\n\n\n";                    // вывод на экран всех вариантов
                    }
            }
 
            std::cout << "Нажмите любую клавишу для повтора, или ESC для выхода" << endl;
 
            if( getch() == 0x1B ) // 0x1B - сканкод ESC
               break; // выход из цикла
        }
 
        system ("PAUSE");
        return 0;
}
Добавлено через 44 секунды
Выполняете основной код в бесконечном цикле, в конце проверяете нажатую клавишу, и, если это Escape (0x1B), то выходите из цикла инструкцией break
Совершенно непонятно, зачем одновременно в вашей программе используется функция getch и system?
0
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
14.08.2011, 19:54 #13
Сыроежка, system( "pause" ); была в оригинале, я её не трогал. getch() используется для получения нажатия клавиши, что невозможно при использовании system( "pause" );
1
jafrey kerns
5 / 5 / 0
Регистрация: 12.08.2011
Сообщений: 24
14.08.2011, 20:00  [ТС] #14
Спасибо, до бесконечного цикла я не додумался

Добавлено через 3 минуты
system("PAUSE") я отключил за ненадобностью, в первоначальном варианте было вобще 2шт cin.get()
0
jafrey kerns
5 / 5 / 0
Регистрация: 12.08.2011
Сообщений: 24
24.08.2011, 23:39  [ТС] #15
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
// Проверка наличия на складе резисторов нужного номинала и расчет замены параллельным соединением
 
#include <iostream>
#include <locale>
#include <cmath>
 
#include <conio.h> // для getch()
 
 
 
int main ()
{
        setlocale(LC_ALL,"Rus");
 
        while( 1 ) // бесконечный цикл
        {
            double R1;
            std::cout << "Введите необходимый номинал резистора в кОм(xx.xx): \n";
            std::cin >> R1;
 
            double tablRes[52] = {13, 13.3, 14, 14.7, 15, 15.4, 16, 16.5, 20, 22, 24,      //объявление и инициализация массива резисторов
                                      27, 30, 31, 33, 33.2, 36, 39, 39.2, 40.2, 47, 48.7,
                                                      51, 56, 62, 63.4, 75, 82, 91, 100, 118, 120, 150,
                                                      180, 200, 220, 240, 270, 300, 316, 324, 330, 360,
                                                      390, 432, 470, 510, 620, 680, 750, 787, 1000};
 
            for (int i=0; i < 52; i++)                                                                                 // проверка наличия резисторов на складе
            {
                    double dopusk = fabs(R1-tablRes[i]);
                    if (dopusk <= 0.1)
                            std::cout << "Номинал " << tablRes[i] << " имеется на складе!\n";
            }
 
            std::cout << "Для получения необходимого результата\n"
                                      << "можно взять параллельное соединение:\n\n  ";
 
 
            for (int a=0; a<10; a++)                                                                              // расчет необходимых номиналов,
            {                                                                                                              // для параллельного соединения из
                    for (int b=51; b>10; b--)                                                                         // того, что есть в наличии
                    {
                            double r1 = tablRes[a];
                        double r2 = tablRes[b];
                            double pres = fabs((r1*r2)/(r1+r2));
                            double dop = fabs(R1-pres);
                        if (dop < 0.05)
                                std::cout << "   " << r1 << "  и  " << r2 << "\n\n\n";                    // вывод на экран всех вариантов
                    }
            }
 
            std::cout << "Нажмите любую клавишу для повтора, или ESC для выхода" << endl;
 
            if( getch() == 0x1B ) // 0x1B - сканкод ESC
               break; // выход из цикла
        }
 
        system ("PAUSE");
        return 0;
}
А можно как-то список номиналов считывать не из массива в программе, а из внешнего текстового файла? У меня из файла читается тип char, а как вычитать в double и создать массив я не знаю.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2011, 23:39
Привет! Вот еще темы с ответами:

Написал прогу, не знаю как объяснить правильно!!! - C++
Как правильно описать задачу преподу? Условие: 5 работников, базовая з/п 5000 за 1 ед 2000, за 2 1800, более 3х 1500. задается любое...

Написал прогу, не знаю как объяснить правильно!!! - C++
Как правильно описать задачу преподу? Условие: 5 работников, базовая з/п 5000 за 1 ед 2000, за 2 1800, более 3х 1500. задается любое...

Написал программу, не могу понять правильно или нет - C++
Написать функцию sum с переменным числом параметров, которая находит сумму чисел типа int по формуле: S=a1*a2+a2*a3+a3*a4+. . . . . ...

Написал калькулятор - C++
Вот написал калькулятор: #include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; int main() { bool...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
24.08.2011, 23:39
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru