А. В. Розина программирование на паскале методическое пособие

Вид материалаМетодическое пособие

Содержание


Оператор выбора CASE
Примеры программ
Цикл по счетчику
Примеры программ
Цикл по условию
Примеры программ
Переменные типа СНАR
Примеры программ
Примеры программ
Объединение без пересечения
Примеры программ
Подобный материал:
1   2   3   4   5   6   7   8   9   10

Оператор выбора CASE




  1. Вводится натуральное число, не превосходящее 100. Напечатать, в каком диапазоне оно находится. Диапазон – это интервалы от 1 до 10, от 11 до 20, от 21 до 30 ... от 91 до 100.
  2. Составьте программу для вычисления числа дней в месяце по введенному номеру месяца.
  3. Составьте программу, которая по введенному возрасту определит, кто вы: дошкольник, школьник, студент, работающий или пенсионер.



Примеры программ



Задача 3.

program kto;

var i:integer;

begin

writeln ( 'сколько вам лет '); readln (i);

case i of

1..6 : writeln ('вы дошкольник');

7..17 : writeln ('вы школьник');

18..22 : writeln ('вы студент');

23..60 : writeln ('вы рабочий');

61..100 : writeln ('вы пенсионер')

else writeln ('вы долгожитель');

end;

end.


Цикл по счетчику




  1. Составьте программу вычисления квадратов чисел от 1 до 20
  2. Составьте программу вычисления суммы квадратов чисел от 1 до 20. Предусмотреть 2 варианта: с печатью промежуточных сумм и с печатью только итоговой суммы
  3. Среди введенных 10 чисел подсчитать, сколько положительных, сколько отрицательных и сколько нулей было введено.
  4. В первый час работник делает 12 деталей, во второй на 2 больше и т.д. Сколько сделает деталей работник за 8 часов?
  5. Вычислить факториал числа A. (A! = 1 2  3  ...  A)
  6. Вычислить сумму 1 - 2/3 + 3/4 ... - 10/11
  7. Вычислить x + x2/3 + x3/5 + ...+ x8/15
  8. Написать программу вычисления значения выражения

y = (( . . . ( 202 - 192 )2 - . . . – 12 )2
  1. Вывести на экран температуру по Цельсию и рядом значение по Фаренгейту для значений от 15С до 30С. (F=C1.8+32)
  2. Найти все симметричные четырехзначные числа. Пример: 7667, 1331.
  3. Составьте программу определения совершенного числа. Число совершенное, если оно равно сумме своих делителей, исключая себя. (6=1+2+3)
  4. Составьте программу определения всех совершенных чисел от 1 до N.
  5. Напечатать все двузначные числа, сумма цифр которых равна 12.
  6. Напечатать все трехзначные числа, сумма цифр которых равна их произведению
  7. Напечатать все четырехзначные числа, у которых сумма крайних цифр которых равна сумме средних цифр, а само число делится на 6 и 27.
  8. В бригаде, работающей на уборке сена, имеется N косилок. Первая из них работала M часов, а каждая следующая на 10 минут больше предыдущей. Сколько часов работала вся бригада.
  9. Подсчитать сумму всех двузначных чисел.



Примеры программ



Задача 1.

program virag;

var i, y : integer;

begin

y := sqr (20);

for i := 19 downto 1 do y := sqr (y-sqr ( i ) );

writeln ( ' y= ', y);

end.


Задача 11.

program sov;

var k,i,j,n,s,p : integer;

begin

write ( 'введите число' ) ; read (n );

for k := 1 to n do

begin

for i := 1 to k do

begin

s := 0; p := 1;

for j := 1 to i-1 do

if i mod j = 0 then S :=S + j;

if s=i then p := 1 else p := 0;

end;

if P=1 then writeln ( i );

end;

end.


Задача 14.

program chislo;

var i,j,k : integer;

begin

for i := 1 to 9 do

for j := 0 to 9 do

for k := 0 to 9 do

if ( i*j*k = i+j+k ) then writeln ( i*100+j*10+k );

end.

Цикл по условию




  1. Дана последовательность 1, 1+1/2, 1+1/2+1/3, 1+1/2+1/3+1/4, ... Составьте программу, вычисляющую первый член последовательности, превосходящий число А.
  2. Дано действительное число x. Вычислить с заданной точностью e частичную сумму ряда

sin x = x/1! - x3/3! + x5/5! – x7/7!+ ... (-1)n x2n+1 /(2n+1)! +...

Нужное приближение считается полученным, если очередное слагаемое оказалось по модулю меньше e
  1. Написать программу подсчета количества цифр, входящих в исходный текст. Текст – последовательность символов, ввод которой заканчивается нажатием клавиши ENTER (код ASCII 13)
  2. Из данного натурального числа удалить все цифры R.
  3. На склад поступает однородный груз на машинах различной грузоподъемности. На компьютер, управляющий работой склада, поступает информация о весе груза очередной машины. Составьте программу подсчета количества машин, прибывших на склад до его заполнения. Известно, что вместимость склада не более R тонн.
  4. Во введенном числе подсчитать сумму цифр
  5. Найти старшую цифру числа
  6. Приписать по 1 в начало и в конец записи числа n. Например, из числа 380 получится 13801.
  7. Ивана Александровича Хлестакова пригласили управлять департаментом. В 1-ый день к нему прислали 1000 курьеров, а в каждый последующий в 2 раза больше, чем в предыдущий. Хлестаков согласился, когда сразу приехало более 300 000 курьеров. На который день согласился Хлестаков.
  8. Составить программу, проверяющую, является ли заданное натуральное число полиндромом (десятичная запись читается одинаково слева направо и справа налево)



Примеры программ



Задача 6.

program chislo;

var m,n : longint;

k: integer;

begin

writeln ( 'введите натуральное число ');

readln (n); m:=n;

k := 0 ;

while m <> 0 do

begin

k := k+ m mod 10;

m := m div 10;

end;

writeln ( ' в числе ' , n , ' сумма цифр = ' , k );

end.


Задача 9.


program hlest;

var i,s:real;

begin

i:=1; s:=1000;

while s<300000 do begin

writeln(s,' ',i);

s:=2*s; i:=i+1; end;

write (i);

end.


Переменные типа СНАR




  1. Составьте программу печати кода символа, введенного с клавиатуры.
  2. Составьте программу печати символа по введенному коду.
  3. Составьте программу, работающую как ручной калькулятор. Исходные данные: операнд1 знак операнд2, где знак – это + - * /
  4. Напечатать "Да", если вводится символ "Y" или "y" и напечатать "Нет", если вводится символ "N" или "n".
  5. Среди введенных 10 символов подсчитать, сколько было введено букв R.
  6. Составьте программу печати кодов символов всех букв латинского алфавита.
  7. Написать программу вывода последовательности символов AABABCABCD...AB...XYZ.
  8. Написать программу вывода последовательности символов:
  9. ZYYXXX . . . AA ...AAA
  10. Проанализировать введенный символ. Если это не цифра, то сообщить об этом. Если цифра, то увеличить ее значение в 2 раза и вывести на экран.



Примеры программ


Задача 7.

program p_sim;

var i, j : char;

begin

for i := 'a' to 'z' do

for j := 'a' to i do

write ( j) ;

end.

Строки




  1. Во введенном слове заменить первый и последний символы на *
  2. Во введенном слове заменить первый символ на последний
  3. Удалить из строки все восклицательные знаки, стоящие в конце строки.
  4. Сформировать строку, состоящую из N звездочек.
  5. К слову присоединить столько восклицательных знаков, сколько в ней имеется символов.
  6. В строке вставить пробел после каждого символа
  7. Удвоить все символы А в слове
  8. Перевернуть слово
  9. Определить количество гласных в тексте (русский алфавит)
  10. Во введенном выражении заменить SQR на EXP
  11. Подсчитать, сколько раз в строке встретится заданное слово
  12. Во введенной строке вставить через 2 символа КУ
  13. Найти сумму всех чисел строки
  14. Подсчитать сумму цифр в строке, встречающихся перед !
  15. Заданы фамилия, имя, отчество, разделенные пробелом. Напечатать его фамилию и инициалы.
  16. Вычеркните из слова все буквы, совпадающие с его последней буквой.
  17. Вычеркните из слова Х те буквы, которые встречаются в слове Z
  18. Удалить из строки все пробелы.
  19. Удалить из строки повторяющиеся подряд символы
  20. Дан текст, в котором слова разделены пробелами. Сколько слов в тексте? Найти самое длинное слово.
  21. Написать программу вычисления суммы мест, на которых в слове стоит буква "Р" .



Примеры программ



Задача 3.

PROGRAM Q1;

VAR ST:STRING[10];

I : BYTE;

BEGIN

WRITE('WWEDITE SROKY'); READLN(ST);

I:=10;

WHILE(ST[I]='!')AND(I<>0) DO

BEGIN

I:=I-1;

ST[0] := CHR(I);

END;

WRITELN(ST);

END.

Задача 4.

PROGRAM STARS;

VAR A:STRING;

I,N:INTEGER;

BEGIN

WRITE('WWEDITE CHISLO *'); READLN(N);

A:='';

FOR I:=1 TO N DO A:=A+'*';

WRITELN(A);

END.


Задача 5.

PROGRAM SINGTH;

VAR A:STRING;

I:INTEGER;


BEGIN

WRITE('WWEDITE STROKY'); READLN(A);

FOR I:=1 TO LENGTH(A) DO A:=A+'!';

WRITELN(A);

END.


Задача 6.

PROGRAM PROBEL;

VAR A,A1:STRING;

I:INTEGER;


BEGIN

WRITE('WWEDITE STROKY'); READLN(A);

A1:='';

FOR I:=1 TO LENGTH(A) DO A1:=A1+COPY(A,I,1)+' ';

WRITELN(A1);

END.


Задача 8.

PROGRAM SS;

VAR A,A1:STRING;

I,L:INTEGER;


BEGIN

WRITE('WWEDITE STROKY'); READLN(A);

A1:=''; L:=LENGTH(A); WRITELN(L);

FOR I:=1 TO L DO

BEGIN A1:=A1+COPY(A,LENGTH(A)-I+1,1);

END;

WRITELN(A1);

END.


Задача 9.

PROGRAM STARS;

CONST C='АОУЭЫЯЮИЕаоуыэяюеи' ;

VAR A:STRING[100];

K,N :INTEGER;


BEGIN

WRITE('WWEDITE STROKY'); READLN(A);

N:=0;

FOR K:=1 TO LENGTH(A) DO

IF POS(A[K],C)>0 THEN N:=N+1;

WRITELN(N);

END.


10.

PROGRAM KONTEXT;

VAR A,B:STRING[40];

k: INTEGER;


BEGIN

WRITE('WWEDITE STROKY'); READLN(A);

B:=A;

REPEAT K:=POS('SQR',B);

IF K>0 THEN

BEGIN

DELETE(B,K,3); INSERT('EXP',B,K);

END;

UNTIL K=0;

WRITELN(B);

END.


Задача 11.

PROGRAM SS;

VAR STR:STRING[40];

SLOVO:STRING;

N,K:INTEGER;


BEGIN

WRITE('WWEDITE STROKY'); READLN(STR);

WRITE('WWEDITE SLOVO'); READLN(SLOVO);

N:=0;

REPEAT K:=POS(SLOVO,STR);

IF K>0 THEN

BEGIN

DELETE(STR,K,LENGTH(SLOVO)); N:=N+1;

END;

UNTIL K=0;

WRITELN(N);

END.


Задача 13

PROGRAM KUKU;

VAR STR:STRING;

N,K:INTEGER;

BEGIN

WRITE('WWEDITE STROKY'); READLN(STR);

N:=1; K:= LENGTH (STR);

WHILE (N
BEGIN INSERT ('КУ',STR,2*N+1); N:=N+2; END;

WRITELN(STR);

END.

Массивы




  1. Таблица содержит 18 выигрышных номеров. Проверьте, является ли билет с номером N выигрышным.
  2. С 8 до 20 часов температура воздуха измерялась ежечасно. Известно, что она понижалась в этот период времени. Определить, в котором часу впервые была отмечена отрицательная температура.
  3. Написать программу анализа значений температуры больного за сутки: минимальное, максимальное значения, среднюю арифметическую. Замеры температуры производились каждые 4 часа.
  4. Сложить элементы, стоящие между максимальным и минимальным элементами массива.
  5. Поменять местами максимальный и минимальный элементы в массиве.
  6. В массиве из 80 элементов найти все локальные максимумы (минимумы). Найти минимальный (максимальный) из локальных максимумов (минимумов). Элемент является локальным максимумом (минимумом), если он больше (меньше) своих соседей.
  7. Введите массив из 5 фамилий и выведите на экран те из них, которые начинаются с определенной буквы, которая вводится с клавиатуры
  8. Заполнить массив из 20 элементов следующим образом: 1,3,9,27...
  9. Сколько раз в массиве встречается заданное значение
  10. Удалить из массива элемент, стоящий на S – ом месте.
  11. Задан массив из 10 элементов. Сформировать из него новый массив, в который войдут
  • элементы, стоящие на четных местах
  • элементы, значения которых – четные числа
  • элементы, значения которых превосходят S
  1. Вставить в массив новый элемент в s-ю позицию.
  2. В массиве определить, имеются ли элементы с одинаковыми значениями.
  3. Даны список футбольных команд высшей лиги России и количество очков, набравших каждой командой в чемпионате. Известно, что нет команд с равным количеством очков. Какая команда стала чемпионом? Составьте список команд в порядке возрастания мест.
  4. Задан список городов России. Напечатайте самое длинное (короткое) название. Все названия городов из 8 букв.
  5. Дан входной упорядоченный массив А длиной N. В массив С переписать неповторяющиеся элементы из А
  6. Реализовать операции объединения, пересечения и объединения без пересечения 2-х массивов размерности n и m.

Объединение двух массивов – это третий массив, в который входят все элементы первого и второго массива, причем только один раз.

Пересечение двух массивов – это третий массив, в который входят все совпадающие элементы первого и второго массива.

Объединение без пересечения двух массивов – это третий массив, в который входят все несовпадающие элементы первого и второго массива

Массив, не содержащий ни одного элемента, называется пустым.

Примеры программ



Задача 6

program lokal;

var a,b:array[1..80]of integer;

i,g,j,m,n:integer;

begin

randomize;

for i:=1 to 80 do

a[i]:=round(random(1000));

for i:=1 to 80 do begin

write(a[i],' ');

if (i mod 10)=0 then writeln;end;

g:=1;

for i:=1 to 78 do

if (a[i]>a[i+1])and (a[i+2]>a[i+1])then begin b[g]:=a[i+1];g:=g+1;end;

writeln('Локальные минимумы:');

for j:=1 to g-1 do begin

write(b[j],' ');

if (j mod 10)=0 then writeln;end;

m:=b[1];

for j:=1 to g-1 do

if m
writeln('Больший из локальных ',m);

readln;

end.


Задача 17

program mnoj;

var a,b:array [1..100] of integer;

c: array [1..200] of integer;

i,j,k,n,m:integer;

l:boolean;

begin

writeln('введите размерность первого массива'); readln(m);

writeln('введите размерность второго массива'); readln(n);

writeln('ведите первый массив');

for i:=1 to m do read (a[i]);

writeln('ведите второй массив');

for i:=1 to n do read (b[i]);

{пересечение}

k:=1;

for i:=1 to m do

for j:=1 to n do

if a[i]=b[j] then begin c[k]:=a[i]; k:=k+1;end;

if k=1 then write ('пересечение пусто') else begin

write('пересечение ');

for i:=1 to k-1 do write (c[i],' '); end;

writeln;

{объединение}

l:=true; k:=m+1;

for i:=1 to m do c[i]:=a[i];

for j:=1 to n do begin

for i:=1 to m do

if b[j]=a[i] then l:=false;

if l then begin c[k]:=b[j]; k:=k+1; end;l:=true; end;


write('объединение ');

for i:=1 to k-1 do write (c[i],' ');

writeln;

{ объединение без пересечения}

l:=true; k:=1;

for j:=1 to n do begin

for i:=1 to m do

if b[j]=a[i] then l:=false;

if l then begin c[k]:=b[j]; k:=k+1; end;l:=true; end;

for i:=1 to m do begin

for j:=1 to n do

if a[i]=b[j] then l:=false;

if l then begin c[k]:=a[i]; k:=k+1; end;l:=true; end;


if k=1 then write ('объединение без пересечения пусто') else begin

write('объединение без пересечения ');

for i:=1 to k-1 do write (c[i],' '); end;

writeln;

end.


Процедуры

1. По введенным оценкам (не более 6) по литературе, математике, физике и химии у N (не более 40) учащихся вывести средние


program class;

var fam : array [1..40] of string;


lit,mat,fiz,chem : array [1..40,1..6] of integer;

i,j,N:integer;


procedure wwod (var a: matrix;s:string;k:integer);

var i,j:integer;

begin

writeln('сколько оценок по ',s,' у ',fam[k]);

readln(i);

for j:=1 to i do begin

writeln('введите оценки по ',s);readln(a[k,j]);end;

end;


procedure sred(var a:matrix; k:integer);

var i,j,s:integer;

e:real;

begin

S:=0; i:=0;

for J:=1 to 5 do

if a[k,j]<>0 then begin

i:=i+1; s:=s+a[k,j]; end;

if i<>0 then e:=s/i;a[k,6]:=round(e); end;


begin

writeln('введите КОЛИЧЕСТВО учеников'); readln(N);


for i:=1 to n do begin

writeln('введите фамилию ',i,' -го ученика'); readln(fam[i]); end;


for i:=1 to n do

for j:=1 to 6 do begin

lit[i,j]:=0; mat[i,j]:=0; fiz[i,j]:=0; chem[i,j]:=0; end;


for i:=1 to n do begin

wwod(lit,'литературе',i);wwod(mat,'математике',i);

wwod(fiz,'физике',i);

wwod(chem,'химии',i); end;


for i:=1 to n do begin

sred(lit,i);

sred(mat,i);

sred(fiz,i);

sred(chem,i); end;


writeln(' лит мат физ хим');

for i:=1 to n do

writeln(fam[i],' ',lit[i,6],' ',mat[i,6],' ',fiz[i,6],' ',

chem[i,6]);

end.


Альбина Владимировна Розина


ПРОГРАММИРОВАНИЕ НА ПАСКАЛЕ


Методическое пособие