Дано натуральное 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.
- Найти номер первого минимального элемента. Все элементы, расположенные после него и делящиеся на 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;
- С клавиатуры вводится текст. Подсчитать и вывести на печать количество слов текста, начинающихся с гласной.
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
- Создать (и вывести) новый массив, который состоит из положительных элементов массива у.
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) оставить в слове только первые вхождения каждой буквы; 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
- Найти сумму третьего и шестого положительных элементов
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;
- Составить таблицу слов данного текста, начинающихся с буквы "А", с указанием числа повторений каждого слова.
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
- Вычислить сумму первых четырех отрицательных элементов.
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.
- В каждом слове текста замените "а" на букву "е", если "а" стоит на четном месте, и заменить букву "б" на сочетание "ак", если "б" стоит на нечетном месте.
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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!