Сделайте сравнительную таблицу растровой векторной и фрактальной графики по пунктам 1) формирования изображения 2) увеличение размера изображения 3) уменьшение размера изображения 4) сохранение изображение 5) сферы применения
в чем смысл этой писанины ? цикл for прогоняет все индексы , а соответсна и все значения массива
и сравнивает значения каждого следующего индекса ( типо сначала значение А [1] , потом A [2] и так до 9 индекса ) со значением А[0] , которое сначала по условию 1
потом грубо говоря строки t:=A[i]; и A[0]:=t; можно заменить на A[0]:=A[i]; ( логично ж ) и наш изначальный A[0] будет принимать значение A[i] ( если выполнится if конечно же )
ДАЛЬШЕ ПРОГОНИМ ( это единственная более-менее полезная часть объяснения )
сначала заметь , что индексы идут от 1 до 9 ( а в условии индексы от 0 до 9)
смотрим : значение А [1] > А[0] ? ( т.е. 2 больше 1 ?) - да! , к c прибавляем единичку , a A[0] теперь не 1 , а 2.
аналогичные действия выполняем до 6 ( по значениям смысле) , на этот момент c должно быть равно 3
дальше будут числа меньше ( 5,0 , 4)
а потом по аналогии продолжаем , ведь 8 больше 6 ( опять же, я уже не обращаю внимания на индексы , ведь оно нам и не надо )
8 > 6 ? => c:= c+1 = 3 + 1 = 4 ; A[0]:=8
9> 8 ? => c:= c+1 =4 + 1 = 5; A[0]:= 9
дальше идти не будет ( 7 меньше 9 ) и программа прервется
sizeof - это оператор, принимающий какой-то тип или переменную и возвращающий количество байт, занимаемое в памяти этой переменной. Грубо говоря - Вы просите швею измерить Вашу талию: даёте ей измерить себя, а в ответ получаете обхват талии. Отсюда и выходит ответ, что занимаемое место в памяти типом byte равняется 1 байту.
Более глубокое объяснение происхождения числа 1
Нам понадобится формула , где N - это количество информации, а i - количество бит, отведённое на неё. У нас есть промежуток - это значения от 0 до 127. Всего значений получается 128. Если не верите - пересчитайте. Итак, подставим:
Мы получили количество бит, которое впритык занимает переменная в памяти. К радости, компьютеры устроены так, что память не делится на выделяемое переменной пространство (не создаются ячейки по 7 бит, 9 бит, 11 бит и так далее). Если программа выделила под переменную 7 бит, то компьютер выделит 2³ бит (8 бит ⇒ 1 байт), в котором переменная будет хорошо себя чувствовать и не тесниться. Приведу ещё пример для ясности:
Если переменная занимает 122 бита (это фантастика, но для примера сойдёт), то выделится 2⁷, поскольку:
2⁶ < 122 < 2⁷. Почему не 2⁶? Было бы смешно, если переменная, которая занимает 122 бит, занимала бы ячейку памяти в 64 бит. Это то же самое, если бы Вы поместили слона в коробку из-под спичек. Почему не 2⁸ или, например, не 2⁹⁹⁹⁹⁹⁹? А зачем компьютеру выделять такое пространство, если можно выделить наименьшее и быть в плюсе? Это то же самое, если бы Вы выделили для муравья десятиэтажный дом.
короче больше перемудрили , смотри
у тебя есть массив A
i - это индексы ес что , A[i] эт значения
в чем смысл этой писанины ? цикл for прогоняет все индексы , а соответсна и все значения массива
и сравнивает значения каждого следующего индекса ( типо сначала значение А [1] , потом A [2] и так до 9 индекса ) со значением А[0] , которое сначала по условию 1
потом грубо говоря строки t:=A[i]; и A[0]:=t; можно заменить на A[0]:=A[i]; ( логично ж ) и наш изначальный A[0] будет принимать значение A[i] ( если выполнится if конечно же )
ДАЛЬШЕ ПРОГОНИМ ( это единственная более-менее полезная часть объяснения )
сначала заметь , что индексы идут от 1 до 9 ( а в условии индексы от 0 до 9)
смотрим : значение А [1] > А[0] ? ( т.е. 2 больше 1 ?) - да! , к c прибавляем единичку , a A[0] теперь не 1 , а 2.
аналогичные действия выполняем до 6 ( по значениям смысле) , на этот момент c должно быть равно 3
дальше будут числа меньше ( 5,0 , 4)
а потом по аналогии продолжаем , ведь 8 больше 6 ( опять же, я уже не обращаю внимания на индексы , ведь оно нам и не надо )
8 > 6 ? => c:= c+1 = 3 + 1 = 4 ; A[0]:=8
9> 8 ? => c:= c+1 =4 + 1 = 5; A[0]:= 9
дальше идти не будет ( 7 меньше 9 ) и программа прервется
в ответ улетает 5
Я обращусь к низкоуровневому C++. У него нет типа byte, зато аналог ему - это unsigned char. Напишем простенькую программу:
#include <iostream>int main() { std::cout << sizeof(unsigned char); return 0;}Выполним её и получим ответом число 1.
Что это и откуда оно взялось?sizeof - это оператор, принимающий какой-то тип или переменную и возвращающий количество байт, занимаемое в памяти этой переменной. Грубо говоря - Вы просите швею измерить Вашу талию: даёте ей измерить себя, а в ответ получаете обхват талии. Отсюда и выходит ответ, что занимаемое место в памяти типом byte равняется 1 байту.
Более глубокое объяснение происхождения числа 1Нам понадобится формула , где N - это количество информации, а i - количество бит, отведённое на неё. У нас есть промежуток - это значения от 0 до 127. Всего значений получается 128. Если не верите - пересчитайте. Итак, подставим:
Мы получили количество бит, которое впритык занимает переменная в памяти. К радости, компьютеры устроены так, что память не делится на выделяемое переменной пространство (не создаются ячейки по 7 бит, 9 бит, 11 бит и так далее). Если программа выделила под переменную 7 бит, то компьютер выделит 2³ бит (8 бит ⇒ 1 байт), в котором переменная будет хорошо себя чувствовать и не тесниться. Приведу ещё пример для ясности:
Если переменная занимает 122 бита (это фантастика, но для примера сойдёт), то выделится 2⁷, поскольку:
2⁶ < 122 < 2⁷. Почему не 2⁶? Было бы смешно, если переменная, которая занимает 122 бит, занимала бы ячейку памяти в 64 бит. Это то же самое, если бы Вы поместили слона в коробку из-под спичек. Почему не 2⁸ или, например, не 2⁹⁹⁹⁹⁹⁹? А зачем компьютеру выделять такое пространство, если можно выделить наименьшее и быть в плюсе? Это то же самое, если бы Вы выделили для муравья десятиэтажный дом.
ответ1 байт