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

Полная форма разветвления - C++

Восстановить пароль Регистрация
 
Astrox
 Аватар для Astrox
12 / 12 / 1
Регистрация: 20.12.2008
Сообщений: 73
13.07.2010, 13:36     Полная форма разветвления #1
Оплата работ зависит от типа работы: "а", "b", "c" и вычисляется по неким формулам записаным в коде.
Для каждого типа работы есть процент налога 10%, 15%, 20% для "а", "b", "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
/* N4(V13_1) */
#include<iostream.h>
#include<math.h>
#include<conio.h>
void main()
    {
    clrscr();
    float x,y,f,z; char c[1];
    cout<<"Введите тип работы (\"a\",\"b\" или \"c\"): ";
    cin>>c;
    if(c=="a") {y=50+(abs(cos(pow(13,2))-0.51)*sin(3*13-4)-4.44);
    cout<<"Тип работы-"<<c<<"\nЗаработная плата: "<<y;
    x=(y/100)*10;
    cout<<"\nРазмер налога 10%-"<<x;
    z=y-x;
    cout<<"\nСумма к выдаче: "<<z;}
 
    else
        if(c=="b") {y=100+cos(2.1*13)*sin(abs(13))/0.15-5.8;
        cout<<"\nТип работы-"<<c<<"\nЗаработная плата: "<<y;
        x=(y/100)*15;
        cout<<"\nРазмер налога 15%-"<<x;
        z=y-x;
        cout<<"\nСумма к выдаче: "<<z;}
 
        else
            y=135+abs(cos(2*pow(13,3))+2*sin(13/1.2-3.4))+10.51*cos(abs(3*13));
            cout<<"\nТип работы-"<<c<<"\nЗаработная плата: "<<y;
            x=(y/100)*20;
            cout<<"\nРазмер налога 20%-"<<x;
            z=y-x;
            cout<<"\nСумма к выдаче: "<<z;
        getch();
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2010, 13:36     Полная форма разветвления
Посмотрите здесь:

Разветвления C++
тема Разветвления. C++
C++ Разветвления и матрицы
C++ Алгоритмы разветвления
задача на сочетание цикла и разветвления C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
13.07.2010, 13:55     Полная форма разветвления #2
Синтаксис оператора if такой:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if(expression1)
{
    operation1;
    operation2;
    //..
} else if(expression2)
{
    operation1;
    operation2;
    //...
}
//...
else
{
    operation1;
    operation2;
    //...
}
Фигурные скобки можно опускать в том случае, если блок состоит из одной команды!

Добавлено через 1 минуту
Например:
C
1
2
3
4
5
6
7
8
if(expression)
    operation1;//Без фигурных скобок
else
{
    //С фигурными скобками
    operation2;
    operation3;
}
Astrox
 Аватар для Astrox
12 / 12 / 1
Регистрация: 20.12.2008
Сообщений: 73
13.07.2010, 14:02  [ТС]     Полная форма разветвления #3
Ну в конце там упустил фигурные скобки, но и с ними пробывал, не помогло...
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
13.07.2010, 14:14     Полная форма разветвления #4
а если так
C
1
2
3
4
5
6
//код
char c;
cout<<"Введите тип работы (\"a\",\"b\" или \"c\"): ";
cin>>c;
if(c=='a')
//код
и постоянно делать проверку символа с символом, а не массива со строкой
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
13.07.2010, 14:24     Полная форма разветвления #5
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
#include <iostream>
#include <cmath>
 
#define PRINT(A) std::cout << #A << " = " << A << std::endl;
 
int main()
{
    std::cout << "Input the type of job (\'a\', \'b\', \'c\'):" << std::endl;
    char type;
    std::cin >> type;
    type=tolower(type);
    if((type<'a')||(type>'c'))
    {
        std::cout << "An unexpected character found. Bye-bye!!!" << std::endl;
        system("pause");
        exit(EXIT_FAILURE);
    }
    double cash, tax, profit, taxPercentage;
    switch(type)
    {
    case 'a':
        cash=50+(abs(cos(pow(13.0, 2))-0.51)*sin(3.0*13-4)-4.44);
        taxPercentage=0.1;
        break;
    case 'b':
        cash=100+cos(2.1*13)*sin(abs(13.0))/0.15-5.8;
        taxPercentage=0.15;
        break;
    default:
        cash=135+abs(cos(2*pow(13.0, 3))+2*sin(13/1.2-3.4))+10.51*cos(abs(3.0*13));
        taxPercentage=0.2;
    }
    tax=cash*taxPercentage;
    profit=cash-tax;
    PRINT(type);
    PRINT(cash);
    PRINT(taxPercentage);
    PRINT(tax);
    PRINT(profit);
    system("pause");
    return EXIT_SUCCESS;
}
Astrox
 Аватар для Astrox
12 / 12 / 1
Регистрация: 20.12.2008
Сообщений: 73
13.07.2010, 14:24  [ТС]     Полная форма разветвления #6
M128K145, Помогло спасибо
Nameless One, спасибо за старания, но мне нужно было именно полным разветвлением, не "switch"
Yandex
Объявления
13.07.2010, 14:24     Полная форма разветвления
Ответ Создать тему
Опции темы

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