2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Ищу содержательную задачу для Паскаля на оператор case.
Сообщение06.02.2019, 21:27 
Аватара пользователя


14/12/17
1552
деревня Инет-Кельмында
Можеть быть, у кого-нибудь найдется любимая задача на эту тему, посложнее среднего.

Хотелось бы, чтобы в операторе case были интервалы и списки констант, простые и составные операторы, и была ветка else,
и чтобы все вычисление имело практический смысл. Циклов и процедур еще нет.

У меня из вариантов только
1) число от 1 до 999 вывести прописью
2) число от 1 до 3999 вывести римскими цифрами
3) вывести число дней в месяце, если февраль то допонительно запросить год, чтобы посчитать не високосный ли

Только вариант 3 содержит всё что надо, но он какой-то скучноватый.

 Профиль  
                  
 
 Re: Ищу содержательную задачу для Паскаля на оператор case.
Сообщение06.02.2019, 22:33 


15/11/15
1128
Задача
eugensk в сообщении #1374522 писал(а):
2) число от 1 до 3999 вывести римскими цифрами
мне кажется неплохой. Практическая задача? Тут может штука в том, что case в новых языках - может, в отличие от Паскаля, переварить и строковый тип, и в них больше интересных примеров. А тут пришло только в голову:

Первое число января - понедельник. Вывести день недели в зависимости от числа, от 0 до 31.

Потом усложнить - первое число - среда.

Хотя, наверно, задача вам покажется слишком простой. Вот нашел:
Google писал(а):
Задача 9. Калькулятор на Паскале. Ученик вводит с клавиатуры число, символ арифметического действия (+, -, *, /) и еще одно число. Компьютер должен напечатать результат. Указание: Для чисел и арифметического действия используйте оператор ReadLn в Паскаль

 Профиль  
                  
 
 Re: Ищу содержательную задачу для Паскаля на оператор case.
Сообщение07.02.2019, 06:56 
Аватара пользователя


14/12/17
1552
деревня Инет-Кельмында
gevaraweb
Вариант с калькулятором хороший, спасибо. Можно в зависимости от операции считывать второй операнд, или нет.

Вообще, без циклов мало что можно сделать, конечно, на этих задачах и остановлюсь.

 Профиль  
                  
 
 Re: Ищу содержательную задачу для Паскаля на оператор case.
Сообщение07.02.2019, 08:50 


15/11/15
1128
Или уж извратиться, и сделать задачу типа: на входе тег, вывести его значение. Заодно теги уч-ся вспомнит )

Код:
type

   tag = (p, br, a, hr, tr, td, table);
   values = (tabliza, liniya, ssylka, absaz, perenos_stroki, yacheyka, stroka_tablizy, drugoy_tag);

 Профиль  
                  
 
 Re: Ищу содержательную задачу для Паскаля на оператор case.
Сообщение07.02.2019, 12:39 
Аватара пользователя


24/01/19

265
Почему CASE - интуитивно запутанный оператор - идёт впереди таких элегантных и прозрачных FOR, WHILE, REPEAT, LOOP? У них и возможностей больше. А CASE естественно их расширит.
Масса идей по задачам с CASE. Но циклы нужны везде.
Надеюсь, учебный план не начинает знакомство с ними с примера
Код:
label 1;
begin
print ('Введите число,  0 для завершения');
1:
...
goto 1;
end.

 Профиль  
                  
 
 Re: Ищу содержательную задачу для Паскаля на оператор case.
Сообщение07.02.2019, 13:20 
Аватара пользователя


14/12/17
1552
деревня Инет-Кельмында
podih

Видимо, потому что case тоже ветвление, и темы стоят в порядке сложности: линейные программы, ветвления, циклы, рекурсия, указатели.

Мы иногда пишем goto с последнего оператора на начало программы, это повышает полезность программы в разы, потом конечно перестанем так делать :)

 Профиль  
                  
 
 Re: Ищу содержательную задачу для Паскаля на оператор case.
Сообщение07.02.2019, 13:56 
Заслуженный участник


06/07/11
5653
кран.набрать.грамота
podih в сообщении #1374657 писал(а):
Почему CASE - интуитивно запутанный оператор - идёт впереди таких элегантных и прозрачных FOR, WHILE, REPEAT, LOOP? У них и возможностей больше. А CASE естественно их расширит.
:facepalm:
case - это условный оператор, а for, while, repeat, loop - операторы цикла. Они решают разные задачи, и их бессмысленно сравнивать. А loop еще, кстати, в пакале отсутствует. Там for ... do и repeat ... until. :mrgreen:

-- 07.02.2019, 12:00 --

eugensk в сообщении #1374522 писал(а):
Можеть быть, у кого-нибудь найдется любимая задача на эту тему, посложнее среднего.
Ну если посложнее среднего - то напишите парсер какой-нибудь. Парсер XML, например, или парсер арифметических выражений. Чтобы пользователь вводил строку 2 + 2 * 2, а программа ему в ответ - 8 6!

 Профиль  
                  
 
 Re: Ищу содержательную задачу для Паскаля на оператор case.
Сообщение07.02.2019, 14:06 
Аватара пользователя


27/02/12
4280
eugensk
Когда-то, пересиливая собственные интересы, пришлось писать функцию, которая, получив в качестве параметра
"сумма численно", возвращала результат "сумма прописью". case не использовал, но быть может... :wink:

 Профиль  
                  
 
 Re: Ищу содержательную задачу для Паскаля на оператор case.
Сообщение07.02.2019, 14:25 
Аватара пользователя


14/12/17
1552
деревня Инет-Кельмында
rockclimber
Парсер без циклов или функций не очень красивый получится, только для ограниченного класса выражений. Потом к ним придем, во всеоружии.

miflin
Сумма прописью - то что надо, уже думал об этом. Помню, давным-давно у меня с коллегами был спор кто напишет её на foxpro в меньшее число строк, я вроде бы тогда победил :)

 Профиль  
                  
 
 Re: Ищу содержательную задачу для Паскаля на оператор case.
Сообщение07.02.2019, 14:54 


05/09/16
12470
Вариации на тему "число прописью".

Сколько чисел от 1 до 9999 делятся нацело(без остатка) на количество букв в своём наименовании исключая (вариант - включая) пробелы?

Ну или:
Делится ли нацело(без остатка) данное число на количество букв в своём наименовании исключая (вариант - включая) пробелы?

Или: сколько букв включая (вариант - исключая) пробелы в наименовании данного числа?

 Профиль  
                  
 
 Re: Ищу содержательную задачу для Паскаля на оператор case.
Сообщение07.02.2019, 15:05 
Аватара пользователя


14/12/17
1552
деревня Инет-Кельмында
wrest
Вот еще идея, для младшешкольников: Какое слово получится, если выводить 15-ю букву в числах прописью 348, 999, 712, 234 ...
Заготовить таких слов подлиннее, чтобы никто не захотел считать вручную.

 Профиль  
                  
 
 Re: Ищу содержательную задачу для Паскаля на оператор case.
Сообщение07.02.2019, 15:22 
Аватара пользователя


24/01/19

265
wrest в сообщении #1374719 писал(а):
Сколько чисел от 1 до 9999

CASE из 10000 вариантов? Вас же родители съедят.

 Профиль  
                  
 
 Re: Ищу содержательную задачу для Паскаля на оператор case.
Сообщение07.02.2019, 17:19 
Аватара пользователя


27/02/12
4280
podih в сообщении #1374727 писал(а):
CASE из 10000 вариантов? Вас же родители съедят.

Не всё так мрачно. Вы, наверное, про какой-то другой CASE.
На самом деле и овцы программисты будут целы, и волки родители сыты (и некоторые даже благодарны). :-)

 Профиль  
                  
 
 Re: Ищу содержательную задачу для Паскаля на оператор case.
Сообщение07.02.2019, 17:20 
Заслуженный участник


06/07/11
5653
кран.набрать.грамота
podih в сообщении #1374727 писал(а):
CASE из 10000 вариантов? Вас же родители съедят.
А вас съедят учителя информатики. Для той задачи вполне хватит порядка 40 "кейсов".

eugensk в сообщении #1374712 писал(а):
Парсер без циклов или функций не очень красивый получится, только для ограниченного класса выражений. Потом к ним придем, во всеоружии.
Так если вам задачу просто на один case (ну пусть даже на 10), то тяжело как-то придумать задачу "посложнее среднего", да еще осмысленную. Слишком противоречивые требования.

 Профиль  
                  
 
 Re: Ищу содержательную задачу для Паскаля на оператор case.
Сообщение07.02.2019, 17:27 


15/11/15
1128
wrest в сообщении #1374719 писал(а):
Сколько чисел от 1 до 9999 делятся нацело(без остатка) на количество букв в своём наименовании исключая (вариант - включая) пробелы?

Э, погодьте. ТС же просил "жизу". Хотя он тоже увлекся и забыл об этом )

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2  След.

Модераторы: Модераторы, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: YandexBot [bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group