Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/30: Рейтинг темы: голосов - 30, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36

Две программы с оператором CASE

14.09.2010, 22:28. Показов 5974. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
  • 1. Найти значение Y в зависимости от X способом использования оператора выбора CASE

    Y=SQRT(x+1) если X принадлежит отрезку [0;1)
    Y=SQRT(x)-1 если X принадлежит отрезку [1;2)
    Y=Sin(x) если X принадлежит отрезку [2;3)


  • 2. Даны 3 числа (день,месяц,год)

    а) Найти дату следующего дня
    б) Найти дату предыдущего дня

    Известно, что год невисокосный.
    Использовать оператор выбора CASE

Помогите пожалуйста. часть первой задачи я сделал, ибо нужно было с помощью IF ещё сделать, а с CASE не получается.
А вторая задача получается очень длинной, так не прокатит у нас.
спасибо заранее
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.09.2010, 22:28
Ответы с готовыми решениями:

Пример программы с оператором case
Пример программы с оператором case. uses Crt; Var a, k: Integer; begin ClrScr; a:= 3; case a * a + 1 of {в случае если а...

Блок-Схема (С оператором CASE)
program zadanie3-11; Var a,b,x,y,c:real; n:1..5; Begin write('1<=N<=5: ');readln(n); Case n of 1: Begin write('a,b,c,x:...

Программа с оператором CASE, выводит некорректные значения
С клавиатуры вводится число a и число b ∈ {1, 2, 3, 4} (конкретно в этом порядке). Рассматривается равнобедренный прямоугольный...

35
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
15.09.2010, 00:01  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Сэм Посмотреть сообщение
Я тебе ее как бы сделал, но сейчас сижу дорабатываю у себя....она верна, но тут ошибки.
Я тот варик выложил на всякий случай!
выложи пожалуйста доработанную и проверенную=)

Добавлено через 53 секунды
Цитата Сообщение от Жека-старший Посмотреть сообщение
Условие говорит следующее:
Если скобка "[" то мы включаем число, а если скобка "(" то число не включаем.
Это понятно?
конечно понятно, мне не понятно как сам CASE это поймет, и IF все понятно, а вот CASE
0
Студент
 Аватар для Сэм
119 / 114 / 16
Регистрация: 14.08.2010
Сообщений: 673
15.09.2010, 00:05
Лично мне понятно, Женек!))) Просто это как-то тоже настораживает. Проверить условие надо!

Добавлено через 50 секунд
Цитата Сообщение от SKA76RUS Посмотреть сообщение
выложи пожалуйста доработанную и проверенную=)
постараюсь!

Добавлено через 45 секунд
Цитата Сообщение от SKA76RUS Посмотреть сообщение
как сам CASE это поймет
тебе объяснить как работает переключатель?
0
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
15.09.2010, 00:10  [ТС]
тебе объяснить как работает переключатель?

можно) просто я не понимаю как CASE одно число включит [] а другое нет ()
0
Студент
 Аватар для Жека-старший
498 / 344 / 162
Регистрация: 15.03.2010
Сообщений: 601
15.09.2010, 00:10
Pascal
1
2
3
4
5
  case x of
  0:y:=sqrt(x+1);
  1:y:=sqrt(x)-1;
  2:y:=sin(x);
  end;
case- это как переключатель.
Работает от переменной типа char, целочисленных типов.
В данном случае от переменной x.
X получает значение, попадает в оператор case. Далее последовательно идет сравнение переменной X со значениями слева от двоеточия.
Если X= значение слева двоеточия, то выполняется ветка находящаяся после двоеточия этой же строки.
Обяснять не мастер. Если не понятно попробую еще раз.

Вот пример.
X=1
CASE X OF
0:y:=.....;//сравниться Х с нулем, не равно, пройдет ниже.
1:y:=sqrt(x)+1;//сравниться с 1, идет совпадение и выполняется эта ветка, после выполнения, выходит из оператора case
2:y:=....;
end;
2
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
15.09.2010, 00:13  [ТС]
Цитата Сообщение от Жека-старший Посмотреть сообщение
Pascal
1
2
3
4
5
  case x of
  0:y:=sqrt(x+1);
  1:y:=sqrt(x)-1;
  2:y:=sin(x);
  end;
case- это как переключатель.
Работает от переменной типа char, целочисленных типов.
В данном случае от переменной x.
X получает значение, попадает в оператор case. Далее последовательно идет сравнение переменной X со значениями слева от двоеточия.
Если X= значение слева двоеточия, то выполняется ветка находящаяся после двоеточия этой же строки.
Обяснять не мастер. Если не понятно попробую еще раз.

Вот пример.
X=1
CASE X OF
0:y:=.....;//сравниться Х с нулем, не равно, пройдет ниже.
1:y:=sqrt(x)+1;//сравниться с 1, идет совпадение и выполняется эта ветка, после выполнения, выходит из оператора case
2:y:=....;
end;

вроде более менее понял =)
спасибо=)
0
Студент
 Аватар для Сэм
119 / 114 / 16
Регистрация: 14.08.2010
Сообщений: 673
15.09.2010, 00:13
http://www.cyberguru.ru/programming/pascal- посмотри еще тут!)
0
Студент
 Аватар для Жека-старший
498 / 344 / 162
Регистрация: 15.03.2010
Сообщений: 601
15.09.2010, 00:14
Если придрутся, то скажи что не работает CASE с вещественными числами. Поэтому ты взял только границы диапазонов.=)
0
Студент
 Аватар для Сэм
119 / 114 / 16
Регистрация: 14.08.2010
Сообщений: 673
15.09.2010, 00:15
Pascal
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
program     sam;
uses        crt;
var         mes1,mes2,ch1,ch2,g1,g2:integer;
begin
     writeln('vvedi chislo,mesyac,god');
     write('chislo-'); readln(ch1);
     write('mesyac-'); readln(mes1);
     write('god-'); readln(g1);
     ch2:=ch1-1;
     if ch2=0 then begin
                        mes2:=mes1-1;
                        case mes2 of
                        0:begin
                               ch2:=31;
                               mes2:=12;
                               g2:=g1-1;
                          end;
                        1,3,5,7,8:begin ch2:=31; g2:=g1; end;
                        4,6,9,11:begin ch2:=30; g2:=g1; end;
                        2:if(g2 mod 400=0)or(g2 mod 4=0)and(g2 mod 100<>0)then ch2:=28;
                        end;
                    end else begin
                                  mes2:=mes1;
                                  g2:=g1;
                              end;
     writeln('data- ',ch2,'.',mes2,'.',g2);
end.
Работает!
2
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
15.09.2010, 00:15  [ТС]
у меня вобщем на вот этом этапе всё стоит.
Миниатюры
Две программы с оператором CASE   Две программы с оператором CASE  
0
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
15.09.2010, 00:16  [ТС]
Цитата Сообщение от Сэм Посмотреть сообщение
Pascal
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
program     sam;
uses        crt;
var         mes1,mes2,ch1,ch2,g1,g2:integer;
begin
     writeln('vvedi chislo,mesyac,god');
     write('chislo-'); readln(ch1);
     write('mesyac-'); readln(mes1);
     write('god-'); readln(g1);
     ch2:=ch1-1;
     if ch2=0 then begin
                        mes2:=mes1-1;
                        case mes2 of
                        0:begin
                               ch2:=31;
                               mes2:=12;
                               g2:=g1-1;
                          end;
                        1,3,5,7,8:begin ch2:=31; g2:=g1; end;
                        4,6,9,11:begin ch2:=30; g2:=g1; end;
                        2:if(g2 mod 400=0)or(g2 mod 4=0)and(g2 mod 100<>0)then ch2:=28;
                        end;
                    end else begin
                                  mes2:=mes1;
                                  g2:=g1;
                              end;
     writeln('data- ',ch2,'.',mes2,'.',g2);
end.
Работает!
ухх...спасибо. а можешь ешё с обяснением?=) а то я тут не разберусь сам) и мы не используем переменные типо mes1, нам говорят просто буквой какойнить брать
0
Студент
 Аватар для Сэм
119 / 114 / 16
Регистрация: 14.08.2010
Сообщений: 673
15.09.2010, 00:22
mes1- месяц который дан
ch1- число
g1-год
mes2,ch2,g2-результат.
Здесь мы должны были рассмотреть вариант, где бы число было бы 1----отсюда 1-1=0 и далее по case(переключателю)делаем проверку месяца (его номера, ведь в каждом месяце своё кол-во дней), аналогично с годом- високосный или нет- if проверку сделали!
1
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
15.09.2010, 00:29  [ТС]
Цитата Сообщение от Сэм Посмотреть сообщение
mes1- месяц который дан
ch1- число
g1-год
mes2,ch2,g2-результат.
Здесь мы должны были рассмотреть вариант, где бы число было бы 1----отсюда 1-1=0 и далее по case(переключателю)делаем проверку месяца (его номера, ведь в каждом месяце своё кол-во дней), аналогично с годом- високосный или нет- if проверку сделали!
уже дано что невисокосный!

Добавлено через 1 минуту
Цитата Сообщение от Жека-старший Посмотреть сообщение
Если придрутся, то скажи что не работает CASE с вещественными числами. Поэтому ты взял только границы диапазонов.=)
лады=)
0
Студент
 Аватар для Сэм
119 / 114 / 16
Регистрация: 14.08.2010
Сообщений: 673
15.09.2010, 00:30
Цитата Сообщение от SKA76RUS Посмотреть сообщение
уже дано что невисокосный!
Где дано?....это универсальная программа- вбиваешь любую дату и все!
0
0 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 36
15.09.2010, 00:32  [ТС]
Цитата Сообщение от SKA76RUS Посмотреть сообщение
ch2:=ch1-1;
* * *if ch2=0 then begin
* * * * * * * * * * * * mes2:=mes1-1;
а что тут мы проверяем я чтото не пойму

Добавлено через 22 секунды
Цитата Сообщение от Сэм Посмотреть сообщение
Где дано?....это универсальная программа- вбиваешь любую дату и все!
нам учила сказала что невисокосный)
0
Студент
 Аватар для Сэм
119 / 114 / 16
Регистрация: 14.08.2010
Сообщений: 673
15.09.2010, 00:39
Училке флаг в руки и медаль на шею! Уважаю!

По поводу проверки- представь что число-1. 1-1=0. ты где нибудь видел 0 месяц- я нет, да и никто тоже! вот поэтому мы выполнили проверку----если ты в результате 0, тогда число-31, месяц 12, а год-1!

Добавлено через 4 минуты

Не по теме:

так....перекур:smoke:

0
Почетный модератор
 Аватар для Puporev
64320 / 47616 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
15.09.2010, 08:17
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Жека-старший Посмотреть сообщение
в case нельзя вещественные числа, значит будут только границы диапазона.
Если нельзя, но очень хочется, то можно....

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
uses crt;
var x,y:real;
begin
clrscr;
write('x=');
readln(x);
case trunc(x*10) of
0..9:write('Y=',sqrt(x+1):0:2);
10..19:write('Y=',sqrt(x)-1:0:2);
20..29:write('Y=',sin(x):0:2);
else write('Y ne opredeleno!');
end;
readln
end.
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.09.2010, 08:17

Программа с оператором CASE
Пример отредактированной программы из Само- учителя (стр. 55) с оператором CASE, чтобы печа тались все значения k. Вот...

Задача с оператором CASE.
Составить программу , которая бы реализовала следующий алгоритм работы светофора. 1-зелёный, 2-жёлтый, 3-красный. Названия цветов выделите...

Задание с оператором выбора CASE
Напишите программу, которая по введенному номеру месяца года выводит количество дней в месяце.

Переделать программу с оператором case
добрый день, можете прогу переделать на оператор case Program task1; var num: integer; x, y: longint; flag: byte; begin ...

Работа с оператором Switch case
В общем такая ситуация. Надо написать что-то типо магазина и при выборе товара он должен переносить его цену в переменную и предложить...


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

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru