2. считывание изображения и его конвертирование в цифровой формат
3. область сканирования, оптическое разрешение, тип матрицы сканера
4. Epson, canon, hp, Xerox
5. В результате преобразования света получается электрический сигнал, содержащий информацию об активности цвета в исходной точке сканируемого изображения. После оцифровки аналогового сигнала в АЦП цифровой сигнал через аппаратный интерфейс сканера идет в компьютер, где его получает и анализирует программа для работы со сканером. После окончания одного такого цикла (освещение оригинала — получение сигнала — преобразование сигнала — получение его программой) источник света и приемник светового отражения перемещается относительно оригинала.
6. Сканеры в основном используются при переводе бумажных носителей в электронные. Вместе с хэш-функциями, которыми заверяют документы нотариусы, используются в делопроизводствах. Ручные сканеры используются в супермаркетах для считывания штрих-кодов. Перспективы развития у них низкие, разве что в уменьшении размеров, т.к. на современном уровне сканеры считывают изображения и электронный вид точно такой же, а после обработки даже лучше, как и у бумажного оригинала.
var x: array[1..n] of integer; i, k, d, s: integer;
begin Randomize; Writeln('Элементы массива'); k := 0; s := 0; for i := 1 to n do begin d := Random(11) - 5; Write(d:3); if (i mod 2) = 0 then begin { четное место } if d = 1 then Inc(k); x[i] := d end else begin if d < 0 then s := s + d; x[i] := sqr(d) end end; Writeln; Writeln('Результирующий массив'); for i := 1 to n do Write(x[i]:3); Writeln; Writeln('Количество единиц на четных местах равно ', k); Writeln('Сумма отрицательных элементов на нечетных местах равна ', s) end.
Тестовое решение: Элементы массива -3 0 -5 1 5 1 -3 -4 5 -3 -2 Результирующий массив 9 0 25 1 25 1 9 -4 25 -3 4 Количество единиц на четных местах равно 2 Сумма отрицательных элементов на нечетных местах равна -13
#include "stdafx.h"
#include "iostream"
#include "vector"
#include "cmath"
#include "locale.h"
using namespace std;
int main()
{
// Считываем размер вводимой матрицы
setlocale(LC_ALL, "rus");
int size;
cout << "Введите размер вводимой матрицы: ";
cin >> size;
cout << endl;
// Будем хранить матрицу в векторе, состоящем из
// векторов вещественных чисел
vector <vector <long double> > matrix;
// Матрица будет иметь размер (size) x (size + 1),
// c учетом столбца свободных членов
matrix.resize (size);
cout << "Введите элементы матрицы " << size << "x" << size+1 <<":" <<endl;
for (int i = 0; i < size; i++)
{
matrix[i].resize (size + 1);
for (int j = 0; j < size + 1; j++)
{
cin >> matrix[i][j];
}
}
// Считываем необходимую точность решения
long double eps;
cout << endl;
cout << "Введите точность решения: ";
cin >> eps;
// Введем вектор значений неизвестных на предыдущей итерации,
// размер которого равен числу строк в матрице, т.е. size,
// причем согласно методу изначально заполняем его нулями
vector <long double> previousVariableValues (size, 0.0);
// Будем выполнять итерационный процесс до тех пор,
// пока не будет достигнута необходимая точность
while (true)
{
// Введем вектор значений неизвестных на текущем шаге
vector <long double> currentVariableValues (size);
// Посчитаем значения неизвестных на текущей итерации
// в соответствии с теоретическими формулами
for (int i = 0; i < size; i++)
{
// Инициализируем i-ую неизвестную значением
// свободного члена i-ой строки матрицы
currentVariableValues[i] = matrix[i][size];
// Вычитаем сумму по всем отличным от i-ой неизвестным
for (int j = 0; j < size; j++)
{
if (i != j)
{
currentVariableValues[i] -= matrix[i][j] * previousVariableValues[j];
}
}
// Делим на коэффициент при i-ой неизвестной
currentVariableValues[i] /= matrix[i][i];
}
// Посчитаем текущую погрешность относительно предыдущей итерации
long double error = 0.0;
for (int i = 0; i < size; i++)
{
error += abs (currentVariableValues[i] - previousVariableValues[i]);
}
// Если необходимая точность достигнута, то завершаем процесс
if (error < eps)
{
break;
}
// Переходим к следующей итерации, так
// что текущие значения неизвестных
// становятся значениями на предыдущей итерации
previousVariableValues = currentVariableValues;
}
// Выводим найденные значения неизвестных с 8 знаками точности
for (int i = 0; i < size; i++)
{
printf ("%.8llf ", previousVariableValues[i]);
}
cout << endl;
system("pause");
return 0;
}
Объяснение: