vasta5555555
13.11.2020 14:44

1. Размеры растрового изображения 1200 на 1200 px. Глубина цвета - 32 бит. Определите вес изображения в мегабайтах.

2. Сколько цветов содержит палитра, если каждый пиксель изображения кодируется 8 битами?

3. Сканируется цветное изображение размером 25 на 25 см. Разрешающая сканера - 600 на 600 dpi, глубина цвета - 3 байта. Сколько мегабайт будет весить полученный графический файл?

P.S. 1 дюйм = 2,5 см.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
freemvount
18.01.2023 06:43

Задачка мне очень понравилась, прилагаю решение на C#, консольное приложение

Объяснение:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace Археологи_строители

{ class Program

   {

       static void Main(string[] args)

       {

           //Объявляем и задаем переменные "M" и "N", а так же переменную для результата

           int M,N=new int();

           int MyResult = 0;

           Console.WriteLine("Ведите Текущее количество ступенек и Сколько их должно быть:");

           M = int.Parse(Console.ReadLine());

           N = int.Parse(Console.ReadLine());

           // Создаем массив для хранения данных о ступенях. M-Количество ступенек, Цифра - для колонок длины и высоты

           int[,] mass = new int[M,2];

           // Запись значений в массив

           for (int x = 0; x < M; x++){

               for (int y = 0; y < 2; y++){

                   if (y==0){  //Чисто для юзерфрендли отображения

                       Console.Write($"Введите значение Длины для ступеньки №{x + 1}= ");} else{

                       Console.Write($"Введите значение Высоты для ступеньки №{x + 1}= ");}

                   mass[x, y] = Convert.ToInt32(Console.ReadLine());}

                   Console.WriteLine();}

           /* Как оказалось, самый простой определить какую же ступеньку надо "поднимать"-

            * это вычислить площадь гипотетически "заполняемого" пространства над ступенькой и взять

            * наименьшее значение.

            *  

            * Итак, допустим если у нас 5 ступенек, то нам нам необходимо записать 4 значения

            * (в рамках лестницы) площади заполняемых ступенек.

            *  

            * Перемножаем Длину ступеньки N на высоту ступеньки N+1, M-1 раз и сохраняем в массив

            */

           int M2 = M; //Дублируем изначальное число ступенек для контроля цикла

           for (int z = 0; z <M2-N; z++)

           {

               int[] acreage = new int[M - 1];

               for (int x = 0; x < M - 1; x++)

               {

                   for (int y = 0; y < 2; y++)

                   {

                       acreage[x] = mass[x, 0] * mass[x + 1, 1];

                   }

               }

               /*

                * И так у нас есть все значения гипотетически заполняемой ступеньки.

                * Ищем минимальное значение площади  

                */

               int minAcreage = acreage[0];

               for (int i = 0; i < M - 1; i++)

               {

                   if (minAcreage > acreage[i])

                   {

                       minAcreage = acreage[i];

                   }

               }

               MyResult = MyResult+minAcreage; //Плюсуем данное значение в переменную результата

               // У нас есть минимальная площадь. Найдем номер данной ступеньки

               int IndexAcreage = Array.IndexOf(acreage, minAcreage);

               //"Достроим нужную нам ступеньку и запишем обновленные данные во временный массив"

               int[,] tempMass = new int[M - 1, 2]; //Он на размер меньше, т.к. и "полных" ступенек у нас стало меньше

               for (int x = 0; x < M - 1; x++)

               {

                   for (int y = 0; y < 2; y++)

                   {

                       //Ступеньки до IndexAcreage мы просто переписываем во временный массив

                       if (x < IndexAcreage)

                       {

                           tempMass[x, y] = mass[x, y];

                       }

                       //2 ступеньки от IndexAcreage мы превращаем в одну (застраивая их блоками)

                       else if (x == IndexAcreage)

                       {

                           tempMass[x, y] = mass[x, y] + mass[x + 1, y];

                       }

                       /* и после IndexAcreage мы та же копируем, но со сдвигом вправо, т.к. полноценных  

                        * ступенек стало меньше

                        */

                       else if (x > IndexAcreage)

                       {

                           tempMass[x, y] = mass[x + 1, y];

                       }

                   }

               }

               M = M - 1; //Поскольку ступенек теперь меньше, то и их фактическое число необходимо уменьшить

               for (int x = 0; x < M + 1; x++)

               {

                   for (int y = 0; y < 2; y++)

                   {

                       mass[x, y] = 0;

                   }

               }

               //переписываем данные в основной массив и запускаем следющую интерацию цикла

               for (int x = 0; x < M; x++)

               {

                   for (int y = 0; y < 2; y++)

                   {

                       mass[x, y] = tempMass[x, y];

                   }

               }

           }

           Console.WriteLine($"Минимально необходимое число блоков: {MyResult}");

           Console.ReadKey(true);

       }

   }

}

0,0(0 оценок)
Ответ:
ваган231001
09.01.2022 16:53

program n1;

uses crt;

var aw:array[1..10] of integer;

i,w,g:integer;

begin

g:=0;

w:=10;

for i:=0+1 to w do begin

aw[i]:=random(100);

write(aw[i]:6);

end;

writeln();

write('Чот');

for i:=0+1 to w do begin

if aw[i] mod 2 = 0 then g:=g+1; end; write('Всего чотных чисел ',g);

writeln();

write('Не чот');

g:=0;

for i:=0+1 to w do begin

if aw[i] mod 2 > 0 then g:=g+1;end; write('Всего не чотных чисел ',g) ;

end.

uses crt;

const

n=10;

var

mas:array[1..n] of integer;

i,c,b:integer;

begin

randomize;

c:=0;

b:=0;

for i:=1 to n do

mas[i]:=random(101)+1;

for i:=1 to n do

write(mas[i],' ');

for i:=1 to n do

begin

if mas[i] mod 2=0 then

inc(c);

end;

writeln('c=',c);

for i:=1 to n do

begin

if mas[i] mod 2<>0 then

inc(b);

end;

writeln('b=',b);

end.

const n = 10;

type Mstring = array [1..n] of string;

var m:Mstring;

procedure InputM(var arg:Mstring);

var i:byte;

begin

for i:=1 to n do

begin

writeln('enter string number ',i);

readln(arg[i]);

end;

end;

procedure OutputM(const arg:Mstring);

var i:byte;

begin

for i:=1 to n do

begin

writeln(arg[i]);

end;

end;

function repl(const arg:string):string;

var i:byte;

res:string;

begin

res:=arg;

for i:=1 to length(res) do

begin

if res[i] = '!' then res[i]:='.';

end;

repl:=res;

end;

procedure MasRepl(var arg:Mstring);

var i:byte;

begin

for i:=1 to n do

begin

arg[i]:= repl(arg[i]);

end;

end;

begin

InputM(m);

MasRepl(m);

OutputM(m);

readln;

end.

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота