Программы с массивами
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.