Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/32: Рейтинг темы: голосов - 32, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 24

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

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

Студворк — интернет-сервис помощи студентам
У меня такой вопрос. Есть задача: с 1 января 1990 года по некоторый день прошло n месяцев, определить название месяца текущего. Ну как через case определить, если прошло от 1-11 месяцев это понятно. А не подскажите какой оператор и как нужно использовать, если прошло больше 11 месяцев?...пожалуйста((
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.11.2009, 16:47
Ответы с готовыми решениями:

Оператор switch
Зависит ли a) объектный код от порядка меток case и default в данном операторе? б) если ответ на первый вопрос положителен, то тогда...

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

С++.Оператор switch.
Не могу избавиться от ошибки в программном коде. #include <iostream> #include <math.h> #include <conio.h> using namespace...

23
 Аватар для Sekt
159 / 156 / 47
Регистрация: 29.04.2009
Сообщений: 636
28.11.2009, 16:50
вложеный switch например после 11 case.
P.s Можно и др варианты
0
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 24
28.11.2009, 16:55  [ТС]
А если прошло более 20 месяцев..((..не можешь подсказать другие варианты..может можно через циклы?..только я не понимаю как(
0
 Аватар для Sekt
159 / 156 / 47
Регистрация: 29.04.2009
Сообщений: 636
28.11.2009, 17:00
рекурсия на 12 месяцев .Если прошло 20 то ето то же что и 8 месяц в году.
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
28.11.2009, 17:02
Dimiona, N%12
где N общее кол-во месяцев. Если будет получаться 0 он же является 12 месяцем (т.е. в Вашем случае январем)
0
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 24
28.11.2009, 17:09  [ТС]
Да, спасибо. Я поняла, что надо использовать остаток от деления. А как сделать так что бы он снова начал пересчитывать, если больше 11. Как снова обратиться к case?
0
 Аватар для Sekt
159 / 156 / 47
Регистрация: 29.04.2009
Сообщений: 636
28.11.2009, 17:11
default:func();
где func ваш switch;
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
28.11.2009, 17: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
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
512 / 298 / 85
Регистрация: 22.11.2009
Сообщений: 892
28.11.2009, 17:18
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
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 24
28.11.2009, 17:21  [ТС]
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
Эксперт по математике/физике
 Аватар для Том Ардер
4218 / 3418 / 396
Регистрация: 15.06.2009
Сообщений: 5,818
28.11.2009, 17:21
Здесь обязательно нужен switch?

C++
1
2
3
char *months[] = {"jan", "feb", ..., "dec"};
....
curr_month = months[n%12];
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
28.11.2009, 17:22
во первых господин (госпожа?) Darky, скомпилируйте то что сами сейчас предложили и отпишитесь почему у вас ошибка, а во вторых, я ставлю скобочки потому что мне так хочется и мне так удобнее.
0
Быдлокодер
 Аватар для Darky
512 / 298 / 85
Регистрация: 22.11.2009
Сообщений: 892
28.11.2009, 17:26
sh4d°_°ff, Я - мужского пола.
Мой билдер 6 не компилит, ссылаясь на странную штуку 'edit2' и ругаясь на надписи рядом с void
А в остальном,как ни странно, ошибок нет.
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
28.11.2009, 17:26
омг... это "простой" с++... не формы... как я его не люблю((( чтож все же вам лучше ИМО использовать else if че с свичем химичить... мона конечно перебор сделать... но это больше кода и фигня ИМО...
0
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 24
28.11.2009, 17:27  [ТС]
Да. У меня лаба именно на переключатель switch.
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
28.11.2009, 17:28
тогда обьясню, необходимо использовать именно else if т.к. в противном случае программа всегда будет выдавать последнее значение (а так же именно поэтомму я начинаю проверку с 12 до 1 а не с 1 до 12), т.к. любое число кратно 1.
0
Быдлокодер
 Аватар для Darky
512 / 298 / 85
Регистрация: 22.11.2009
Сообщений: 892
28.11.2009, 17:30
sh4d°_°ff, понял, спасибо за разъяснение!
0
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 24
28.11.2009, 17:33  [ТС]
Ну так она ж выдает правильный ответ. Сколько бы я не вводила. Или я Вас не понимаю

Добавлено через 1 минуту
Так правильно или нет?
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
28.11.2009, 17:43
)))) блин.. не знаю как через свич это решить... но можно немного схитрить посмотрите вот этот код))))):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int n = StrToInt(Edit1->Text);//ввод н
int k;
k=0;
for (int i=12; i>=1; i--)
{
k=n%i ;
if (k==0)
{
switch (i)
{
case 12: Edit2->Text="dec";//вывод н
break;
case 11: Edit2->Text="dec1";
break;
case 10: Edit2->Text="dec2";
break;
case 9: Edit2->Text="dec3";
break;//и так далее
}
i=0;
}
}
у себя проверил ваш код... вроде верно... я предполагал возможность одной ошибки, но видимо просто я туплю))))
1
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 24
28.11.2009, 17:53  [ТС]
Так то оно так. Только вот видимо си у нас примитивный преподают. И нет у нас эдит всяких..может я че не догоняю(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.11.2009, 17:53
Помогаю со студенческими работами здесь

Оператор switch
Сделать с помощью оператора switch: a*pow(x+7)-b когда x&lt;5 &amp;&amp; b!=0; (x-c*d)/a*x когда x&gt;5 &amp;&amp; b==0; x/c в других случаях. ...

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

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

оператор switch
КАк сделать чтобы при выборе неправильного ответа во втрой switch программа не в ходила int main(){ char v1; cout...

Оператор switch
Возникла проблема. Не хочет высчитываться &quot;v&quot;. Что не так? #include &lt;iostream.h&gt; #include &lt;math.h&gt; main () { int k; ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru