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

Цепь из двух резисторов - C++

Восстановить пароль Регистрация
 
Михан
 Аватар для Михан
8 / 8 / 1
Регистрация: 05.11.2009
Сообщений: 74
27.01.2013, 15:56     Цепь из двух резисторов #1
Написать программу вычисления сопротивления электрической цепи, состоящей из двух резисторов. Ре-зисторы могут быть соединены последовательно или параллельно.
Вот как я это написал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# include <stdio.h> 
# include <conio.h>
int main ( )
{
    float a,b,c,p; //1резстор , 2 резистор, сопративление, форма цепи
       printf ("Введите 1 если цепь последовательная, или 2 если цепь параллельная");
    scanf (" % f", &p);
       printf ("Введите в одной строке сопротивление обоих резисторов");
    scanf (" % f % f ", &a, &c);
    if ( c = 1)
    {
        c = a + b;
        printf (" Сопротивление цепи из двух поседовательных резисторов   " , a, b );
        printf (" равно % 5.2f ", c);
    
     }
    else {
                c = 1/a + 1/b;
        printf (" Сопротивление цепи из двух параллельных резисторов   " , a, b );
        printf (" равно % 5.2f ", c);
          }
    getch( );
}
Компилирую при помощи bloodshed dev-c++, компилируется, создается exe файл, но он не запускается. Функция "Скомпилировать и запустить" тоже ничего не дала. Подскажите новичку что делать?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2013, 15:56     Цепь из двух резисторов
Посмотрите здесь:

C++ Написать функцию, которая вычисляет сопротивление двух резисторов
Составить из резисторов цепь соединения C++
Написать функцию, которая вычисляет сопротивление двух резисторов C++
C++ 5. Написать функцию, которая вычисляет сопротивление цепи, состоящей из двух резисторов
C++ Написать программу по расчету общего сопротивления цепочки резисторов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
27.01.2013, 16:12     Цепь из двух резисторов #2
пробуйте так:
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
# include <stdio.h> 
# include <conio.h>
int main ( )
{
    float a,b,p; //1резстор , 2 резистор, сопративление, форма цепи
    int c;
       printf ("Введите 1 если цепь последовательная, или 2 если цепь параллельная");
    scanf ("%d", &c);
       printf ("Введите в одной строке сопротивление обоих резисторов");
    scanf ("%f%f", &a, &b);
    if ( c == 1)
    {
        p = a + b;
        printf (" Сопротивление цепи из двух поседовательных резисторов  %f, %f " , a, b );
        printf (" равно % 5.2f\n", p);
    
     }
    else {
                p = 1/a + 1/b;
        printf (" Сопротивление цепи из двух параллельных резисторов  %f, %f " , a, b );
        printf (" равно % 5.2f\n", p);
          }
    getch( );
    return 0;
}
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
27.01.2013, 16:22     Цепь из двух резисторов #3
Михан, по моему вы не знаете где смотреть об ошибках, так как трудно не заметить ошибку о том что "c" не определенна
Цитата Сообщение от valeriikozlov Посмотреть сообщение
int c;
-=ЮрА=-
Заблокирован
Автор FAQ
27.01.2013, 16:52     Цепь из двух резисторов #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Михан, попробуй лучше код в стандарте Си
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
#include <stdio.h>
 
void PrintScheme(int iType);
void SolveScheme(int iType);
 
int main()
{
    int iMenu = 1;//флаг продолжения алгоритма
    char choise = 0;
    while(iMenu)
    {
        printf("Yuri Lozitski created\n");
        printf("\t***MENU***\n");
        printf("S - series connection\n");
        printf("P - parallell connect\n");
        printf("E - exit from program\n");
        printf("Your choise : ");
        scanf("%c", &choise);
        getchar();//Убираем \n от ввода
        switch(choise)
        {
        case 's':
        case 'S':
            PrintScheme(0);
            SolveScheme(0);
            break;
        case 'p':
        case 'P':
            PrintScheme(1);
            SolveScheme(1);
            break;
        case 'e':
        case 'E':
            iMenu = 0;
            break;
        default:
            printf("Unsupported key pressed\n");
            break;
        }       
    }
    return 0;
}
 
void PrintScheme(int iType)
{
    char szType1[] = 
        "   R1       R2   \n"
        "  ____     ____  \n"
        "-|____|-*-|____|-\n"
        "                 \n"
        "series connection\n"
        "                 \n"
        "   Re = R1 + R2  \n";
 
    char szType2[] =
        "       |        \n"
        "    ---*---     \n"
        "    |     |     \n"
        "   ```   ```    \n"
        "   | |   | |    \n"
        "R1 | | R2| |    \n"
        "   |_|   |_|    \n"
        "    |     |     \n"
        "    ---*---     \n"
        "       |        \n"
        "                \n"
        "parallel connect\n"
        "                \n"
        "Re=R1*R2/(R1+R2)\n";
    if(iType)
        printf("%s", szType2);
    else
        printf("%s", szType1);
}
 
void SolveScheme(int iType)
{
    double R1 = 0;
    double R2 = 0;
    double Re = 0;
    int iBad  = 0;
    if(printf("R1 = ") && !scanf("%lf", &R1) || getchar() != '\n')
        iBad = printf("Incorrect input\n");
    else
    if(printf("R2 = ") && !scanf("%lf", &R2) || getchar() != '\n')
        iBad = printf("Incorrect input\n");
    else
    if(R1 == 0 && R2 == 0)
        printf("Both resistance == 0!\n");
    else
    {
        if(iType)
            Re = R1*R2 / (R1 + R2);
        else
            Re = R1 + R2;
        printf("Re= %lf\n", Re);
    }
    //Очистка буффера в случае некорректного ввода
    char chr = 0;
    while(iBad)
    {
        chr = getchar();
        if(chr == '\n')
            iBad = 0;
    }
}
Цитата Сообщение от Михан Посмотреть сообщение
getch( );
- эта функция, как и
Цитата Сообщение от Михан Посмотреть сообщение
include <conio.h>
вне стандарта
Миниатюры
Цепь из двух резисторов  
-=ЮрА=-
27.01.2013, 16:54
  #5

Не по теме:

Цитата Сообщение от Михан Посмотреть сообщение
scanf (" %_f", &p);
- на сколько я знаю пробелы междусимволом % в спецификаторах формата printf/scanf и сходных функциях НЕДОПУСТИМЫ!

Михан
 Аватар для Михан
8 / 8 / 1
Регистрация: 05.11.2009
Сообщений: 74
27.01.2013, 19:04  [ТС]     Цепь из двух резисторов #6
Всем большое человеческое спасибо. Все заработало.
Специально для будущих поколений вопрошающих что делать... привожу последний(100% работающий вариант)
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
# include <stdio.h> 
# include <conio.h>
int main ( )
{
    float a,b,p; //1резстор , 2 резистор, сопративление, форма цепи
    int c;
       printf ("Vvedite 1 esli cep posledovatelnaya, ili 2 esli cep parallelnaya");
    scanf ("%d", &c);
       printf ("Vvedite v odnoi stroke soprotivlenie oboih rezistorov");
    scanf ("%f%f", &a, &b);
    if ( c == 1)
    {
        p = a + b;
        printf (" soprotivlenie cepi iz dvuh  posledovatelnyh rezistorov  %f, %f " , a, b );
        printf (" ravno % 5.2f\n", p);
    
     }
    else {
                p = 1/a + 1/b;
        printf (" soprotivlenie cepi iz dvuh  parallelnyh rezistorov   %f, %f " , a, b );
        printf (" ravno % 5.2f\n", p);
          }
    getch( );
    return 0;
}
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
28.01.2013, 22:38     Цепь из двух резисторов #7
-=ЮрА=-, а как переделать на C++???? Я начал переделавать, но запнулся:
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
#include <iostream>
#include <string>
#include <iomanip>
void PrintScheme(int iType);
void SolveScheme(int iType);
using namespace std;
int main()
{
    int iMenu = 1;//флаг продолжения алгоритма
    char choise = 0;
    while(iMenu)
    {
        cout<<"Yuri Lozitski created\n";
        cout<<"\t***MENU***\n";
        cout<<"S - series connection\n";
        cout<<"P - parallell connect\n";
        cout<<"E - exit from program\n";
        cout<<"Your choise : ";
        cin>>choise;
        cin.get() != '\n';//Убираем \n от ввода
        switch(choise)
        {
        case 's':
        case 'S':
            PrintScheme(0);
            SolveScheme(0);
            break;
        case 'p':
        case 'P':
            PrintScheme(1);
            SolveScheme(1);
            break;
        case 'e':
        case 'E':
            iMenu = 0;
            break;
        default:
            cout<<"Unsupported key pressed\n";
            break;
        }       
    }
    return 0;
}
 
void PrintScheme(int iType)
{
    char szType1[] = 
        "   R1       R2   \n"
        "  ____     ____  \n"
        "-|____|-*-|____|-\n"
        "                 \n"
        "series connection\n"
        "                 \n"
        "   Re = R1 + R2  \n";
 
    char szType2[] =
        "       |        \n"
        "    ---*---     \n"
        "    |     |     \n"
        "   ```   ```    \n"
        "   | |   | |    \n"
        "R1 | | R2| |    \n"
        "   |_|   |_|    \n"
        "    |     |     \n"
        "    ---*---     \n"
        "       |        \n"
        "                \n"
        "parallel connect\n"
        "                \n"
        "Re=R1*R2/(R1+R2)\n";
    if(iType)
        cout<<szType2;
    else
        cout<<szType1;
}
 
void SolveScheme(int iType)
{
    double R1 = 0;
    double R2 = 0;
    double Re = 0;
    int iBad  = 0;
    if(cout<<"R1 = " && (!cin>>R1) || cin.get() != '\n') //Вот здесь я запнулся
        iBad = printf("Incorrect input\n");
    else
    if(printf("R2 = ") && !scanf("%lf", &R2) || getchar() != '\n')
        iBad = printf("Incorrect input\n");
    else
    if(R1 == 0 && R2 == 0)
        printf("Both resistance == 0!\n");
    else
    {
        if(iType)
            Re = R1*R2 / (R1 + R2);
        else
            Re = R1 + R2;
        printf("Re= %lf\n", Re);
    }
    //Очистка буффера в случае некорректного ввода
    char chr = 0;
    while(iBad)
    {
        chr = getchar();
        if(chr == '\n')
            iBad = 0;
    }
}
Помоги пожалуйста, заранее огромное спасибо!!!!!!
-=ЮрА=-
Заблокирован
Автор FAQ
29.01.2013, 02:32     Цепь из двух резисторов #8
Цитата Сообщение от isaak Посмотреть сообщение
-=ЮрА=-, а как переделать на C++????
Вот почти ворд-ту-ворд того что вверху на плюсах
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
#include <iostream>
using namespace std;
 
void PrintScheme(int iType);
void SolveScheme(int iType);
 
int main()
{
    int iMenu = 1;//флаг продолжения алгоритма
    char choise = 0;
    while(iMenu)
    {
        cout<<"Yuri Lozitski created\n";
        cout<<"\t***MENU***\n";
        cout<<"S - series connection\n";
        cout<<"P - parallell connect\n";
        cout<<"E - exit from program\n";
        cout<<"Your choise : ";
        cin>>choise;
        cin.sync();//Тут лучше убиарть вообще всё лишнее из буффера благо С++ позволяет
        switch(choise)
        {
        case 's':
        case 'S':
            PrintScheme(0);
            SolveScheme(0);
            break;
        case 'p':
        case 'P':
            PrintScheme(1);
            SolveScheme(1);
            break;
        case 'e':
        case 'E':
            iMenu = 0;
            break;
        default:
            cout<<"Unsupported key pressed\n";
            break;
        }   
    }
    return 0;
}
 
void PrintScheme(int iType)
{
    char szType1[] = 
        "   R1       R2   \n"
        "  ____     ____  \n"
        "-|____|-*-|____|-\n"
        "                 \n"
        "series connection\n"
        "                 \n"
        "   Re = R1 + R2  \n";
 
    char szType2[] =
        "       |        \n"
        "    ---*---     \n"
        "    |     |     \n"
        "   ```   ```    \n"
        "   | |   | |    \n"
        "R1 | |   | | R2 \n"
        "   |_|   |_|    \n"
        "    |     |     \n"
        "    ---*---     \n"
        "       |        \n"
        "                \n"
        "parallel connect\n"
        "                \n"
        "Re=R1*R2/(R1+R2)\n";
    if(iType)
        cout<<szType2;
    else
        cout<<szType1;
}
 
void SolveScheme(int iType)
{
    double R1 = 0;
    double R2 = 0;
    double Re = 0;
    bool iBad  = false;
    if(iBad = ((cout<<"R1 = ") && !(cin>>R1) || cin.get() != '\n'))//iBad надо переставить
        cout<<"Incorrect input\n";
    else
    if(iBad = ((cout<<"R2 = ") && !(cin>>R2) || cin.get() != '\n'))
        cout<<"Incorrect input\n";
    else
    if(R1 == 0 && R2 == 0)
        cout<<"Both resistance == 0!\n";
    else
    {
        if(iType)
            Re = R1*R2 / (R1 + R2);
        else
            Re = R1 + R2;
        cout<<"Re= "<<Re<<endl;
    }
    if(iBad)
    {
        cin.clear();//Сброс флагов ошибок
        cin.sync();//Очистка буффера в случае некорректного ввода
    }
}
Миниатюры
Цепь из двух резисторов  
-=ЮрА=-
Заблокирован
Автор FAQ
29.01.2013, 02:34     Цепь из двух резисторов #9
PS:По поводу этого
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
bool iBad *= false;
* * if(iBad = ((cout<<"R1 = ") && !(cin>>R1) || cin.get() != '\n'))//iBad надо переставить
* * * * cout<<"Incorrect input\n";
- это всё в плюсах можно сделать через функцию-шаблон, рекомендую прочесть Безопасный ввод через функцию-шаблон
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,410
29.01.2013, 03:37     Цепь из двух резисторов #10
Если без шаблонов и надо по-быстрому проверить на корректность считывания int
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
int main()
{
    int x;
    bool correct;
    do
    {
        correct = true;
        std::cout << "Enter x: ";
        std::cin >> x;
        if (std::cin.fail())
        {
            correct = false;
            std::cin.clear();
            std::cin.sync();
            std::cout << "Incorrect, expected int\n";
        }
    } while (!correct);
}
Добавлено через 2 минуты
Есть еще вариант: считывать в массив char (или std::strng), а потом преобразовывать в int, если все элементы массива - цифры (atoi).
C
1
2
3
4
5
6
7
8
9
int isDigit(const char *str)
{
    size_t i, len = strlen(str);
    if (len == 0) return 0;
    for (i = 0; i < len; i++)
        if (!isdigit(str[i]))
            return 0;
    return 1;
}
В случае с С++ возвращаемый тип будет bool.

P.S. на первенство не претендую, как варианты.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2013, 22:31     Цепь из двух резисторов
Еще ссылки по теме:

Вычислить сопротивление цепи, состоящей из двух резисторов C++
Вычислить сопротивление цепи, состоящей из трех резисторов C++
C++ Найти сопротивление трех резисторов подключенных параллельно

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

Или воспользуйтесь поиском по форуму:
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
29.01.2013, 22:31     Цепь из двух резисторов #11
-=ЮрА=- огромное спасибо, как всегда на высоте.
Yandex
Объявления
29.01.2013, 22:31     Цепь из двух резисторов
Ответ Создать тему
Опции темы

Текущее время: 13:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru