powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Логический оператор и остатки
13 сообщений из 13, страница 1 из 1
Логический оператор и остатки
    #40124589
otars
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!Я решал задачу(которая ниже),но сомневаюсь в правильности моего решения.
Трассировка и по шаговый разбор особой ситуации не дал точной информации.
Код рабочий,компилируется,считает.Но у меня сомнения.

Может профессионалы проверят и скажут?Правильно ли я всё сделал?
Сразу скажу что оба критерия я связал логическим И,и задание надо сделать с помощью тернарного оператора(без классических if=else операторов работаем)

Напишите программу,которая проверяет,удовлетворяет ли введённое пользователем число следующим критериям:
-при делении на 5 в остатке получается 2
-при делении на 7 в остатке получается 1

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
namespace ConsoleApp2_2
{
    class Program
    {
        static void Main(string[] args)
        {
            int val = 0;
            Console.WriteLine("Введите число");
            val = Int32.Parse(Console.ReadLine());
            string txt = "Введённое число";
            txt += (((val%5==2)&&(val%7==1))?"удовлетворяет условию":" не удовлетворяет условию");
            Console.WriteLine(txt);
            Console.ReadKey();
        }
    }
}
...
Рейтинг: 0 / 0
Логический оператор и остатки
    #40124617
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильно.
...
Рейтинг: 0 / 0
Логический оператор и остатки
    #40124626
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
otars, когда сомневаешся - пиши модульные тесты.
...
Рейтинг: 0 / 0
Логический оператор и остатки
    #40124658
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
otars
Сразу скажу что оба критерия я связал логическим И
А, собственно, почему?
Из условия это никак не следует.
Может быть, нужно "или". Или даже каждый из критериев проверять независимо и по каждому выносить отдельный вердикт.
...
Рейтинг: 0 / 0
Логический оператор и остатки
    #40124659
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тоже об этом думал. Но в этом ТЗ - как в договоре. Все что мелким шрифтом в требованиях - обязательно.
...
Рейтинг: 0 / 0
Логический оператор и остатки
    #40124660
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде однозначно написано
otars
Напишите программу,которая проверяет, удовлетворяет ли введённое пользователем число следующим критериям :
-при делении на 5 в остатке получается 2
-при делении на 7 в остатке получается 1

Одно число удовлетворяет всем критериям, т.е. И без вариантов.
...
Рейтинг: 0 / 0
Логический оператор и остатки
    #40124661
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помните задачу FizzBuzz?

https://www.geeksforgeeks.org/fizz-buzz-implementation/

Она тупая и прямая. Но тот кто ее придумал - создал пищу для размышлений.
Я вот размышлял о том что считать остаток от деления на 15 не надо. Он уже учтен.
Надо только корректно отформатировать результат чтобы "FizzBuzz" выглядело
как в оригинальном ТЗ ?
...
Рейтинг: 0 / 0
Логический оператор и остатки
    #40124662
Wlr-l
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Когда сомневаешься, нужно вспомнить, чему тебя учили ранее.

Можно написать тест (прилагательное перед словом тест не имеет значения). Да, тестирование может помочь найти ошибку, если она есть, но доказать, что ошибок нет оно не может. Еще нужно написать тест без ошибок. Как только мы написали тест, нужно будет думать о том, как протестировать связку "объект тестирования - тест", ...

Гораздо практичнее спроектировать правильную программу, используя ранее полученные знания, в данном случае математическую логику.
Есть два условия, сделаем их высказываниями:
x = "остаток от деления числа на 5 равен 2",
y = "остаток от деления числа на 7 равен 1".
Каждое из этих высказываний может быть истинным (T) или ложным (F). Нас будет интересовать случай, когда оба эти высказывания будут истинными. Составим таблицу истинности:

Код: plaintext
1.
2.
3.
4.
5.
 x   y    f(x,y)
 F   F    F     потому что остаток от деления числа на 5 НЕ равен 2
 F   T    F     потому что остаток от деления числа на 5 НЕ равен 2
 T   F    F     потому что остаток от деления числа на 7 НЕ равен 1 
 T   T    T     потому что выполняются оба заданных условия
f(x,y) = x /\ y

Осталось записать полученную логическую функцию через операторы заданного языка программирования.
Пример для двух разных языков программирования:
"остаток от деления числа на 5 равен 2" -> val%5==2; val mod 5 = 2,
"остаток от деления числа на 7 равен 1" -> val%7==1; val mod 7 = 1,
/\ -> &&; and

Для одного языка: (val%5==2)&&(val%7==1)
Для другого языка: (val mod 5 = 2)and(val mod 7 = 1)

Конечно, это очень простой случай. Чем сложнее условие, тем труднее получить правильный результат, основываясь только на интуиции, и тем больше могут помочь формальные метода.

Осталось подумать, что будет, если пользователь введет строку "двадцать два". Ему сказали: "Введите число" и он ввел число, а может быть просто не попал на цифровую клавишу и нажал клавишу "Enter".
...
Рейтинг: 0 / 0
Логический оператор и остатки
    #40124663
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Помните задачу FizzBuzz?

https://www.geeksforgeeks.org/fizz-buzz-implementation/

Она тупая и прямая. Но тот кто ее придумал - создал пищу для размышлений.
Я вот размышлял о том что считать остаток от деления на 15 не надо. Он уже учтен.
Надо только корректно отформатировать результат чтобы "FizzBuzz" выглядело
как в оригинальном ТЗ ?

Можно наоборот, использовать только остаток деления на 15 и switch().
...
Рейтинг: 0 / 0
Логический оператор и остатки
    #40124664
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Моя идея была в том что допустим операция % - дорогая. А if-elsе-switch - дешевые.
Тоесть лучше жонглировать печатью на экран чем решать целочисленное деление там где не надо.
Разумеется для современных CPU расчет остатка - это быстро но я просто рассуждаю на тему
как оно было-бы если-бы у нас был decimal тип данных или просто 512 битные регистры всегда
или просто жлобский CPU вроде старого мобильного телефона.
...
Рейтинг: 0 / 0
Логический оператор и остатки
    #40124665
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Моя идея была в том что допустим операция % - дорогая. А if-elsе-switch - дешевые.
Тоесть лучше жонглировать печатью на экран чем решать целочисленное деление там где не надо.
ахренетьвывод ...
А ничего, что вычисление цифр требует этого самого целочисленного деления???
Или что вывод даже в /dev/null заметно накладнее операций процессора???
...
Рейтинг: 0 / 0
Логический оператор и остатки
    #40124669
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С наступившим, Василий. Чего "не в духе" ?
...
Рейтинг: 0 / 0
Логический оператор и остатки
    #40124685
wst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
otars
Код: c#
1.
2.
            string txt = "Введённое число";
            txt += (((val%5==2)&&(val%7==1))?"удовлетворяет условию":" не удовлетворяет условию");


Таки в одном из вариантов ответа не хватает пробела в начале. Любая автопроверка объявит задачу не решенной.

P.S. вообще без ветвлений можно было бы обойтись если сделать 2d массив строк, адрес в котором - [val % 7, val % 5], а значения - те самый "удовлетворяют"/"нет...".
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Логический оператор и остатки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]