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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.89
Наташа С.
0 / 0 / 0
Регистрация: 25.10.2009
Сообщений: 8
#1

Ветвления - C++

25.10.2009, 16:43. Просмотров 2268. Ответов 10
Метки нет (Все метки)

Всем привет! Задали задачку :
"С помощью операторов ветвлений и присваивания записать фрагмент программы, вычисляющий значение переменной n по следующему правилу:
n :=
[ n+1, при i=4,
[ a+b, при i=1 или i=7 или i=9,
[ a-b в остальных случаях

Народ, надо написать прогу с помощью оператора switch... Я писала с помощью if, сказали через switch пиши... Все заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2009, 16:43     Ветвления
Посмотрите здесь:

C++ Операторы ветвления
операторы ветвления C++
Циклы и ветвления C++
C++ Ветвления
Операторы ветвления С++ C++
Основы ветвления C++
Алгоритмы ветвления C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
.::.DIMA.::.
142 / 142 / 4
Регистрация: 26.10.2008
Сообщений: 782
25.10.2009, 16:47     Ветвления #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
switch (i)
{
    switch (i)
    {
    case 4:
        n++;
        break;
    case 1:
        n = a + b;
        break;
    case 7:
        n = a + b;
        break;
    case 7:
        n = a + b;
        break;
    default:
        n = a - b;
    }
Evg
Эксперт CАвтор FAQ
17304 / 5552 / 347
Регистрация: 30.03.2009
Сообщений: 15,107
Записей в блоге: 26
25.10.2009, 16:50     Ветвления #3
qwert, в Switch'е можно склеивать альтернативы по разным ключам

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        switch (i)
        {
        case 4:
                n = n + 1; //  <--- при такой записи у преподавателей будет меньше вопросов
                break;
        case 1:
        case 7:
        case 9:
                n = a + b;
                break;
        default:
                n = a - b;
                break; // <--- влепил ещё это, по той же причине
        }
.::.DIMA.::.
142 / 142 / 4
Регистрация: 26.10.2008
Сообщений: 782
25.10.2009, 16:53     Ветвления #4
Я знаю, я по той же причине, что и n = n + 1 так сделал.
Evg
Эксперт CАвтор FAQ
17304 / 5552 / 347
Регистрация: 30.03.2009
Сообщений: 15,107
Записей в блоге: 26
25.10.2009, 16:55     Ветвления #5
Цитата Сообщение от qwert Посмотреть сообщение
Я знаю, я по той же причине, что и n = n + 1 так сделал.
По опыту именно к дублированию case'ов в данной ситуации неизбежно прикопаются
.::.DIMA.::.
142 / 142 / 4
Регистрация: 26.10.2008
Сообщений: 782
25.10.2009, 16:57     Ветвления #6
Так прикопаться ведь можно к чему угодно, и к break после default.
Наташа С.
0 / 0 / 0
Регистрация: 25.10.2009
Сообщений: 8
25.10.2009, 17:08  [ТС]     Ветвления #7
qwert, спасибо, но я неного не поняла :

у меня есть файл fp.out, туда после работы проги записывается значение n

вот код программы исправьте пожалуйста...

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
#include <stdio.h>
 
int n, i, a, b;
 
switch(i);
 
FILE *fp.out;
 
int main(void)
{
fp.out = fopen("fp.out","w");
fprintf(fp,"n=%d",n);
switch (i)
{
        switch (i)
        {
        case 4:
                n++;
                break;
        case 1:
                n = a + b;
                break;
        case 7:
                n = a + b;
                break;
        case 7:
                n = a + b;
                break;
        default:
                n = a - b;
        }
return 0;
 
}
.::.DIMA.::.
142 / 142 / 4
Регистрация: 26.10.2008
Сообщений: 782
25.10.2009, 17:16     Ветвления #8
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
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
    setlocale (LC_ALL, ".1251");
    int n, i, a, b;
    cout << "Введите i, a, b\n";
    cin >> i >> a >> b;
    FILE * f;
    if (!(f = fopen ("fp.txt", "wt")))
    {
        cout << "Error\n";
        return 1;
    }
    switch (i)
    {
    case 4:
        n = n + 1;
        break;
    case 1:
        n = a + b;
        break;
    case 7:
        n = a + b;
        break;
    case 9:
        n = a + b;
        break;
    default:
        n = a - b;
        break;
    }
    fprintf (f, "%d", n);
    fclose (f);
    return 0; 
}
Evg
Эксперт CАвтор FAQ
17304 / 5552 / 347
Регистрация: 30.03.2009
Сообщений: 15,107
Записей в блоге: 26
25.10.2009, 17:20     Ветвления #9
Цитата Сообщение от qwert Посмотреть сообщение
Так прикопаться ведь можно к чему угодно, и к break после default.
Просто поводы для прикапывания у препов более-менее среднестатистические
.::.DIMA.::.
142 / 142 / 4
Регистрация: 26.10.2008
Сообщений: 782
25.10.2009, 17:21     Ветвления #10
Может быть.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2009, 17:39     Ветвления
Еще ссылки по теме:

C++ оператор ветвления
C++ С++ . «Ветвления» . Функции
C++ ВЕТВЛЕНИЯ В C++
Оператор ветвления C++
C++ Многоуровневые ветвления

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

Или воспользуйтесь поиском по форуму:
Наташа С.
0 / 0 / 0
Регистрация: 25.10.2009
Сообщений: 8
25.10.2009, 17:39  [ТС]     Ветвления #11
Всем спасибо!
Yandex
Объявления
25.10.2009, 17:39     Ветвления
Ответ Создать тему
Опции темы

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