Новые вопросы по информатике
Сколько всего различных символов может быть в восьмибитной текстовой кодировке? 1) 8 2) 512 3) 256 4) 65536
Паскаль. Написать программу подсчета количества отрицательных чисел среди любых 10 вводимых. 1 программа с использованием while, 2 программа — repeat
Сколько кб информации содержит сообщение объемом 2^20 бит?
Информатика пользователь создад сообщение из 256 символов в кодировке Unicode в которой каждый символ кодируется 16 битами после редактирования информационный объем сообщения составил 3072 бит Определите сколько символов удалили сообщение если его
Запишите числа в беззнаковом коде (формат 1 байт): а) 31; б) 163; в) 65; г) 128.
Главная » Информатика » Напишите программу, которая находит минимальное и максимальное среди чётных положительных чисел, записанных в файле, и выводит результат в другой файл. Учтите, что таких чисел может вообще не быть. (Язык программирования Паскаль)
Источник: urokam.net
Поиск максимального и минимального числа в потоке на Python. Центр онлайн-обучения «Фоксфорд»
Программирование на C, C++, C#
//a) int max=0; do < const int q=6; int A[q][q]; srand(time(NULL)); for(int i=0;i
setlocale(LC_ALL, «Russian»); int a, b; cout << «Введите первое число:»; cin >> a; cout << «.
void init(int *a, int size); void out(int *a, int size); void out_c(int *a, int size); void main() < setlocale(LC_ALL, «Russian.
int a, b; setlocale(0, «rus»); cout << «Введите начало диапазона:»; cin >> a; cout << «Введи.
unsigned int time=86399; ////cout << «Enter time:»; ////cin >> time; //int day = time / 24 / 3600; //.
int s, hours, min; cout << «Enter distance (km):»; cin >> s; cout << «Enter hours and min: int res(); void main() < char brosok; do < setlocale(LC_ALL, «Russian»); srand(time(NULL)); co.
int a, b; setlocale(0, «rus»); cout << «Введите начало диапазона:»; cin >> a; cout << «Введи.
int begin_hours, begin_min, begin_sec; int end_hours, end_min, end_sec; cout
double gb, bit; cout << «Enter the size of the movie(Gb):»; cin >> gb; cout << «Enter speed co.
Архив блога
- ►2016 (145)
- ►апреля (48)
- ►февраля (44)
- ►января (53)
- ▼2015 (182)
- ►декабря (30)
- ►сентября (13)
- ►июня (13)
- ►мая (23)
- ►апреля (44)
- ▼марта (59)
- Пользователь вводит 3 суммы в копейках, небходимо .
- 20 инопланетян поочередно прилетают на землю с цел.
- Вводить различные числа. Когда будет введен 0, то .
- Вводим любое число с клавиатуры и нужно определить.
- Подсчитать количество натуральных чисел n ( 102 < .
- Написать программу, которая находит в массиве само.
- Написать программу, которая находит в массиве знач.
- Написать программу, которая находит сумму четных и.
- Написать программу, которая выводит содержимое мас.
- Написать программу, которая находит минимальное и .
- Написать программу, которая находит сумму всех отр.
- Показ содержимого массива на экран
- Инициализация массива при помощи цикла
- Найти сумму всех чисел от 1 до 100
- Выбрать наибольшее из трёх заданных чисел
- Определить, есть ли среди цифр заданного целого тр.
- Известны год и номер месяца рождения человека. Опр.
- Определить максимальное и минимальное значения из .
- При помощи цикла показать на экран календарь текущ.
- Написать программу, которая выводит на экран — сле.
- Создать программу, которая выводит на экран просты.
- Вывести на экран прямоугольник из символов 20 на 20
- Написать программу, которая выводит на экран табли.
- Цикл в цикле
- Пользователь вводит с клавиатуры число, необходимо.
- Пользователь вводит с клавиатуры число, необходимо.
- Пользователь вводит с клавиатуры число — программа.
- Использование кириллицы в консольных приложениях
- Пользователь вводить число. Вывести на экран числа.
- Пользователь с клавиатуры последовательно вводит ц.
- Часы бьют каждый час, столько раз, сколько времени.
- Операторы break и continue для конструкции for
- пример конструкции for
- Дано натуральное число n. Написать программу, кото.
- Написать программу, которая находит сумму всех цел.
- Разработать программу, которая выводит на экран го.
- Написать программу, выводящую на экран линию из 5 .
- Написать программу, которая находит сумму всех цел.
- Пример do while
- Пример while
- Напишите программу, реализующую популярную телевиз.
- Известно, что 1 дюйм равен 2.54 см. Разработать пр.
- Дано натуральное число а (a меньше 100). Напишите .
- Напишите программу, проверяющую число, введенное с.
- Программа, которая переводит систему буквенных оце.
- Структура множественного выбора switch
- Практический пример на принадлежность точки кольцу.
- Лесенка if — else if
- Программа, будет определять, какое из двух чисел, .
- Тернарный оператор УТВЕРЖДЕНИЕ ИЛИ ВЫРАЖЕНИЕ?ДЕЙСТ.
- Если к блоку if или else относится только одна ком.
- Конструкция if без else
- Конструкция логического выбора if
- Пример, использующий преобразование типов
- Программа для выяснения параметров окружности
- Введите три числа и выведите на экран значение сум.
- В C нет операции возведения в квадрат.Напишите про.
- Напишите программу, которая переводит гривны в $, .
- Напишите программу, вычисляющую среднее арифметиче.
Источник: prog88.blogspot.com
УРОК 9 -10. Максимальный и минимальный элемент массива (10 класс)
Как программно определить максимальный и минимальный предел данных int в C?
Я пытаюсь выполнить упражнение 2.1 KIntegral Ranges (from constants)n»); printf(«int max: %dn», INT_MAX); printf(«int min: %dn», INT_MIN); printf(«unsigned int max: %un», UINT_MAX);
однако я хочу определить пределы программно.
я попробовал этот код, который, похоже, должен работать, но на самом деле он входит в бесконечный цикл и застревает там:
printf(«Integral Ranges (determined programmatically)n»); int i_max = 0; while ((i_max + 1) > i_max) < ++i_max; >printf(«int max: %dn», i_max);
почему это застряло в петле? Казалось бы, когда целое число переполняется, оно перескакивает с 2147483647 на -2147483648. Увеличенное значение явно меньше предыдущего значения, поэтому цикл должен заканчиваться, но это нет.
автор: Gaurang Tandon
6 ответов
хорошо, я собирался написать комментарий, но он стал слишком длинным.
вы можете использовать sizeof ?
если true, то есть простой способ найти максимальное значение для любого типа:
например, я найду максимальное значение для целого числа:
Предыдущее определение переполняется, если мы используем целые числа для вычисления int max, поэтому его нужно адаптировать правильно:
INT_MAX = (1
и с помощью sizeof :
INT_MAX = ((1
вы можете сделать то же самое для любого подписанные/неподписанные типа, просто читая правила для каждого типа.
автор: Juan Ramirez
Так это на самом деле не застрять в бесконечном цикле. Код C обычно настолько быстр, что я предполагаю, что он сломан, если он не завершается немедленно.
он в конечном итоге вернул правильный ответ после того, как я позволил ему работать около 10 секунд. Оказывается, что 2,147,483,647 приращений занимает довольно много циклов для завершения.
Я также должен отметить, что я составил с cc -O0 отключить оптимизацию, так что это не проблема.
быстрее решение может выглядеть примерно так:
int i_max = 0; int step_size = 256; while ((i_max + step_size) > i_max) < i_max += step_size; >while ((i_max + 1) > i_max) < ++i_max; >printf(«int max: %dn», i_max);
однако, поскольку подписанное переполнение является неопределенным поведением, вероятно, это ужасная идея когда-либо пытаться программно угадать это на практике. Лучше использовать INT_MAX .
автор: Sam Davies
предполагая процессор дополнения двух, используйте unsigned math:
unsigned . smax, smin; smax = ((unsigned . )0 — (unsigned . )1) / (unsigned . ) 2; smin = ~smax;
автор: rcgldr
как было указано здесь в других решениях, попытка переполнения целого числа в C является неопределенным поведением, но, по крайней мере, в этом случае, я думаю, вы можете получить действительный ответ, даже от U. B. thing:
дело в том, что если вы увеличиваете значение и сравниваете новое значение с последним, вы всегда получаете большее значение, за исключением переполнения (в этом случае вы получите значение меньше или равно- — — у вас нет больше значений больше, это так в переполнении), поэтому вы можете попробовать минимум:
int i_old = 0, i = 0; while (++i > i_old) i_old = i; printf(«MAX_INT guess: %dn», i_old);
после этого цикла вы получите ожидаемое переполнение и old_i будет сохранять последнее допустимое число. Конечно, если вы спуститесь, вам придется использовать этот фрагмент кода:
int i_old = 0, i = 0; while (—i < i_old) i_old = i; printf(«MIN_INT guess: %dn», i_old);
конечно, U. B. может даже означать остановку запуска программы (в этом случае вам придется поместить трассировки, чтобы получить хотя бы последнее значение)
кстати, в древние времена K signed int int_max = uint_max >> 1; signed int int_min1 = (-int_max — 1); signed int int_min2 = ~int_max;
2^3 is 1000 . 2^3 — 1 is 0111 . 2^4 — 1 is 1111 .
w — это длина в битах вашего типа данных.
uint_max is 2^w-1 или 111. 111 . Этот эффект достигается с помощью ~0U .
int_max is 2^(w-1) — 1 или 0111. 111 . Этот эффект может быть достигнуто путем bitshifting uint_max 1 бит вправо. С uint_max является значением без знака, логический сдвиг применяется >> оператор, означает, что он добавляет ведущие нули вместо расширения бита знака.
int_min is -2^(w-1) или 100. 000 . В дополнении two самый значительный бит имеет отрицательный вес!
вот как визуализировать первое выражение для вычисления int_min1 :
. 011. 111 int_max +2^(w-1) — 1 100. 000 (-int_max — 1) -2^(w-1) == -2^(w-1) + 1 — 1 100. 001 -int_max -2^(w-1) + 1 == -(+2^(w-1) — 1) .
добавление 1 будет двигаться вниз, а вычитание 1 будет двигаться вверх. Сначала мы отрицаем int_max для создания действительного int значение, затем мы вычитаем 1, чтобы получить int_min . Мы не можем просто отрицать (int_max + 1) потому что это будет превышать , большой int значение.
в зависимости от версии C или C++ вы используете выражение -(int_max + 1) либо станет 64-разрядным целым числом со знаком, сохраняя знак, но жертвуя исходной битовой шириной, или она станет 32-разрядным целым числом без знака, сохраняя исходную битовую ширину, но жертвуя значимостью. Мы должны объявить int_min программно в этом обходном пути, чтобы сохранить его действительным int значение.
если это немного (или байт) слишком сложно для вас, вы можете просто сделать ~int_max , заметив, что int_max is 011. 111 и int_min is 100. 000 .
имейте в виду, что эти методы, которые я упомянул здесь, могут быть использованы для любой битовой ширины w целочисленного типа данных. Их можно использовать для char , short , int , long , а также long long . Имейте в виду, что целочисленные литералы почти всегда 32-бит по умолчанию, поэтому вам, возможно, придется бросить 0U к типу данных с соответствующей битовой шириной, прежде чем побитовое отмечая его. Но кроме этого, эти методы основаны на фундаментальных математических принципах представления целых чисел дополнения two. Тем не менее, они не будут работать, если ваш компьютер использует другой способ представления целых чисел,например дополнения или наиболее значимого знака-бита.
автор: Galaxy
в задании говорится, что» печать соответствующих значений из стандартных заголовков » разрешена, и в реальном мире это то, что вы бы сделали. Как писал ваш профессор, прямые вычисления сложнее, и зачем усложнять их ради них самих, когда вы работаете над другой интересной проблемой и просто хотите получить результат? Посмотрите константы в , например, INT_MIN и INT_MAX .
так как это домашнее задание и вы хотите решить ее самостоятельно, вот некоторые полунамеки.
языковой стандарт технически позволяет любое из трех различных представлений для подписанных чисел: два-дополнение, один-дополнение и знак и величина. Конечно, каждый компьютер, сделанный за последние пятьдесят лет, использовал два дополнения (за частичным исключением устаревшего кода для некоторых мейнфреймов Unisys), но если вы действительно хотите языковой юрист, вы можете вычислить наименьшее число для каждого из трех возможных представлений и найти минимум, сравнивая их.
пытаясь найти ответ на переполняющий или underflowing значения не работает! Это неопределенное поведение! Вы можете теоретически, но не на практике, увеличить unsigned значение той же ширины, преобразовать в соответствующий тип со знаком и сравнить с результатом литья предыдущего или следующего значения без знака. Для 32-разрядных long , это может быть просто терпимым, но не к машине, где long 64 бита широкий.
для значений с плавающей запятой единственный переносимый способ-использовать константы в ; значения с плавающей запятой могут представлять или не представлять положительная и отрицательная бесконечность, не ограничены в использовании какого-либо конкретного формата. Тем не менее, если ваш компилятор поддерживает необязательное приложение G стандарта C11, которое определяет сложную арифметику IEC 60559, то деление ненулевого числа с плавающей запятой на ноль будет определено как производящее бесконечность, что позволяет вам «вычислять» бесконечность и отрицательную бесконечность. Если да, то реализация будет #define __STDC_IEC_559_COMPLEX__ как 1.
если вы обнаружите, что infinity не поддерживается на вашем реализация, например, путем проверки того, INFINITY и -INFINITY бесконечности, вы хотели бы использовать HUGE_VAL и -HUGE_VAL вместо.
Источник: askdev.ru