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

Название времени года по месяцу - C++

Восстановить пароль Регистрация
 
Naits
1 / 1 / 0
Регистрация: 08.09.2012
Сообщений: 35
09.09.2012, 21:54     Название времени года по месяцу #1
Помогите исправить, при любом исходе пишит, что загадываемый месяц - spring, где я не прав?
Миниатюры
Название времени года по месяцу  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2012, 21:54     Название времени года по месяцу
Посмотрите здесь:

Получение времени года по введенному пользователем месяцу C++
C++ Напишите программу, которая запрашивает у пользователя номер месяца и затем выводит соответствующее название времени года
Ввод номера года и его название по старояпонскому календарю C++
Определение времени года по месяцу C++
дан номер месяца (1-январь,2-февраль) Вывести название соответствующего времени года зима весна и т.д C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
09.09.2012, 22:03     Название времени года по месяцу #2
Писать надо так:
C++
1
i==3 || i==5 || .....
так как у тебя это не верно. Посмотри в книгах или в интернете, правильную конструкцию условий if else
Naits
1 / 1 / 0
Регистрация: 08.09.2012
Сообщений: 35
09.09.2012, 22:08  [ТС]     Название времени года по месяцу #3
Да, я понял уже, что в этом ошибка, но как тогда исправить? Мне что придётся вкладывать цикл 12 раз для каждого месяца? Или как-то можно попроще?
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
09.09.2012, 22:13     Название времени года по месяцу #4
Можно сделать через switch
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
#include <iostream>
using namespace std;
int main()
{
    setlocale(0,"rus");
    int n;
    cout<<"Введите номер месяца: ";cin>>n;
    switch(n)
    {
    case 1: cout<<"Зима"<<endl;break;
        case 2: cout<<"Зима"<<endl;break;
            case 3: cout<<"Весна"<<endl;break;
                case 4: cout<<"Весна"<<endl;break;
                    case 5: cout<<"Весна"<<endl;break;
                        case 6: cout<<"Лето"<<endl;break;
                            case 7: cout<<"Лето"<<endl;break;
                                case 8: cout<<"Лето"<<endl;break;
                                    case 9: cout<<"Осень"<<endl;break;
                                        case 10: cout<<"Осень"<<endl;break;
                                            case 11: cout<<"Осень"<<endl;break;
                                                case 12: cout<<"Зима"<<endl;break;
                                                default: cout<<"Неккоректный ввод!!";
    }
    system("pause");
    return 0;
}
Или как ты делаешь
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
int main()
{
    setlocale(0,"rus");
    int n;
    cout<<"Введите номер месяца: ";cin>>n;
    if(n==1 || n==2 || n==12) cout<<"Зима"<<endl;
    else if(n==3 || n==4 || n==5) cout<<"Весна"<<endl;
    else if(n==6 || n==7 || n==8) cout<<"Лето"<<endl;
    else if(n==9 || n==10 || n==11) cout<<"Осень"<<endl;
    system("pause");
    return 0;
}
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
09.09.2012, 22:25     Название времени года по месяцу #5
А можно делать как белый человек:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const std::string& monthNumToSeason(int num)
{
  static const std::string NUM_TO_STRING[] = {
    "Зима",  "Зима",  "Весна",
    "Весна", "Весна", "Лето",
    "Лето",  "Лето",  "Осень",
    "Осень", "Осень", "Зима"
  };
  
  if ((1 <= num) && (num <= 12)) {
    return NUM_TO_STRING[num - 1];
  }
  else {
    // обработка кривого ввода
  }
}
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
09.09.2012, 22:28     Название времени года по месяцу #6
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
А можно делать как белый человек:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const std::string& monthNumToSeason(int num)
{
  static const std::string NUM_TO_STRING[] = {
    "Зима",  "Зима",  "Весна",
    "Весна", "Весна", "Лето",
    "Лето",  "Лето",  "Осень",
    "Осень", "Осень", "Зима"
  };
  
  if ((1 <= num) && (num <= 12)) {
    return NUM_TO_STRING[num - 1];
  }
  else {
    // обработка кривого ввода
  }
}
Для енго это слишком круто. Плюс,чем плох вариант через 4 строки if..else ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2012, 22:35     Название времени года по месяцу
Еще ссылки по теме:

C++ По номеру месяца определить название времени года
C++ По номеру месяца вывести соответствующее название времени года
По введенному месяцу определить время года C++

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

Или воспользуйтесь поиском по форуму:
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
09.09.2012, 22:35     Название времени года по месяцу #7
Цитата Сообщение от Andrey.K Посмотреть сообщение
Для енго это слишком круто. Плюс,чем плох вариант через 4 строки if..else ?
1. Не особой очевидностью. (Относительно.)
2. В меньшей мере скоростью.
3. А если надо выводить по-английски? Здесь можно массив вынести за функцию.
Yandex
Объявления
09.09.2012, 22:35     Название времени года по месяцу
Ответ Создать тему
Опции темы

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