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

Цикл if else

26.12.2021, 02:44. Показов 679. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Часть кода, где m должна принимать значение в зависимости от того, какое значение имеет month. Но на выходе всегда получаю m=0. Подскажите в чём ошибка

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 "windows.h"
#include "stdio.h"
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
int day = 23, month = 5, m, P;
char Out[8];
 
 int main()
 {
        if ((month == 1) || (month == 10))
    {
        m = 1;
    }
    else if (month == 5)
    {
        m = 2;
    }
    else if (month == 8)
    {
        m = 3;
    }
    else if ((month == 2) || (month == 3) || (month == 11))
    {
        m = 4;
    }
    else if (month == 6)
    {
        m = 5;
    }
    else if ((month == 12) || (month == 9))
    {
        m = 6;
    }
    else
    {
        m = 0;
    }
 }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.12.2021, 02:44
Ответы с готовыми решениями:

Создать программу по всем 3 видам циклов...цикл с параметром,цикл с условием,цикл,и цикл с предусловием...
Найти сумму чисел 1 в квадрате до 10 c квадрате...операцию возведению в степень не использовать учесть особенности получения квадратного...

Написать цикл for, который выводит на экран в столбец числа от 0.3 до 2.7 с шагом 0.2. Переписать этот цикл в цикл while
Пожалуйста помогите с задачами 1.Написать цикл for, который выводит на экран в столбец числа от 0.3 до 2.7 с шагом 0.2. Переписать этот...

Вычислить и вывести сумму чётных целых чисел в интервале от 1 до n: 1) цикл «ДО» 2) цикл «ПОКА» 3) цикл «ДЛЯ»
Вычислить и вывести сумму чётных целых чисел в интервале от 1 до n: 1. цикл «ДО» 2. цикл «ПОКА» 3. цикл «ДЛЯ»

14
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6167 / 2860 / 1042
Регистрация: 01.06.2021
Сообщений: 10,462
26.12.2021, 04:11
Allena, я получаю m = 2. С вашей функцией main() все норм. Единственное, перед проверкой я удалял WinMain.
1
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12933 / 6801 / 1820
Регистрация: 18.10.2014
Сообщений: 17,213
26.12.2021, 08:22
Цитата Сообщение от Allena Посмотреть сообщение
Но на выходе всегда получаю m=0.
На каком "выходе"? Где в этом коде "выход"?

Цитата Сообщение от Allena Посмотреть сообщение
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
Зачем это здесь?
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
26.12.2021, 13:30
Такой код не стоит писать, очень неприглядно выглядит.
Есть же switch
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int main()
{
    int month,m;
    cin>>month;
    switch(month)
    {
     case 1:m=1;break;
     case 2:m=4;break;
     case 3:m=4;break;
     case 4:m=0;break;
     case 5:m=2;break;
     case 6:m=5;break;
     case 7:m=0;break;
     case 8:m=3;break;
     case 9:m=6;break;
     case 10:m=1;break;
     case 11:m=4;break;
     case 12:m=6;break;
     default:m=0;
     }
}
А еще лучше - через массив
C++
1
2
3
4
5
6
7
8
int main()
{
    unsigned int month,m;
    int tbl[12]={1,4,4,0,2,5,0,3,6,1,4,6};
    cin>>month;
    if( month>=12)m=0;
    else m=tbl[month];
}
1
0 / 0 / 0
Регистрация: 25.12.2021
Сообщений: 9
26.12.2021, 14:29  [ТС]
После того, как я привожу функцию, мне нужно её как-то вызывать для того чтобы она работала? Или достаточно просто убрать WinMain и запустить тот код, который я привожу?
Извините за глупый вопрос, но пишу что то на с++ впервые
0
Злостный нарушитель
 Аватар для Verevkin
10283 / 5707 / 1267
Регистрация: 12.03.2015
Сообщений: 26,435
26.12.2021, 14:46
Цитата Сообщение от Allena Посмотреть сообщение
Извините за глупый вопрос, но пишу что то на с++ впервые
Покаж оригинал условия задачи.
0
0 / 0 / 0
Регистрация: 25.12.2021
Сообщений: 9
26.12.2021, 14:54  [ТС]
Вообще это должна быть программа на С++ с ассемблерной вставкой, вычисляющая день недели по дате в 2005 году.
Чтобы упростить вычисления в ассемблерной вставке была найдена максимально простая формула для решения задачи: день недели = (день + код месяца + код года) % 7,
где код месяца:
1 — январь, октябрь;
2 — май;
3 — август;
4 — февраль, март, ноябрь;
5 — июнь;
6 — декабрь, сентябрь;
0 — апрель, июль.
0
Злостный нарушитель
 Аватар для Verevkin
10283 / 5707 / 1267
Регистрация: 12.03.2015
Сообщений: 26,435
26.12.2021, 15:08
Цитата Сообщение от Allena Посмотреть сообщение
Вообще это должна быть программа на С++ с ассемблерной вставкой
А где она (вставка)?
0
0 / 0 / 0
Регистрация: 25.12.2021
Сообщений: 9
26.12.2021, 15:19  [ТС]
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
#include "windows.h"
#include "stdio.h"
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
int day = 23, month = 5, m, P;
char Out[8];
 
 int main()
 {
        if ((month == 1) || (month == 10))
    {
        m = 1;
    }
    else if (month == 5)
    {
        m = 2;
    }
    else if (month == 8)
    {
        m = 3;
    }
    else if ((month == 2) || (month == 3) || (month == 11))
    {
        m = 4;
    }
    else if (month == 6)
    {
        m = 5;
    }
    else if ((month == 12) || (month == 9))
    {
        m = 6;
    }
    else
    {
        m = 0;
    }
 }
 
int d = day;
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
_asm
{
          mov eax, d
          add eax, m
          add eax, 1
          mov ecx, 7
          xor edx, edx
          div ecx
          mov P, edx
}
sprintf_s(Out,"P = %d",P);
MessageBox(NULL,Out,"Результат",MB_OK);
return 1;
}
0
Злостный нарушитель
 Аватар для Verevkin
10283 / 5707 / 1267
Регистрация: 12.03.2015
Сообщений: 26,435
26.12.2021, 15:20
для затравки - вот тебе моя функция вычисления дня недели по дате:
C++
1
2
3
4
5
6
7
8
int get_dow(int Year, int Month, int Day)
{
  int a = (14 - Month) / 12;
  int y = Year - a;
  int m = Month + 12 * a - 2;
  int d = (7000 + (Day + y + y / 4 - y / 100 + y / 400 + (31 * m) / 12)) % 7;
  return d ? d : 7;
}
Будешь переводить на ассемблер?
0
Злостный нарушитель
 Аватар для Verevkin
10283 / 5707 / 1267
Регистрация: 12.03.2015
Сообщений: 26,435
26.12.2021, 15:28
Allena, я в ассемблере не копенгаген, но имхо, чото тут не то...
0
0 / 0 / 0
Регистрация: 25.12.2021
Сообщений: 9
26.12.2021, 15:41  [ТС]
Странно, что выводит результат 0. Я тоже в ассемблере не очень, но вставка точно правильная, без цикла на с++ проверяю - работает
div ecx - делит содержимое eax на ecx, частное попадает в eax, а остаток в edx
xor edx, edx - чистит edx, если при ранее идущих вычислениях туда что-то попало
0
Злостный нарушитель
 Аватар для Verevkin
10283 / 5707 / 1267
Регистрация: 12.03.2015
Сообщений: 26,435
26.12.2021, 15:50
Цитата Сообщение от Allena Посмотреть сообщение
div ecx - делит содержимое eax на ecx, частное попадает в eax, а остаток в edx
Я этого не знал. сорри.
0
0 / 0 / 0
Регистрация: 25.12.2021
Сообщений: 9
26.12.2021, 16:05  [ТС]
А в цикле перед ассемблером точно проблем, влияющих на решение нет?
0
Злостный нарушитель
 Аватар для Verevkin
10283 / 5707 / 1267
Регистрация: 12.03.2015
Сообщений: 26,435
26.12.2021, 16:11
Цитата Сообщение от Allena Посмотреть сообщение
А в цикле перед ассемблером точно проблем, влияющих на решение нет?
А где он?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.12.2021, 16:11
Помогаю со студенческими работами здесь

необходимо на паскале написать три программы ( цикл с параметром, цикл с постусловием и цикл с предусловием)
Помогите пожалуйста!!! необходимо на паскале написать три программы ( цикл с параметром, цикл с постусловием и цикл с предусловием). Очень...

необходимо на паскале написать три программы ( цикл с параметром, цикл с постусловием и цикл с предусловием)
Помогите пожалуйста!!! необходимо на паскале написать три программы ( цикл с параметром, цикл с постусловием и цикл с предусловием). Очень...

Цикл с предусловием, цикл с постусловием и цикл с параметром
Объясните пожалуйста как делать эти циклы. У меня не получается. Можете сделать как на фото, или на подобии. Заранее спасибо)

Начать вложенный цикл не с первого элемента и по условию вернуться в основной цикл
Добрый день. На самом деле, проблема чуть шире, чем в названии топика. Есть цикл, в котором идёт перебор массива. Внутри цикла есть...

Написать в турбо паскале, Цикл с параметром, Цикл, с постусловием, и с предусловием пожалуйста


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru