С Новым годом! Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 11.11.2014
Сообщений: 11

Напишите программу, которая бы запрашивала номер дня недели, и в ответ печатала бы название этого дня

18.11.2014, 22:41. Показов 4333. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем дошел до оператора Case
И вот в низу задачки такие.
Напишите программу, которая бы запрашивала номер дня недели, и в
ответ печатала бы название этого дня («понедельник», «вторник» и так далее).
В) Пусть пользователь введет число — свой возраст в годах. Ваша программа
должна напечатать фразу: «Вам столько-то лет» с правильным окончанием,
например: «Вам 20 лет», или «Вам 34 года», или «Вам 41 год». Подсказка: надо
определить последнюю цифру года операцией MOD 10. Некоторые числа
выпадают из общего правила, их надо проверить особо (например, 11, 12, 13, 14).
Их как я понял можно решить через if,или какой другой способ.
Но я не как не пойму ка решить их через case?(
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.11.2014, 22:41
Ответы с готовыми решениями:

Напишите программу, которая выводит название дня недели по номеру дня
4. Напишите программу, которая выводит название дня недели по номеру дня, введённому с клавиатуры. Исключите несуществующие номера ...

Найти номер дня недели К-го дня года, если в этом году 1 января было днем недели с номером N
Дни недели пронумерованы следующим образом: 0 - воскресенье, 1 - понедельник, 2 - вторник, ..., 6 - суббота. Даны целые числа K в...

Напишите программу "алгоритм нахождения дня недели по номеру дня в месяце"
Алгоритм нахождения дня недели по номеру дня в месяце: январь 1990 года

13
171 / 57 / 45
Регистрация: 21.06.2012
Сообщений: 263
19.11.2014, 07:07
Напишите программу, которая бы запрашивала номер дня недели, и в
ответ печатала бы название этого дня («понедельник», «вторник» и так далее).
всё просто:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var day: byte;
begin
clrscr;
writeln ('Введите номер дня недели');
readln (day);
case day of
 1: writeln('Понедельник');
 2: writeln('Вторник');
 3: writeln('Среда'); 
 4: writeln('Четверг');
 5: writeln('Пятница');
 6: writeln('Суббота');
 7: writeln('Воскресенье');
end;
readln;
end.
0
8 / 3 / 4
Регистрация: 04.10.2015
Сообщений: 18
06.10.2015, 16:52
Проблема в том, что переменная byte не изучена еще к этому моменту книги, где размещена задача.
0
 Аватар для APALoff
1648 / 1077 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
06.10.2015, 17:54
Pent, так изучите! В чём проблем то? Или Вы всегда всё делаете по указке - сейчас учите это, потом то, а вот это ни-ни!?

Добавлено через 1 минуту
К тому же как то не верится - типы данных изучают в самом начале, а тут уже оператор Case - Вы наверное что-то пропустили.
0
 Аватар для Xtore
1 / 1 / 3
Регистрация: 15.02.2015
Сообщений: 14
06.10.2015, 20:50
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от Dante3495One Посмотреть сообщение
В) Пусть пользователь введет число — свой возраст в годах. Ваша программа
должна напечатать фразу: «Вам столько-то лет» с правильным окончанием,
например: «Вам 20 лет», или «Вам 34 года», или «Вам 41 год». Подсказка: надо
определить последнюю цифру года операцией MOD 10. Некоторые числа
выпадают из общего правила, их надо проверить особо (например, 11, 12, 13, 14).
Их как я понял можно решить через if,или какой другой способ.
Но я не как не пойму ка решить их через case?(
С вас Спасибо
Pascal
1
2
3
4
5
6
7
8
9
var age: byte;
begin
  WriteLn('Сколько Вам лет?')
  ReadLn(age);
  if ((age mod 10 > 4) or (age mod 10 = 0)) or ((age >= 11) and (age <= 14))
    then WriteLn('Вам ', age, ' лет')
    else if age mod 10 = 1 then WriteLn('Вам ', age, ' год') else WriteLn('Вам ', age, ' года');
  ReadLn
end.
Добавлено через 1 минуту
Цитата Сообщение от Pent Посмотреть сообщение
Проблема в том, что переменная byte не изучена еще к этому моменту книги, где размещена задача.
Переменная типа byte может принимать значения от 0 до 255 и занимает 1 байт в памяти.

Добавлено через 19 минут
Используя case:
Pascal
1
2
3
4
5
6
7
8
9
10
11
var age: byte;
begin
  WriteLn('Сколько вам лет?');
  ReadLn(age);
  case age mod 10 of
   1: begin if age = 11 then WriteLn('Вам ', age, ' лет') else WriteLn('Вам ', age, ' год') end;
   2,3,4: begin if (age > 11) and (age <= 14) then WriteLn('Вам  ', age, ' лет') else WriteLn('Вам ', age, ' года') end;
   5,6,7,8,9,0: WriteLn('Вам ', age, ' лет');
  end;
  ReadLn
end.
Процесс обучения заключается в том, чтобы самому выполнять задания из книги. Именно это проверяет вас на знание выученного. Если ты не можешь выполнить задание, значит ты не понял параграф, либо плохо знаешь все, что учил до этого.
0
8 / 3 / 4
Регистрация: 04.10.2015
Сообщений: 18
07.10.2015, 10:05
Я новичок и только недавно начал изучение "песен". Я повторюсь- в той главе, в конце которой дается эта задача переменная byte еще не изучена. Оперируя лишь теми знаниями, которые представлены до этой задачи у меня получилось так
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
 var y : integer;
    s : string;
  begin
 Write('Сколько Вам лет? '); Readln(y);
  case y of
           11, 12, 13, 14: s:='лет';
 else case y mod 10 of
                     1: s:='год';
                     2, 3, 4: s:='года';
 else s:='лет'; end;
 end;
 Writeln('Вам', y, ' ', s);
 end.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
07.10.2015, 12:40
Pascal
5
6
7
8
9
10
11
12
13
  case y mod 100 of
  11..14: s:='лет';
  else
    case y mod 10 of
    1:    s:='год';
    2..4: s:='года';
    else  s:='лет';
    end;
  end;
PS. Форматирование должно помогать чтению кода а не мешать ;-)
0
0 / 0 / 0
Регистрация: 20.01.2017
Сообщений: 10
25.02.2017, 23:48
проблема касаемо решения задачи о годах и летах:
Я думал, что строка else writeln('вали спать, щенок');, будет высвечиваться если в значении Х указать возраст от 1 года до 9 лет. Ведь эти числа при делении на 10 не должны соответствовать идентификатору интеджер!
Но при компиляции программа выдает 1 год, 2 года и т.д., т.е. все пишет правильно. Почему так произошло, что переменная М будучи дробью при значениях Х от 1 до 9 , воспринимается как целое число???

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Var X, M:integer; S: string;
begin
 repeat
  WriteLn (' Ведите ваш возраст : '); Readln (X);
  M:= X mod 10;
 If  (X<>11) and (X<>12) and (X<>13) and (X<>14) then 
     case M of
       0, 5..9: Writeln('Вам ', X,' лет');
       1: Writeln ('Вам ', X,' год');
       2..4: Writeln( 'Вам ', X,' года'); 
       else writeln('вали спать, щенок');
     end
  else Writeln ('Вам ', X,' лет');
  until false;
end.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
26.02.2017, 03:04
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

climb99,
переменная M не может быть дробью в принципе. Перечитайте книжки, ответ очевиден.
Иначе, вали спать, щенок.
0
0 / 0 / 0
Регистрация: 20.01.2017
Сообщений: 10
26.02.2017, 09:06
Цитата Сообщение от bormant Посмотреть сообщение
переменная M не может быть дробью в принципе.
ее вообще не должно существовать при делении меньшего числа на большее в случае с целочисленными переменными.

Почему вот эта строка имеет право на существование case y mod 100 of ? Здесь так же числитель меньше знаменателя и решения быть не может (даже нуля).
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
26.02.2017, 10:19
climb99,
перечитайте, как определён "остаток от деления" ((y div n) * n + y mod n = y).
При делении меньшего числа на большее результатом деления является 0, остатком от деления -- делимое.
Про "решения быть не может" -- отчего же: 1 mod 100, 2 mod 100, ..., 100 mod 100, 101 mod 100, 102 mod 100, ...

Или у вас своя алгебра, но забыли об этом предупредить?

Добавлено через 3 минуты
climb99,
Если вам нужно принимать решение в зависимости от возраста, то стоит именно это и делать:
Pascal
1
2
if y>=21 then ...
else WriteLn('До свидания.');
0
0 / 0 / 0
Регистрация: 20.01.2017
Сообщений: 10
26.02.2017, 10:22
Цитата Сообщение от bormant Посмотреть сообщение
При делении меньшего числа на большее результатом деления является 0, остатком от деления -- делимое.
нет, я такого не слышал ни разу ,спасибо
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
26.02.2017, 10:33
climb99,
Из определения остатка от деления: y mod n = y - (y div n) * n; если n>y, то y div n = 0, сл-но y mod n = y - 0 = y.

Смысл задачки -- напомнить про наличие в языке двойственного числа (2, 3, 4) помимо единственного и множественного, при этом числительные второго десятка (11..20) всегда множественного числа.
0
0 / 0 / 0
Регистрация: 20.01.2017
Сообщений: 10
26.02.2017, 14:40
да, спасибо, сейчас нашел тему в другом учебнике (в "песни о паскале" на этом внимание не заостряется)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.02.2017, 14:40
Помогаю со студенческими работами здесь

Определить номер дня недели для заданного номера дня года
Дано целое число k (1&lt;=k&lt;=365). Присвоить целочисленной величине n значение 1, 2, ... , 6 или 0 в зависимости от дня недели ( пон, вт, ср,...

Определить номер дня недели для K-го дня года
Дни недели пронумерованы следующим образом: 1 — понедельник, 2 — вторник, …, 6 — суббота, 7 — воскресенье. Дано целое число K, лежащее в...

Определить номер дня недели N для K-го дня года, если известно, что 1 января был понедельник
Здравствуйте. Не могу никак решить казалось бы очень простую задачку на Паскале, уже часа три голову ломаю. Может быть опечатка в учебнике....

Определить номер дня недели для К-го дня
Дни недели пронумерованы следующим образом: 0 - воскресенье, 1 - понедельник, 2 - Вторник, ..., 6 - суббота. Дано целое число K, лежащее...

Написать функцию, которая по номеру n определяет соответствующее название дня недели
Написати функцию, которая по номеру n определяет соответствующее название дня недели. type день недели = (пн., вт., ср., чт., пт., сб.,...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru