Меню

Как заполнить массив с помощью генератора случайных чисел



Pascal: Занятие № 5. Одномерные массивы в Паскале

Одномерные массивы в Паскале

Объявление массива

Массивы в Паскале используются двух типов: одномерные и двумерные.
Определение одномерного массива в Паскале звучит так: одномерный массив — это определенное количество элементов, относящихся к одному и тому же типу данных, которые имеют одно имя, и каждый элемент имеет свой индекс — порядковый номер.
Описание массива в Паскале (объявление) и обращение к его элементам происходит следующим образом:

var dlina: array [1..3] of integer; begin dlina[1]:=500; dlina[2]:=400; dlina[3]:=150; .

Объявить размер можно через константу:

Инициализация массива

Кроме того, массив может быть сам константным, т.е. все его элементы в программе заранее определены. Описание такого массива выглядит следующим образом:

const a:array[1..4] of integer = (1, 3, 2, 5);

Заполнение последовательными числами:

Ввод с клавиатуры:

writeln (‘введите кол-во элементов: ‘); readln(n); <если кол-во заранее не известно, - запрашиваем его>for i := 1 to n do begin write(‘a[‘, i, ‘]=’); read(a[i]); . end; .


✍ Пример результата:

Вывод элементов массива

var a: array[1..5] of integer; <массив из пяти элементов>i: integer; begin a[1]:=2; a[2]:=4; a[3]:=8; a[4]:=6; a[5]:=3; writeln(‘Массив A:’); for i := 1 to 5 do write(a[i]:2); <вывод элементов массива>end.

Для работы с массивами чаще всего используется в Паскале цикл for с параметром, так как обычно известно, сколько элементов в массиве, и можно использовать счетчик цикла в качестве индексов элементов.

В данном примере работы с одномерным массивом есть явное неудобство: присваивание значений элементам.

Функция Random в Pascal

Для того чтобы постоянно не запрашивать значения элементов массива используется генератор случайных чисел в Паскаль, который реализуется функцией Random . На самом деле генерируются псевдослучайные числа, но суть не в этом.

Диапазон в Паскале тех самых случайных чисел от a до b задается формулой:

var f: array[1..10] of integer; i:integer; begin randomize; for i:=1 to 10 do begin f[i]:=random(10); < интервал [0,9] >write(f[i],’ ‘); end; end.

Для вещественных чисел в интервале [0,1]:

var x: real; . x := random(0.0,1.0);;

Числа Фибоначчи в Паскале

Наиболее распространенным примером работы с массивом является вывод ряда чисел Фибоначчи в Паскаль. Рассмотрим его.

Получили формулу элементов ряда.

var i:integer; f:array[0..19]of integer; begin f[0]:=1; f[1]:=1; for i:=2 to 19 do begin f[i]:=f[i-1]+f[i-2]; writeln(f[i]) end; end.

На данном примере, становится понятен принцип работы с числовыми рядами. Обычно, для вывода числового ряда находится формула определения каждого элемента данного ряда. Так, в случае с числами Фибоначчи, эта формула-правило выглядит как f[i]:=f[i-1]+f[i-2] . Поэтому ее необходимо использовать в цикле for при формировании элементов массива.

Максимальный (минимальный) элемент массива

Псевдокод:

Поиск максимального элемента по его индексу:

Пример:

Поиск в массиве

Рассмотрим сложный пример работы с одномерными массивами:

Для решения поставленной задачи понадобится оператор break — выход из цикла.
Решение Вариант 1. Цикл for:

var f: array[1..10] of integer; flag:boolean; i,c:integer; begin randomize; for i:=1 to 10 do begin f[i]:=random(10); write(f[i],’ ‘); end; flag:=false; writeln(‘введите образец’); readln(c); for i:=1 to 10 do if f[i]=c then begin writeln(‘найден’); flag:=true; break; end; if flag=false then writeln(‘не найден’); end.

Читайте также:  Реле регулятор напряжения генератора ваз принцип работы

Рассмотрим эффективное решение:

Задача: найти в массиве элемент, равный X , или установить, что его нет.

Алгоритм:

  • начать с 1-го элемента ( i:=1 );
  • если очередной элемент ( A[i] ) равен X , то закончить поиск иначе перейти к следующему элементу.

решение на Паскале Вариант 2. Цикл While:

Поиск элемента в массиве

Предлагаем посмотреть подробный видео разбор поиска элемента в массиве (эффективный алгоритм):

Пример:

Циклический сдвиг

Решение:

Программа:

Перестановка элементов в массиве

Рассмотрим, как происходит перестановка или реверс массива.

Решение:

Псевдокод:

Программа:

Выбор элементов и сохранение в другой массив

Решение:


Вывод массива B:

writeln(‘Выбранные элементы’); for i:=1 to count-1 do write(B[i], ‘ ‘)

Сортировка элементов массива

  • В таком типе сортировок массив представляется в виде воды, маленькие элементы — пузырьки в воде, которые всплывают наверх (самые легкие).
  • При первой итерации цикла элементы массива попарно сравниваются между собой:предпоследний с последним, пред предпоследний с предпоследним и т.д. Если предшествующий элемент оказывается больше последующего, то производится их обмен.
  • При второй итерации цикла нет надобности сравнивать последний элемент с предпоследним. Последний элемент уже стоит на своем месте, он самый большой. Значит, число сравнений будет на одно меньше. То же самое касается каждой последующей итерации.

Выполнение на Паскале:

for i:=1 to N-1 do begin for j:=N-1 downto i do if A[j] > A[j+1] then begin с := A[j]; A[j] := A[j+1]; A[j+1] := с; end; end;

  • в массиве ищется минимальный элемент и ставится на первое место (меняется местами с A[1]);
  • среди оставшихся элементов также производится поиск минимального, который ставится на второе место (меняется местами с A[2]) и т.д.

Выполнение на Паскале:

for i := 1 to N-1 do begin min:= i ; for j:= i+1 to N do if A[j] i then begin c:=A[i]; A[i]:=A[min]; A[min]:=c; end; end;

    Выбирается и запоминается средний элемент массива (присвоим X):

  • Инициализируем две переменные (будущие индексы массива): L:=1, R:=N (N — количество элементов).
  • Увеличиваем L и ищем первый элемент A[L], который больше либо равен X (в итоге он должен находиться справа).
  • Уменьшаем R и ищем элемент A[R], который меньше либо равен X (в итоге он должен находиться слева).
  • Смотрим, если L X do R:= R — 1; if L

    Рубрики:

    См. пузырьковая сортировка.
    При второй итерации цикла (согласно вашим рисункам и коду ) нет надобности сравнивать первый элемент со вторым. Снова вы всех путаете =)

    admin

    Именно поэтому в коде : for j:=N-1 downto i do

    downto i — то есть мы доходим сначала до первого элемента, потом до второго и т.д.

    Bronislav

    Смотрите. Ваш код работает. Но работает не так, как вы пишете перед этим. Он просеивает минимальный элемент с конца через весь массив до первой позиции (первого индекса если хотите). А не так как вы пишете: «При второй итерации цикла нет надобности сравнивать последний элемент с предпоследним. Последний элемент уже стоит на своем месте, он самый большой.» Соответственно вашему коду и вашим рисункам на второй итерации не сравнивается первый элемент (минимальный) со вторым, а не последний (который вообще не факт что максимальный) с предпоследним. Вот об чем речь. Или код меняйте или описание алгоритма перед кодом.

    Читайте также:  Ролик натяжителя ремня генератора лада ларгус 8 клапанов артикул

    Владимир

    А как насчёт странного способа поменки оандомням образом, конечно это долго , но все таки есть
    Var
    A: array[1..10] of integer;
    I,e,r,r1: integer;
    Begin
    While i в 02:05

    В сохранении в другой массив ошибка. Надо поменять местами счётчик и команду сохранения. В массиве В нет элемента 0.

    Источник

    Ввести элементы двухмерного массива с использованием генератора случайных чисел в произвольном диапазоне

    1) Ввести элементы двухмерного массива произвольной структуры с общим размером не менее 30 с использованием генератора случайных чисел в произвольном диапазоне. Вывести массив на печать в виде матрицы.

    2) Из элементов матрицы размером не менее 30 элементов по произвольному условию сформировать вектор. Структуры ввода и вывода матрицы и вектора выбрать самостоятельно. Вывести на печать исходную матрицу и полученный вектор.

    3) Из элементов вектора размером не менее 30 элементов сформировать матрицу того же размера и произвольной структуры. Структуры ввода и вывода и вектора и матрицы выбрать самостоятельно. Вывести на печать исходную и полученную матрицу.

    Сформировать элементы массива с помощью генератора случайных чисел
    Задан двумерный массив вещественных чисел. 1. Сформировать элементы массива с помощью генератора.

    Ввести двумерный массив с помощью генератора случайных чисел
    РЕБЯТ. ввести двумерный массив 5*5 с помощью генератора случайных чисел. диапозон от -50 до.

    Решение

    Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

    Созд массив А[1..7] с использованием генератора случайных чисел.
    Помогите создать массив А с помощью генератора случайных чисел и вывести его на экран. Увеличить.

    Задание с матрицами и использованием генератора случайных чисел
    Поменять местами столбцы матрицы, номера столбцов указывает пользователь. Для заполнения.

    Написать программу, заносящую в файл 10 целых чисел с использованием генератора случайных чисел
    Написать программу, заносящую в файл 10 целых чисел с помощью генератора случайных чисел. Считать.

    Ввести элементы массива, используя генератор случайных чисел
    Pascal ABC Дана матрица А. Ввести элементы массива с помощью генератора случайных чисел в.

    Источник

    Создайте массив А[1..8] с помощью генератора случайных чисел с элементами от –10 до 10

    Создайте массив А[1..8] с помощью генератора случайных чисел с элементами от –10 до 10 и выведите его на экран. Подсчитайте количество отрицательных элементов массива.

    -вот такая у меня проблемка

    С помощью генератора случайных чисел создайте массив из 10 целых чисел
    С помощью генератора случайных чисел создайте массив из 10 целых чисел. Поменяйте местами рядом.

    Читайте также:  Генератор маленький для сварки

    С помощью генератора случайных чисел создать и вывести на экран массив случайных действительных чисел
    Задача №1: С помощью генератора случайных чисел создать и вывести на экран массив А 10×10.

    Заполнить массив с помощью генератора случайных чисел
    4. Заполнить массив A(8) с помощью генератора случайных чисел.

    Сформировать одномерный массив с помощью генератора случайных чисел
    Сформировать одномерный массив с помощью генератора случайных числе. Из элементов массива А.

    Решение

    Решена твоя проблема:

    спасибо что помог

    Добавлено через 18 минут 34 секунды
    И еще одна задачка на работу с типизированными файлами

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

    не как не пойму как сделать:'(

    Интересно написано: каждый из символов. Ну так, скорее всего:

    Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

    Ввести двумерный массив с помощью генератора случайных чисел
    РЕБЯТ. ввести двумерный массив 5*5 с помощью генератора случайных чисел. диапозон от -50 до.

    Создавать массив можно с помощью генератора случайных чисел
    Здравствуйте, подтолкните пожалуйста. Добавлено через 2 минуты Необходимо создать программу в.

    С помощью генератора случайных чисел необходимо создать массив
    Здравствуйте! С помощью генератора случайных чисел необходимо создать массив на, скажем, 25.

    Заменить одномерный массив с помощью генератора случайных чисел
    Написать программу ввода и вывода заменив одномерный массив с помощью генератора случайных чисел.

    Источник

    Как заполнить массив с помощью генератора случайных чисел

    Второе Домашнее задание:
    /*Вывести максимальное и минимальное значения массива*/

    using namespace std;

    void main()
    <
    setlocale(LC_ALL, «ru»);
    srand(time(NULL));

    int const SIZE = 10;
    int arr[SIZE];

    void main()
    <
    setlocale(LC_ALL, «ru»);

    int const SIZE = 10;
    int arr[SIZE];

    using namespace std;

    int SIze, Begin, ENd;
    cout « «Какое количество цифр нужно сгенерировать? \n»;
    while(!(cin » SIze))
    <
    cin.clear();
    //cin.ignore();
    while (cin.get() != ‘\n’)
    continue;
    >
    int arr[SIze]=<>;
    cout « «\nОпределите начало диапазона случайных чисел (включительно): \n»;

    while(!(cin » Begin))
    <
    cin.clear();
    //cin.ignore();
    while (cin.get() != ‘\n’)
    continue;
    >
    cout « «\nОпределите конец диапазона случайных чисел (включительно): \n»;

    while (cin.get() != ‘\n’)
    continue;

    Вот, что в итоге получилось, все работает, как я хотела
    #include
    #include
    #include

    using namespace std;

    int SIze, Begin, ENd, n;
    cout « «Какое количество цифр нужно сгенерировать? \n»;
    while(!(cin » SIze))
    <
    cin.clear();
    //cin.ignore();
    while (cin.get() != ‘\n’)
    continue;
    >
    int arr[SIze]=<>;
    cout « «\nОпределите начало диапазона случайных чисел (включительно): \n»;

    while(!(cin » Begin))
    <
    cin.clear();
    //cin.ignore();
    while (cin.get() != ‘\n’)
    continue;
    >
    cout « «\nОпределите конец диапазона случайных чисел (включительно): \n»;

    while (cin.get() != ‘\n’)
    continue;

    for (int i = 0; i 100) <
    cout « «\n\nВведите корректный диапазон!\n\n» « endl;
    system(«pause»);
    system(«cls»);
    main();
    >
    alreadyThere = false;
    int NewRandomValue = rand()%ENd;

    for (int j=0; j = Begin))
    <
    arr[i] = NewRandomValue;
    i++;
    >

    for (int i = 0; i Нравится Показать список оценивших

    Источник