Дано натуральное k. Напечатать k-ю цифру последовательности 1123581321., в которой выписаны подряд все числа Фибоначчи.



 

Uses crt;

Var

a:array [1..50] of integer;

i,x:integer;

begin

read(x);

readln;

for i:=1 to 50 do

begin

a[i]:=a[i-1]+a[i-2];

a[1]:=1;

a[2]:=1;

write(a[i];' ');

end;

writeln(a[x]);

readln;

end.

 

2. Построить график функции

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs;

 

type

TForm1 = class(TForm)

procedure FormPaint(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

procedure TForm1.FormPaint(Sender: TObject);

var px, py, h, w, dx, dy, x, y: longint;

begin

 

w:= ClientWidth;

h:= ClientHeight;

dx:= w div 2;

dy:= h div 2;

 

Canvas.Pen.Color:= clBlack;

Canvas.MoveTo(0, dy);

Canvas.LineTo(W, dy);

Canvas.MoveTo(dx, 0);

Canvas.LineTo(dx, h);

 

{****** Прямая ******}

Canvas.Pen.Color:= clRed;

Canvas.MoveTo(dx, dy);

for x:= 0 to dx do begin

px:= x + dx;

y:= x;

py:= dy - y;

Canvas.LineTo(px, py);

end;

Canvas.MoveTo(dx, dy);

for x:= 0 downto -dx do begin

px:= x + dx;

y:= x;

py:= dy - y;

Canvas.LineTo(px, py);

end;

 

{****** Синусоида ******}

Canvas.Pen.Color:= clBlue;

Canvas.MoveTo(dx, dy);

for x:= 0 to dx do begin

px:= x + dx;

y:= round(100 * sin(10 * x / dx));

py:= dy - y;

Canvas.LineTo(px, py);

end;

Canvas.MoveTo(dx, dy);

for x:= 0 downto -dx do begin

px:= x + dx;

y:= round(100 * sin(10 * x / dx));

py:= dy - y;

Canvas.LineTo(px, py);

end;

 

{****** Парабола ******}

Canvas.Pen.Color:= clGreen;

Canvas.MoveTo(dx, dy);

for x:= 0 to dx do begin

px:= x + dx;

y:= x * x div dy;

py:= dy - y;

Canvas.LineTo(px, py);

end;

Canvas.MoveTo(dx, dy);

for x:= 0 downto -dx do begin

px:= x + dx;

y:= x * x div dy;

py:= dy - y;

Canvas.LineTo(px, py);

end;

end;

 

end.

 

 

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

 

a:array [1..10] of integer;

i,k,s,n:integer;

begin

randomize;

n:=0;

s:=1;

for i:=1 to 10 do

begin

a[i]:=random(11)-5;

label2.Caption:=label2.Caption+inttostr(a[i])+' ';

k:=a[1];

end;

for i:=1 to 10 do

begin

if k>a[i] then

begin

k:=a[i];

s:=i;

end;

end;

for i:=s+1 to 10 do

begin

if a[i] mod 5=0 then a[i]:=0;

end;

for i:=1 to 10 do

label3.Caption:=label3.Caption+inttostr(a[i])+' ';

label1.Caption:=inttostr(k)+' '+inttostr(s);;

end;

 

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

 

procedure TForm1.btn1Click(Sender: TObject);

var s: string; i, k: Integer;

begin

s:=edt1.Text;

k:=0;

for i:= 2 to Length(s) do

if (s[i-1]='_') and ((s[i]='а') or(s[i]='я') or(s[i]='э') or(s[i]='е') or(s[i]='ё') or(s[i]='о') or(s[i]='и') or(s[i]='у') or(s[i]='ю'))

then k:=k+1;

if(s[1]='а') or(s[1]='я') or(s[1]='о') or(s[1]='ё') or(s[1]='э') or(s[1]='е') or(s[1]='у') or(s[1]='ю') or(s[1]='и')

then k:=k+1;

lbl1.Caption:=IntToStr(k);

end;

end.

 

 

 

 

1. Найти номер максимального элемента и все отрицательные элементы после него заменить на 5.

 

var i, max: integer;

a: array [1..20] of integer;

 

begin

 

randomize;

for i:= 1 to 20 do

a[i]:= random(100) - 50;

 

for i:= 1 to 20 do

write(a[i], ' ');

 

max:= 1;

for i:= 2 to 20 do

if a[i] > a[max] then

max:= i;

 

for i:= max + 1 to 20 do

if a[i] < 0 then

a[i]:= 5;

 

writeln;

writeln(max);

for i:= 1 to 20 do

write(a[i], ' ');

 

end.

 

2. Ввести фамилию, имя и отчество как одно данное строкового типа. Зашифровать каждое слово, поставив в соответствие букве её номер в алфавите

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

 

type

TForm1 = class(TForm)

Edit1: TEdit;

Label1: TLabel;

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

procedure TForm1.Button1Click(Sender: TObject);

var s: string;

i: integer;

begin

 

s:= Edit1.Text;

Label1.Caption:= '';

for i:= 1 to length(s) do

if s[i] in ['A'..'Z'] then

label1.Caption:= label1.Caption + inttostr(ord(s[i]) - ord('A') + 1) + ' '

else if s[i] in ['a'..'z'] then

label1.Caption:= label1.Caption + inttostr(ord(s[i]) - ord('a') + 1) + ' ';

end;

 

end.

----------------------------------------

На форме должно быть:

// Edit1

// Label1

// Button1

 

 

 

 

  1. Создать (и вывести) новый массив, который состоит из положительных элементов массива у.

uses crt;

var

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

i,j:integer;

begin

j:=0;

for i:=1 to 10 do

begin

a[i]:=random(15)-7;

Writeln (a[i],' ');

if a[i]>0 then

begin

j:=j+1;

b[j]:=a[i];

Writeln(b[j],' ');

end;

end;

end;

 

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

 

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

 

type

TForm1 = class(TForm)

Edit1: TEdit;

Label1: TLabel;

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

procedure TForm1.Button1Click(Sender: TObject);

var s, last, word: string;

i, j: integer;

begin

s:= edit1.text;

j:= length(s);

while not (s[j] in ['a'..'z']) and not (s[j] in ['A'..'Z']) do

j:= j - 1;

i:= j;

while s[i] <> ' ' do

i:= i - 1;

last:= '';

i:= i + 1;

while i <= j do begin

last:= last + s[i];

i:= i + 1;

end;

i:= 1;

label1.Caption:= '';

while i <= length(s) do begin

if (s[i] in ['a'..'z']) or (s[i] in ['A'..'Z']) then begin

word:= '';

j:= i;

while (s[j] in ['a'..'z']) or (s[j] in ['A'..'Z']) do begin

word:= word + s[j];

j:= j + 1;

end;

if word <> last then begin

if length(word) mod 2 <> 0 then

delete(word, length(word) div 2 + 1, 1);

label1.Caption:= label1.Caption + word + #13;

end;

i:= j;

end;

i:= i + 1;

end;

end;

 

end.

----------------------------------------

На форме должно быть:

// Edit1

// Label1

// Button1

 

 

  1. Найти сумму третьего и шестого положительных элементов

var

a:array [1..10] of integer;

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

begin

randomize;

n:=0;

j:=0;

for i:=1 to 10 do

begin

a[i]:=random(11)-5;

label2.Caption:=label2.Caption+inttostr(a[i])+' ';

k:=a[1];

end;

for i:=1 to 10 do

begin

if a[i]>0 then n:=n+1;

if (a[i]>0) and (n=3)then

begin

k:=a[i];

n:=4

end;

if (a[i]>0) and (n=7) then

begin

s:=a[i];

n:=8;

end;

end;

j:=k+s;

label4.Caption:=inttostr(j);

end;

 

 

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

 

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Grids;

 

type

TForm1 = class(TForm)

Edit1: TEdit;

Button1: TButton;

StringGrid1: TStringGrid;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

procedure TForm1.Button1Click(Sender: TObject);

var s, word: string;

i, j, n, k: integer;

num: array [1..100] of integer;

w: array [1..100] of string;

ok: boolean;

 

begin

 

for i:= 1 to 100 do begin

w[i]:= '';

num[i]:= 0;

end;

n:= 0;

 

s:= edit1.text;

i:= 1;

while i <= length(s) do begin

if (s[i] in ['a'..'z']) or (s[i] in ['A'..'Z']) then begin

word:= '';

j:= i;

while (s[j] in ['a'..'z']) or (s[j] in ['A'..'Z']) do begin

word:= word + s[j];

j:= j + 1;

end;

i:= j;

ok:= false;

for k:= 1 to n do

if w[k] = word then begin

num[k]:= num[k] + 1;

ok:= true;

end;

if not ok then begin

n:= n + 1;

w[n]:= word;

num[n]:= 1;

end;

end;

i:= i + 1;

end;

 

for i:= 1 to n do begin

stringgrid1.Cells[0, i - 1]:= w[i];

stringgrid1.Cells[1, i - 1]:= inttostr(num[i]);

end;

end;

 

end.

----------------------------------------

На форме должно быть:

// Edit1

// Button1

// StringGrid1

 

 

 

  1. Вычислить сумму первых четырех отрицательных элементов.

 

var i, n, x1, x2, x3, x4: integer;

a: array [1..20] of integer;

 

begin

 

randomize;

for i:= 1 to 20 do

a[i]:= random(100) - 50;

 

for i:= 1 to 20 do

write(a[i], ' ');

 

n:= 0;

for i:= 1 to 20 do

if a[i] < 0 then begin

n:= n + 1;

if n = 1 then

x1:= i;

if n = 2 then

x2:= i;

if n = 3 then

x3:= i;

if n = 4 then

x4:= i;

end;

 

writeln;

writeln(a[x1] + a[x2] + a[x3] + a[x4]);

end.

 

  1. В каждом слове текста замените "а" на букву "е", если "а" стоит на четном месте, и заменить букву "б" на сочетание "ак", если "б" стоит на нечетном месте.

 

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Grids;

 

type

TForm1 = class(TForm)

Edit1: TEdit;

Button1: TButton;

Label1: TLabel;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

procedure TForm1.Button1Click(Sender: TObject);

var s, word, ans: string;

i, j, k: integer;

 

begin

s:= edit1.text;

i:= 1;

ans:= '';

while i <= length(s) do begin

if (s[i] in ['a'..'z']) or (s[i] in ['A'..'Z']) then begin

word:= '';

j:= i;

while (s[j] in ['a'..'z']) or (s[j] in ['A'..'Z']) do begin

word:= word + s[j];

j:= j + 1;

end;

i:= j - 1;

k:= 1;

while k <= length(word) do begin

if (word[k] = 'a') and (k mod 2 = 0) then

ans:= ans + 'e'

else if (word[k] = 'b') and (k mod 2 <> 0) then

ans:= ans + 'ak'

else

ans:= ans + word[k];

k:= k + 1;

end;

end else

ans:= ans + s[i];

i:= i + 1;

end;

 

label1.Caption:= ans;

end;

 

end.

----------------------------------------

На форме должно быть:

// Edit1

// Button1

// Label1

 

 

 


Дата добавления: 2015-12-17; просмотров: 117; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!