Задание: В Алтайском гос университете принято, что старшая цифра трехзначного номера студенческой группы обозначает номер факультета, средняя – последнюю цифру года поступления, младшая – порядковый номер группы. Продолжительность обучения — не более 6 лет (магистратура). Дан номер группы студента АГУ и текущий год. Напечатать в каком году он поступил и на каком факультете учиться. Например гр.432, 1996г. — факультет математический, год поступления 1993. Для справки приведены номера факультетов:1–исторический, 2 – экономический, 3 – юридический, 4 – математический, 5 – физический, 6 – химический, 7 – биологический, 8 – филологический, 9 – географический, 10-социологический.
Тестирование. Предусмотреть невозможные ситуации. Например гр 521, год 2001.
135 | 2014 | работает |
341 | 2008 | работает |
005 | 2014 | работает |
4995 | 2014 | не работает |
521 | 2009 | не работает |
10101 | 2014 | не работает |
91 | 2014 | не работает |
135 | 2014 | Исторический факультет Год поступления 2013 |
341 | 2008 | Юридический факультет Год поступления 2004 |
005 | 2014 | Социологический факультет Год поступления 2010 |
Решение:
Код программы 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 |
#include <iostream> #include <math.h> using namespace std; int main() { int a, b, b1, a1, a2, m, k=0; cin>>a>>b; b1=b%10; a1=(a/100); a2=(a/10)%10; if (a1>9) {cout<<"Такой группы не существует";} else { if (b1-a2>5) {cout<<"Такой группы не существует";} else { if (a1==1) {cout<<"Исторический факультет \n";} if (a1==2) {cout<<"Экономический факультет \n";} if (a1==3) {cout<<"Юридический факультет \n";} if (a1==4) {cout<<"Математический факультет \n";} if (a1==5) {cout<<"Физический факультет \n";} if (a1==6) {cout<<"Химический факультет \n";} if (a1==7) {cout<<"Биологический факультет \n";} if (a1==8) {cout<<"Филологический факультет \n";} if (a1==9) {cout<<"Географический факультет \n";} if (a1==0) {cout<<"Социологический факультет \n";} m=b-((10+b1-a2)%10); cout<<"Год поступления "<<m; } } } |
Ссылка на ideone Java: http://ideone.com/sLff6T
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 |
import java.util.*; import java.lang.*; import java.io.*; class Ideone { public static void main (String[] args) throws java.lang.Exception { Scanner in = new Scanner(System.in); int a, b, b1, a1, a2, m, k=0; a = in.nextInt(); b = in.nextInt(); b1=b%10; a1=(a/100); a2=(a/10)%10; if (a1>9) {System.out.printf("Такой группы не существует");} else { if (b1-a2>5) {System.out.printf("Такой группы не существует");} else { if (a1==1) {System.out.printf("Исторический факультет \n");} if (a1==2) {System.out.printf("Экономический факультет \n");} if (a1==3) {System.out.printf("Юридический факультет \n");} if (a1==4) {System.out.printf("Математический факультет \n");} if (a1==5) {System.out.printf("Физический факультет \n");} if (a1==6) {System.out.printf("Химический факультет \n");} if (a1==7) {System.out.printf("Биологический факультет \n");} if (a1==8) {System.out.printf("Филологический факультет \n");} if (a1==9) {System.out.printf("Географический факультет \n");} if (a1==0) {System.out.printf("Социологический факультет \n");} m=b-((10+b1-a2)%10); System.out.printf("Год поступления %d", m); } } } } |
Для начала определяем первую цифру группы — a1, вторую цифру группы — a2, последнюю цифру года — b1.
Далее проводим проверку, что бы выяснить, существует ли эта группа (не больше 4х цифр, если первая 10; не меньше 3х цифр; время обучения не больше 6 лет ). Далее проверка существования факультета и проверка времени обучения.
Если все условия выполняются, то выводим название факультета и год поступления.
— забыл поставить метки (ключевые слова)
— ссылку на ideOne нужно делать «кликабельной». Т.е. при наборе текста нажимаете кнопку link и вводите адрес. (Это если не знать язык html, что пока и не требуется)
— Что вы такое интересное проверяете в 9-й строке? Какое это трёхзначно число при делении на 100 даст 10? Даже с округлением. Как-то сложно вы находите число сотен в трёхзначном числе. А вот с числом десятков легко справились, молодец. Может и сотни также сделать?
— Пример ошибочного теста: 521 2009. Программа утверждает, что можно учиться дольше шести лет. Это противоречит условию.
-Метки поставил.
-Ссылку добавил.
-В 9 строке я проверяю частный случай — когда первое число 10 (социологический факультет) и тогда число будет 4х значное, например 1005: номер факультета — 10, последняя цифра года поступления 0, 5-группа.
-Проверку на несуществующую группу исправил, теперь все работает нормально.
С социологическим факультетом автор Вас ловко провёл.
Цифры 10 в десятичной системе счисления нет.
Какой же цифрой тогда кодируется 10-й факультет?
Догадались? Или подсказать?
Исправил ошибку
Молодец! Зачтено.