Задачи по Pascal. Найти количество различных чисел в массиве.

Задачи по Pascal

Условие задачи : В массиве из 30 элементов числа образуют неубывающую последовательность. Найти количество различных чисел в массиве (Язык Pascal)

Сложность : средняя .

Решение задачи :

Для начала продумаем наше решение. Случайным образом заполним массив, дальше постарайтесь понять что мы будем делать.

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

Сейчас всё разберем.

Для того чтобы найти количество различных чисел в массиве нам понадобятся следующие переменные :

  1. Переменные i и j — для циклов
  2. Переменная count — для количества различных чисел
  3. Переменная k — переменная которая будет увеличиваться на 1 каждый раз как мы найдем одинаковой число
  4. Переменная mass — для массива

Начнем мы с каркаса нашей программы :

uses crt;

type
    massiv = array[1..100] of integer;

var
    mass : massiv;
    i , j , count , k : integer;

begin
clrscr;

randomize;
end.

Тут мы создали свой тип данных , зачем читайте (тут), объявили все переменные , и включили генератор случайных чисел, подробнее (тут)

Теперь заполним массив случайными числами :

for i:=1 to 30 do
    begin
        mass[i] := random(20);
        write(mass[i], ' | ');
    end;

Заполнили и вывели все числа массива. А вот дальше самое …..

for i:=1 to 30 do
    begin
        for j:=1 to 30 do
            begin
                if (mass[i] = mass[j]) and (i <> j) then
                    k := k + 1;
            end;
        if k = 0 then
            begin
                write(mass[i], ' | ');
                count := count + 1;
            end;
        k := 0;
    end;

Ну вот ваще нечего непонятно. Давайте попробуем разобраться, вот допустим у нас есть маленький массив из трех чисел:

3 2 2

Смотрим на 1-й цикл, мы берем 1-е число, в нашем случае 3 и пускаем второй в нем условие если элементы равны и их индексы не совпадают(это сделано чтобы не сравнивать одинаковые условия) , то увеличиваем k на 1, это будет означать что такое число есть в массиве.

К нашему примеру , у нас идет 3 и 3 условие не выполнятся, дальше 3 и 2 условие не выполнятся, дальше опять 3 и 2, тоже не выполнятся, в конечном итоге у нас переменная k осталась равна 0, это будет означать, что число 3 единственное на весь массив.

Если сравнивать двойки, то k у нас увеличиться, и это будет означать что в массиве есть еще одна или больше.

Ну вот такой принцип. Если вы не поняли то, напишите на бумажке себе маленький массив, и подставьте в этот цикл.

Всё решение задачи Pascal :

uses crt;

type
    massiv = array[1..100] of integer; // создали тип данных для массива

var
    mass : massiv;  // объявили
    i , j , count , k : integer; // переменные

begin
clrscr; // очистили экран

randomize; // включили генератор случайных чисел

for i:=1 to 30 do // пускайем цикл
    begin
        mass[i] := random(20); // заполняем массив
        write(mass[i], ' | '); // выводим
    end;
writeln;
writeln('Элементы которые не повторяются');
for i:=1 to 30 do // пускаем цикл 
    begin
        for j:=1 to 30 do // второй цикл
            begin
                if (mass[i] = mass[j]) and (i <> j) then // если элементы равны и индексы не равны
                    k := k + 1; // k увеличиваем на 1
            end;
        if k = 0 then // если к = 0 
            begin
                write(mass[i], ' | '); // выводим число которое не повторяется
                count := count + 1; // увеличиваем кол-во таких чисел на 1
            end;
        k := 0; // обнуляем к
    end;

writeln;
writeln('Кол-во не повторяющихся элементов : ', count); // выводим результат 
readln; // чтобы программа не закрывалась

end.

cyber
Оцените автора
CyberLesson | Быстро освоить программирование Pascal и C++. Решение задач Pascal и C++
Добавить комментарий