Программы с массивами

1. Написать программу, которая вводит с клавиатуры одномерный массив из 5 целых чисел и выводит количество ненулевых элементов. Перед вводом каждого элемента на экране должна появляться подсказка с его номером.

После ввода каждого числа нажмите <Enter>
а[1] -> 12
а[2] -> О
а[3] -> 3
а[4] -> -1
а[5] -> О
В массиве 3 ненулевых элемента.

Решение:

соnst
    size=5; {razmer massiva}
var
    a: array[1..size] of integer;
    n: integer; {koli4estvo nenulevih elementov}
    i: integer; {indeks}
begin
    writeln ('vvod massiva celih 4isel');
    write ('Posle vvoda kazdogo 4isla ');
    write ('nazimajte ENTER');
n:=0;
for i:=1 to size do
    begin
        write ('a[',i,'] -- ');
       readln (a[i]);
       if a[i] <> 0 then n:=n+1;
    end;
writeln ('v massive ',n,' nenulevih elementa.');
readln;
end.


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

Решение:

{ Вычисление суммы элементов массива (по столбцам) }
const
    ROW=3; { кол-во строк }
    COL=5; { кол-во столбцов }
var
    a: array[1..ROW,1..COL] of integer; { массив }
    s: array[1..COL] of integer; { сумма элементов }
    i,j: integer;
begin
    writeln('Введите массив.');
    writeln('После ввода элементов каждой строки,',COL,' целых чисел, нажимайте <Enter>');
    for i:=l to ROW do { ROW строк }
        begin
            write('->');
            for j:=l to COL-1 do
                read(a[i,j]) ;
                readln(a[i,COL]);
        end;
    writeln('Введенный массив');
        for i:=l to ROW do
            begin
                for j:=1 to COL-1 do
                    write(a[i,j]:4);
                    writeln(a[i,COL]:4);
            end; { обработка }
    for j:=1 to COL do { для каждого столбца }
        for i:=l to ROW do { суммируем эл-ты одного столбца }
            writeln('---------');
    for i:=l to COL do
        write(s[i]:4) ; writeln;
        readln;
end.



3. Написать программу игры "Угадай число". Правила игры следующие. Играют двое. Один задумывает число, второй — угадывает. На каждом шаге угадывающий делает предположение, а задумавший число — говорит, сколько цифр числа угаданы и сколько из этих цифр занимают правильные позиции в числе. Например, если задумано число 725 и выдвинуто предположение, что задумано число 523, то считаются угаданными две цифры (5 и 2) и одна из них (2) занимает верную позицию.
Ниже представлен рекомендуемый вид экрана во время работы программы. Данные, введенные пользователем, выделены полужирным шрифтом.

Компьютер задумал трехзначное число. Вы должны его отгадать.
После очередного числа вам будет сообщено, сколько цифр
угадано и сколько из них находится на своих местах.
После ввода числа нажимайте <Enter>.
Для завершения игры нажмите <Esc>.
Ваш вариант -> 123 Угадано: 0.На своих местах:0
Ваш вариант -> 456 Угадано: 1.На своих местах:0
Ваш вариант -> 654 Угадано: 2.На своих местах:2
Ваш вариант -> 657 Угадано: 2.На своих местах:2
Ваш вариант -> 658 Угадано: 3.На своих местах:3
*** ВЫ УГАДАЛИ ! ***
Нажмите <Enter> для завершения.

Решение:

{ Игра "Угадай число" }
const
    N=3; { уровень сложности - количество цифр в числе}

var
    igrok: array[1..N]of char; { комбинация игрока }
    comp: array[1..N]of char; { комбинация компьютера }
    a:- arrayfl..N] of boolean; { a[i]= TRUE, если i-я цифра компьютера совпала с одной из цифр игрока }
    ugad:integer;{ угадано чисел }
    mesto:integer;{ из них на своих местах }
    i,j: integer; { индексы массива }
begin
    writeln('Компьютер задумал трехзначное число. ',
                'Вы должны его отгадать.');
    writeln('После ввода очередного числа, вам будет ',
                'сообщено, сколько цифр');
    writeln('угадано и сколько из них находятся ',
                'на своих местах. ') ;
    writeln('После ввода числа нажимайте <Enter>.');
{ компьютер "задумывает" свое число }
    randomize;
    for i:=l to N do
        comp[i]:=chr(random(10)+48); ( 48 - код символа '0' }
    write('Компьютер задумал: ');
        for i:=l to N do
            write(comp[i]);
            writeln;
    repeat
        write('Ваш вариант-> '); {получить вариант игрока }
        for i:=l to N-l do
            read(igrok[i]);
            readln(igrok[N]);
        for i:=l to N do
            a[i]:=FALSE; { a[i] = TRUE, если i-я цифра числа компьютера
                                    совпала с одной из цифр числа игрока }
{ проверим, сколько цифр угадано }
    ugad:=0;
    for i:=l to N do { проверим каждую цифру игрока }
        for j : =1 to N do
            begin
                if (igrok[i] = comp[j]) and not a[j] then
                    begin
                        ugad:=ugad+l;
                        a[j]:=TRUE; { запретим сравнивать
                                                эту цифру компьютера с оставшимися,
                                                еще не проверенными цифрами игрока }
                    end;
             end;
{ проверим, сколько на своих местах }
    mesto:=0;
    for i:=l to N do
        if igrok[i] = comp[i] then mesto:=mesto+l;
    writeln('Угадано:',ugad,'. На своих местах:',mesto);
        until (ugad « N) and (mesto = N) ;
        writeln('***ВЫ УГАДАЛИ ЧИСЛО!***');
        write('Нажмите <Enter> для завершения.');
        readln;
end.