С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 37, средняя оценка - 4.81
Dimiona
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 24
#1

Cи++. Оператор switch. - C++

28.11.2009, 16:47. Просмотров 4703. Ответов 23
Метки нет (Все метки)

У меня такой вопрос. Есть задача: с 1 января 1990 года по некоторый день прошло n месяцев, определить название месяца текущего. Ну как через case определить, если прошло от 1-11 месяцев это понятно. А не подскажите какой оператор и как нужно использовать, если прошло больше 11 месяцев?...пожалуйста((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2009, 16:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Cи++. Оператор switch. (C++):

Оператор switch - C++
Дан номер телевизионного канала. Вывести на экран наиболее популярные программы этого канала

Оператор switch и while - C++
Для целого числа к от 1 до 99 напечатать фразу «Мне к лет», учитывая при этом, что при некоторых значениях к слово «лет» надо заменить...

Оператор switch - C++
Помогите переправить задачу на оператор switch, пож-та. Я написал с предусловием, но как быть со switch'ом не знаю. Вот код с...

Оператор switch - C++
Возникла проблема. Не хочет высчитываться "v". Что не так? #include <iostream.h> #include <math.h> main () { int k; double...

оператор switch - C++
Задача весьма проста, необходима для тренировки. Я должен использовать оператор свитч таким образом, что после ввода определенного символа...

Оператор Switch - C++
Нужно помощь с этим оператором может быть где-то направильно написал ??? со всеми функциями ответ выходет не верно, "res" - не меняет свое...

23
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
28.11.2009, 16:50 #2
вложеный switch например после 11 case.
P.s Можно и др варианты
0
Dimiona
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 24
28.11.2009, 16:55  [ТС] #3
А если прошло более 20 месяцев..((..не можешь подсказать другие варианты..может можно через циклы?..только я не понимаю как(
0
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
28.11.2009, 17:00 #4
рекурсия на 12 месяцев .Если прошло 20 то ето то же что и 8 месяц в году.
0
valeriikozlov
Эксперт С++
4676 / 2502 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
28.11.2009, 17:02 #5
Dimiona, N%12
где N общее кол-во месяцев. Если будет получаться 0 он же является 12 месяцем (т.е. в Вашем случае январем)
0
Dimiona
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 24
28.11.2009, 17:09  [ТС] #6
Да, спасибо. Я поняла, что надо использовать остаток от деления. А как сделать так что бы он снова начал пересчитывать, если больше 11. Как снова обратиться к case?
0
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
28.11.2009, 17:11 #7
default:func();
где func ваш switch;
0
sh4d°_°ff
ex-close383
1256 / 279 / 19
Регистрация: 31.10.2009
Сообщений: 1,430
28.11.2009, 17:15 #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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int n = StrToInt(Edit1->Text);
if (n%12==0)
{
Edit2->Text="dek";
}
else if (n%11==0)
{
Edit2->Text="nov";
}
else if (n%10==0)
{
Edit2->Text="oct";
}
else if (n%9==0)
{
Edit2->Text="sep";
}
else if (n%8==0)
{
Edit2->Text="aug";
}
else if (n%7==0)
{
Edit2->Text="jul";
}
else if (n%6==0)
{
Edit2->Text="jun";
}
else if (n%5==0)
{
Edit2->Text="may";
}
else if (n%4==0)
{
Edit2->Text="apr";
}
else if (n%3==0)
{
Edit2->Text="mar";
}
else if (n%2==0)
{
Edit2->Text="feb";
}
else if (n%1==0)
{
Edit2->Text="jan";
}
}
сам пока не вкурю насколько правильно... но кажись то что надо

Добавлено через 1 минуту
короче по принципу остаток от деления)))))

Не по теме:


з.ы: фигасе напостили уже))))

0
Darky
Быдлокодер
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
28.11.2009, 17:18 #9
sh4d°_°ff, Забавный у Вас код.
Зачем каждый раз делать else, если можно поставить одинарное условие?
И зачем каждое условие заключать в { }?
Так ведь гораздо компактнее смотрится
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
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int n = StrToInt(Edit1->Text);
if (n%12==0)
  Edit2->Text="dek";
if (n%11==0)
  Edit2->Text="nov";
if (n%10==0)
  Edit2->Text="oct";
if (n%9==0)
  Edit2->Text="sep";
if (n%8==0)
  Edit2->Text="aug";
if (n%7==0)
  Edit2->Text="jul";
if (n%6==0)
  Edit2->Text="jun";
if (n%5==0)
  Edit2->Text="may";
if (n%4==0)
  Edit2->Text="apr";
if (n%3==0)
  Edit2->Text="mar";
if (n%2==0)
  Edit2->Text="feb";
if (n%1==0)
  Edit2->Text="jan";
}
}
0
Dimiona
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 24
28.11.2009, 17:21  [ТС] #10
Oy..нас так не учили.
Можно же вот так? Вроде работает.
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 <stdio.h>
#include <stdlib.h>
int main()
{
int x;
puts("Vvedite kol-vo proshedshix meciacev \n");
scanf ("%d",&x);
switch(x%12)
{
case 0:
{puts(" janvar \n");  break;}
case 1:
{puts (" fevral \n");  break;}
case 2:
{puts (" mart \n");  break;}
case 3:
{puts (" aprel \n");  break;}
case 4:
{puts(" mai \n");  break;}
case 5:
{puts(" iun \n");  break;}
case 6:
{puts(" iul \n");  break;}
case 7:
{puts(" avgust \n");  break;}
case 8:
{puts(" sentiabr \n");  break;}
case 9:
{puts(" oktiabr \n");  break;}
case 10:
{puts(" noiabr \n");  break;}
case 11:
{puts(" dekabr \n");  break;}
}
system("PAUSE");
return 0;
}
0
Том Ардер
Модератор
Эксперт по математике/физике
3782 / 2394 / 305
Регистрация: 15.06.2009
Сообщений: 4,345
28.11.2009, 17:21 #11
Здесь обязательно нужен switch?

C++
1
2
3
char *months[] = {"jan", "feb", ..., "dec"};
....
curr_month = months[n%12];
0
sh4d°_°ff
ex-close383
1256 / 279 / 19
Регистрация: 31.10.2009
Сообщений: 1,430
28.11.2009, 17:22 #12
во первых господин (госпожа?) Darky, скомпилируйте то что сами сейчас предложили и отпишитесь почему у вас ошибка, а во вторых, я ставлю скобочки потому что мне так хочется и мне так удобнее.
0
Darky
Быдлокодер
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
28.11.2009, 17:26 #13
sh4d°_°ff, Я - мужского пола.
Мой билдер 6 не компилит, ссылаясь на странную штуку 'edit2' и ругаясь на надписи рядом с void
А в остальном,как ни странно, ошибок нет.
0
sh4d°_°ff
ex-close383
1256 / 279 / 19
Регистрация: 31.10.2009
Сообщений: 1,430
28.11.2009, 17:26 #14
омг... это "простой" с++... не формы... как я его не люблю((( чтож все же вам лучше ИМО использовать else if че с свичем химичить... мона конечно перебор сделать... но это больше кода и фигня ИМО...
0
Dimiona
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 24
28.11.2009, 17:27  [ТС] #15
Да. У меня лаба именно на переключатель switch.
0
28.11.2009, 17:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2009, 17:27
Привет! Вот еще темы с ответами:

Оператор switch C++ - C++
Вместо вывода на экран отрицательных значений, работает default. Так же при вводе двухзначного числа выводит первую цифру этого же числа....

Оператор switch C++ - C++
Помогите с кодом, пожалуйста. На скрине задание.

Оператор switch - C++
Ниже приведены три примера (1 и 2 работают, а 3 почему-то не работает). Говорит, что пропуск инициализации? Почему тогда 1 и 2 работают, а...

оператор switch - C++
С++ начала учить недавно, и многое не понимаю... задачи решаю только по-аналогии.. Задача Составить структурную схему алгоритма и...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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