C/C++

Спасите помогите, пж. Язык С++. Вся моя группа страдает от кретинизма (как и я)

1)Вводится число М - номер месяца. Определить номер квартала и время
года по введенному номеру месяца.
2) Вводится целое число С. Если -9<=c<=9 вывести величину числа в
словесной форме с учетом знака, в противном случае - предупреждающее
сообщение и повторный ввод.
#include <iostream>
using namespace std;
class Month {
public:
Month() = delete;
Month(const Month&) = delete;
Month& operator=(const Month&) = delete;
static pair<const char*, const char*> meta(int month) {
auto quarter = quarters[(month - 1) / 3];
int pos = -1;
switch (month) {
case 1: case 2: case 12: pos = 0; break;
case 3: case 4: case 5: pos = 1; break;
case 6: case 7: case 8: pos = 2; break;
case 9: case 10: case 11: pos = 3; break;
}
auto season = seasons[pos];
return { season, quarter };
}
private:
inline static const char* seasons[] = {
"зима",
"весна",
"лето",
"осень"
};
inline static const char* quarters[] = {
"первый",
"второй",
"третий",
"четвёртый"
};
};
int month() {
auto value = 0;
do {
cout << "Введите номер месяца: ";
cin >> value;
cin.ignore(cin.rdbuf()->in_avail());
} while (value < 1 || value > 12);
return value;
}
int main() {
system("chcp 1251 > nul");
while (true) {
auto m = month();
auto [season, quarter] = Month::meta(m);
cout << "Время года: " << season << ", " << quarter << " квартал. \n\n";
}
}
Николай Шубин
Николай Шубин
84 638
Лучший ответ
У тебя установлен GCC и пакет стандартной библиотеки?
Я думаю нужно виндовс переустановить
Санёк Звездаков Шутка года)
Это на Си, примитивно, но может на мысли другие натолкнёт
int main(){
int a=0;
scanf("%d",&a);
if(a==1){printf("%s\n", "winter January");}
if(a==2){printf("%s\n", "winter February");}
if(a==3){printf("%s\n", "spring March");}
//и. т. п
else{printf("Error 404\n");}
return 0;
}
Viktor Kvitovskyy
Viktor Kvitovskyy
288
Viktor Kvitovskyy int main(){
int a=0;
scanf("%d",&a);
if(a==1){printf("%s\n", "winter January");}
else if(a==2){printf("%s\n", "winter February");}
else if(a==3){printf("%s\n", "spring March");}
else{printf("Error 404\n");}
return 0;
}
Болат Итжанов Ты мой спаситель ;)
Viktor Kvitovskyy )))Серьёзно? Здесь не всё реализовано.
Например нет повторного ввода при неправильном ответе. Не знаю ещё как сделать.
Ну или знаю, но код длиннее будет.
Viktor Kvitovskyy Только не знаю почему первое срабатывание scanf не выдаёт текст.
int main(){
int i=0;
scanf("%d", &i);
while(i<1||i>12){
scanf("%d", &i);
if (i<1||i>12){printf("Please enter number from 1 until 12\n");}

if(i==1) { printf("%s\n", "winter January"); }
else if(i==2) { printf("%s\n", "winter February"); }
else if(i==3) { printf("%s\n", "spring March"); }

//Здесь можно дополнить месяца

else { printf("Error 404\n"); }
}
}
Viktor Kvitovskyy Нет, так не работает)
Вот лучше))

int main(){
int i=0;
scanf("%d", &i);
while(i<1||i>12){
scanf("%d", &i);
if (i<1||i>12){printf("Please enter number from 1 until 12\n");}

}
if(i==1) { printf("%s\n", "winter January"); }
else if(i==2) { printf("%s\n", "winter February"); }
else if(i==3) { printf("%s\n", "spring March"); }

//Здесь можно дополнить месяца

}
Viktor Kvitovskyy А, понял почему текст не выдаёт первое срабатывание scanf()
Такая задумка)))
Там 2 scanf() из за этого
Viktor Kvitovskyy Вот.
Кажется как надо сейчас работает))

int main(){
int i=0;
do{scanf("%d", &i);
if (i<1||i>12){printf("Please enter number from 1 until 12\n");}

if(i==1) { printf("%s\n", "winter January"); }
else if(i==2) { printf("%s\n", "winter February"); }
else if(i==3) { printf("%s\n", "spring March"); }

//Здесь можно дополнить месяца

}

while(i<1||i>12);

}
Viktor Kvitovskyy Я тоже учусь))
В прошлом коде было думаю нехорошо что месяцы тоже в цикле находились.
Работало, но на пограничной логике)

int main(){
int i=0;
do{printf("%s\n", "Enter Month Number."); scanf("%d", &i);
if (i<1||i>12){printf("Please enter number from 1 until 12\n");}
}
while(i<1||i>12);

if(i==1) { printf("%s\n", "winter January"); }
else if(i==2) { printf("%s\n", "winter February"); }
else if(i==3) { printf("%s\n", "spring March"); }

//Здесь можно дополнить месяца

}