Пятница, 18.10.2024
Мой сайт
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Гостевая книга [ Добавить запись ]

Страницы: « 1 2 ... 21 22 23 24 25 ... 123 124 »
Показано 331-345 из 1848 сообщений
1518. Евгений   (16.01.2008 21:31)
0  
Огромное спаибо за помощь.
Очень своевременно.

Выкладываю сам текст задачи и ее решение для общего пользования.
Сами программные файлы (.exe) отослал на почту владельцу сайта (Борису),
думаю, что в скором времени они появятся в разделе закачек.
================================================================================================================

Program Var__11;

Uses Crt; {Podklyuchenie modulya CRT}
Var
N,i : integer; {Ob''yavlenie peremennyh}
X,Y : Array [1..20] of real; {Ob''yavlenie massivov}
Begin
ClrScr; {Ochistka ekrana}

TextColor(LightCyan); {Cvet teksta LightCyan}
WriteLn('' USLOVIE:''); {Nadpis''}
WriteLn; {Hudozhestvennoe oformlenie - propusk stroki}
WriteLn(''Iz posledovatel''''nosti chisel A1, A2, ..., A20'');{Tekst zadachi}
WriteLn(''vybrat'''' celye polozhitel''''nye chisla.'');
WriteLn; {Hudozhestvennoe oformlenie - propusk stroki}
WriteLn(''-----------------------------------------''); {Hudozhestvennoe oformlenie - liniya}
WriteLn; {Hudozhestvennoe oformlenie - propusk stroki}
WriteLn(''Programmu resheniya zadachi sostavil:''); {Avtorskie dannye}
WriteLn('' Gorbunov Evgeniy Grigor''''evich'');
WriteLn; {Hudozhestvennoe oformlenie - propusk stroki}
WriteLn(''=========================================''); {Hudozhestvennoe oformlenie - liniya}
WriteLn; {Hudozhestvennoe oformlenie - propusk stroki}



TextColor(LightGreen); {Cvet teksta LightGreen}

Write(''Vvedite chislo elementov massiva: N= ''); {Vvod chisla elementov massiva}
ReadLn(N);
WriteLn; {Hudozhestvennoe oformlenie - propusk stroki}

TextColor(LightMagenta); {Cvet teksta LightMagenta}
WriteLn(''Vvedite elementy massiva: ''); {Vvod elementov massiva}

For i := 1 to N do
begin
Write(''X ['' ,i, '']= '');
ReadLn(X[i])
end;

TextColor(LightRed); {Cvet teksta - LightRed}
WriteLn; {Hudozhestvennoe oformlenie - propusk stroki}
WriteLn(''=========================================''); {Hudozhestvennoe oformlenie - liniya}
WriteLn; {Hudozhestvennoe oformlenie propusk stroki}
Write(''O T V E T: Poluchenniy massiv: ''); {Hudozhestvennoe oformlenie - oformlenie otveta}

For i:=1 to N do
begin
if frac(X[i])=0 then Y[i]:=X[i]; {Analiz drobnoy chasti i prisvoenie znacheniy drugomu massivu}
if Y[i]>0 then write(Y[i]:5:0); {Opredelenie polozhitel''nogo chisla i vyvod rezul''tatov}

end;
readkey; {Ozhidanie nazhatiya lyuboy klavishi}
end.



================================================================================================================

1517. Евгений   (16.01.2008 02:09)
0  
Доброго времени суток!

Помогите, пожалуйста!
Как выбрать из массива с вещественным типом данных элементы целого типа?
Использование функции mod работает только с Integer, а у меня Real.

Вот простейшая программка с данной проблемой - не идет!

Program ZADANIE_1122222;

Uses Crt; {Подключение модуля CRT}
Var
N,i : integer;
X : Array [1..20] of real;

Begin
ClrScr; {Очистка экрана}
Write(''Введите число элементов массива: N= ''); {Ввод числа элементов массива}
ReadLn(N);
WriteLn(''Введите элементы массива: ''); {Ввод элементов массива}

For i := 1 to N do
begin
Write(''X ['' ,i, '']= '');
ReadLn(X[i])
end;

For i:=1 to N do {Это попытка произвести целочисленное деление,
но компилятор не пропускает, не те типы данных}
begin
if X[i] mod 1=0 then writeLn(X[i]);
end;
end.


С уважением, Евгений.
Ответ: Функция FRAC возвращает дробную часть числа. То есть, можно написать
if frac(X[i]) = 0 then ...
В данном случае получите хороший результат

1516. Baxtiyor   (15.01.2008 13:23)
0  
Здраcтвуйте Бориc .Отправленные задача к Вам было узбекиcком языке, я толъком не cмог переводитъ на руccкой .Извените за беcпакойcтво.Я другой задачу к Вам отправлю.

Лиcтом дерева называетcя вершина, не являюшаяся корнем никакого поддерева.Cоcтавитъ процедуру подсчета числа листъев заданного бинарного дерева.

Спосибо зарание. Бахтиер.
Ответ: Привет
Вот программа.
В ней я как-то реализовывал сортировку строк с помощью бинарного дерева (чтобы считать листья - нужно дерево). Вставил процедуру и функцию - оба делают одно и тоже: процедура с помощью глобальной переменной, а функция - с помощью локальной.
--
{$M 65520, 0, 655360}
program trees;
uses crt;
type pTree=^Tree;
Tree=record
name :string[10];
left :pTree; right :pTree
end;
var s:string;
t,v:pTree;
n,i:integer;

procedure insert(var t:pTree; x:string);
begin
If t = nil then begin
new(T); t^.name:=x;
t^.left:=nil; t^.right:=nil end
else
if t^.name>=x then insert(t^.left,x)
else insert(t^.right,x) end;

procedure obhod(t:pTree);
begin
if t<>nil then begin obhod(t^.left);
writeln(t^.name); obhod(t^.right) end; end;

var count: Integer;
procedure list_count(t: pTree);
begin
if (t^.left = nil) and (t^.right = nil) then inc(count);
if t <> nil then begin
list_count(t^.left); list_count(t^.right) end end;

function flist_count(t: pTree): Integer;
var c: Integer;
begin
if (t^.left = nil) and (t^.right = nil) then c:=1 else c:=0;
if t <> nil then begin
inc(c, flist_count(t^.left));
inc(c, flist_count(t^.right)) end;
flist_count := c end;

procedure freetree(var t: pTree);
begin
if t <> nil then
if t^.left <> nil then freetree(t^.left);
if t^.right <> nil then freetree(t^.right);
dispose(t) end;

var
ma: longint; k: Integer;
begin
clrscr; ma:=Memavail; {Для проверки правильности очистки}

writeLn(''''Введите слова (символ окончания - пустая строка):''''); textcolor(15);
t:=nil;
repeat
readln(s); if s <> '''''''' then insert(t,s)
until s = '''''''';
writeln(''''словарь:''''); textcolor(lightblue);
obhod(t);

count := 0; list_count(t);
WriteLn(''''COUNT = '''', count);
WriteLn(''''COUNT2 = '''', flist_count(t));

textcolor(7); freetree(t);
Writeln(''''Потеря памяти: '''', ma - MemAvail);
writeLn(''''Нажмите любую клавишу ...''''); readKey
end.

1515. Евгений   (13.01.2008 17:55)
0  
Доброго Вам времени суток!

Помогите, пожалуйста, разобраться с программкой:
не могу избавиться от нулевых значений в получающемся массиве, т.е. на месте исходных отрицательных и нулевых значений остаются нули, а в остальном работает без проблем...
С уважением, Евгений. egg-68@mail.ru
=========================================
Вот текст программы:
=========================================
=========================================



{Iz posledovatel''nosti chisel A1, A2, ..., A20 vybrat'' celye polozhitel''nye chisla}
{=================================================================================}

Program ZADANIE_11;
Uses Crt; {Podklyuchenie modulya CRT}
Var
k,N,i : integer;
X,Y,Q,Z : Array [1..20] of real;
Begin
ClrScr; {Ochistka ekrana}
Write(''Vvedite chislo elementov massiva: N= ''); {Vvod chisla elementov massiva}
ReadLn(N);
WriteLn(''Vvedite elementy massiva: ''); {Vvod elementov massiva}
For i := 1 to N do
begin
Write(''X ['' ,i, '']= '');
ReadLn(X[i])
end;
k:=0; {Ustanovka znacheniya k v nol''}
For i:=1 to N do
if X[i]>0 then {Vybor polozhitel''nyh chisel iz massiva}
begin
k:=k+1;
Y[k]:=X[i]
end
else k:=k+1;

begin
Q[i]:=i mod 1; {Celochislennoe delenie}
if Q[i]=0 then {Esli net ostatka, to chislo celoe}
begin
k:=k+1;
Z[k]:=Q[i]
end
else k:=k+1
end;

Write(''O t v e t: Poluchenniy massiv:'');
For i:=1 to N do write(Y[i]:3:0); {Vyvod rezul''tatov na ekran}
WriteLn('''');

WriteLn(''===============================''); {Hudozhestvennoe oformlenie}
ReadLn;
end.
Ответ: Как, написал выше, используйте функцию FRAC для того, чтобы определить есть дробная часть у числа или нет

1514. Светлана   (13.01.2008 14:54)
0  
в Задаче про FOR разобралась. Во-первых для него надо только тип integer, а во-вторых счетчик там вовсе не нужен )))

1513. Светлана   (13.01.2008 14:05)
0  
Выдает инвалида FOR
program oskolki;
{Решить задачу с использованием процедур с входными и выходными параметрами
или функцией. Пусть требуется рассчитать число осколков, полученных
в результате деления тела за N миллисекунд, если каждый осколок делится
на два за одну милисекунду.}
uses crt;
var m,k:real;

function del(m:real):Real;
begin del:=exp(ln(2)*m); end;

begin
ClrScr; gotoxy(10,5);
writeln(''Программа деления тела''); writeln;
Write(''Введите количество милисекунд: ''); readln(m);
m:=0; k:=1;
for m:=m+1 to N do
begin k:=del(m) end;
writeln(''Из тела за '',m,'' милисекунд получится '',k,''осколков '');
readln;
End.

1512. Светлана   (13.01.2008 13:21)
0  
Помогите, плиз наладить программки.
Дана таблица: 8 наименований (строк), 4 столбца-показателя, некорректно идет сортировка - сортрует только первые 4. Надо чтобы в рез-те сортировки еще и выводила отсортированную таблицу.
writeln(''б - Сортировка данных таблицы по возрастанию сахара: '');
writeln(st[0]);
for i:=1 to 8 do {сортировка выбором. упорядочение массива???}
begin
mins:=mas[i,1]; {считаем i-й элем мминимальным}
nmin:=i; {запоминаем номер эл-та}
for n:=i to 8 do {поиск наименьшего из оставшихся}
if mas[n,1]<mins then
begin mins:=mas[n,1]; nmin:=n end;
mas[nmin,1]:=mas[i,1]; {обмен наименьшего элемента}
mas[i,1]:=mins; {с первым из оставшихся}
writeln(st[nmin]);
end;
readln;

1511. Александр   (13.01.2008 11:59)
0  
Помогите кто-нибудь решить задачку ?
Сколько кругов заданного радиуса r можно вырезать
из правильного треугольника со стороной А ?
заранее благодарен !!!
Ответ: То есть, сколько кругов заданного радиуса можно вписать в треугольник?

1510. Санёк   (12.01.2008 18:43)
0  
И еще один вопросик.Как записывать чтото в системный реестр.И желательно в автозапуск?Да!Я пытаюсь написать именно то, о чём вы подумали.Но он безвредный.(Будет).Я слыхал, что весь реестр хранится в двух какихто файлах в дике C в каталоге WINDOWS.Заранее благодарен.И плиз, не публикуйте это сообщение, отправте ответ по почте.

1509. Санёк   (12.01.2008 18:15)
0  
Обана!Это опять я.У меня вопрос.Нету ли у вас случайно, модулей, которые воспроизводят фоновую музыку?(Формат wav).Я гдето скачивал такие, но они не работают.В силу своей непредсказуемости, я стал предсказуемым :)

1508. Наталья   (11.01.2008 15:45)
0  
Это я прислала))
И вот последнее:

Описать рекурсивную функцию НОД(а,б) целого типа, находящую НОД двух натуральных а и б, используя алгоритм Евклида
Ответ: Проще всего это сделать с помощью процедуры-функции:
=====
{НОД рекрсивной}
function NOD(a, b: Integer): Integer;
begin
if a mod b = 0 then NOD:=b
else NOD:=NOD(b, (a mod b))
end;

VAR
a, b: Integer;
BEGIN
a:=91; b:=203;
if b > a then begin {Меняем местами не используя третьей переменной.
а - всегда должно быть большее}
a:= a xor b;
b:= b xor a;
a:= a xor b;
end;
WriteLn(NOD(a,b));
END.

1507. Наталья   (11.01.2008 10:47)
0  
09.01.2008 19:57
Наталья Вы можете еще помочь мне?
Записная книга. Составить программку о людях (в виде записей с полями: ФИО, город, улица, дом, квартира), и с процедурами 1)Чтоб можно было добавлять записи.
2)Организовать выбор людей, живущих на одной улице, с определенным названием. Полученный список упорядочить по номеру дома. спасибо
В каком виде нужно хранить информацию о людях:
2) в виде списка (одностороннего хватит).
Ответ: Вот решение Вашей задачи (программа получается немалой - напишите адрес - пришлю исходник):
=====
const
fio_len = 40;
city_len = 15;
street_len = 12;

TYPE
TBase = record
fio : String[fio_len];
city : String[city_len];
street: String[street_len];
house : Byte;
house_room: Byte;
end;

PNode = ^TNode;
TNode = record
base : TBase;
Next: PNode;
end;

var Root: PNode;

function Create(aFIO, aCity, aStreet:String;
aHouse, aHouse_room: Byte): PNode;
var p: PNode;
begin
p:=nil;
New(p);
p^.base.fio := copy(aFIO, 1, fio_len);
p^.base.city := copy(aCity, 1, city_len);
p^.base.street:= copy(aStreet, 1, street_len);
p^.base.house := aHouse;
p^.base.house_room:= aHouse_room;
p^.Next:=nil; Create:=p end;

procedure PrintOne(r: PNode);
begin
if r = nil then Exit;
WriteLn(r^.base.fio);
WriteLn(r^.base.city,'''' '''',r^.base.street,'''' '''',
r^.base.house:3,'''' '''',r^.base.house_room:3);
end;

procedure PrintAll(r: PNode);
begin
if r = nil then Exit;
repeat PrintOne(r);
r:=r^.Next until r = nil; end;

procedure Add(var root: PNode; aFIO, aCity, aStreet:String;
aHouse, aHouse_room: Byte);
var p: PNode;
begin
if root = nil then
root:=Create(aFIO, aCity, aStreet, aHouse, aHouse_room)
else begin
p:=root; while p^.Next <> nil do p:=p^.Next;
p^.Next:=Create(aFIO, aCity, aStreet, aHouse, aHouse_room); end end;

function AddFromKB(var r: PNode): Boolean;
var f, c, s: String; h, hr: Byte; er: Integer;
begin
AddFromKB:=False;
Write(''''Введите ФИО [<='''',fio_len,'''' букв]: ''''); ReadLn(f);
if f = '''''''' then Exit; {пустой ввод символ окончания}
Write(''''Введите город [<='''',city_len,'''' букв]: ''''); ReadLn(c);
Write(''''Введите улицу [<='''',street_len,'''' букв]: ''''); ReadLn(s);
repeat
Write(''''Введите номер дома [число <= 255]: ''''); {$I-} ReadLn(h); {$I+}
er:= IOResult;
if er <> 0 then WriteLn('''' Ошибка ввода. Повторите'''');
until er = 0;
repeat
Write(''''Введите номер квартиры [число <= 255]: ''''); {$I-} ReadLn(hr); {$I+}
er:=IOResult;
if er <> 0 then WriteLn('''' Ошибка ввода. Повторите'''');
until er = 0;
if r = nil then r := Create(f, c, s, h, hr)
else Add(r, f, c, s, h, hr);
AddFromKB := True end;


function SearchByStreet(r: PNode; StreetName: String): PNode;
{Выдает в виде списка отсортированный}
function UpRuss(s: String): String;
var i: Integer; buf: String;
begin
buf:=s;
for i:=1 to length(buf) do
case buf[i] of
''''a''''..''''z'''': buf[i]:=UpCase(buf[i]);
''''а''''..''''п'''': buf[i]:=chr(ord(buf[i])-32);
''''р''''..''''я'''': buf[i]:=chr(ord(buf[i])-80);
''''ё'''': buf[i]:=''''Ё''''; end;
UpRuss:=buf end;
var m, p, s, min: PNode; buf : TBase;
begin
m:=nil;
if r = nil then Exit;
StreetName:=UpRuss(copy(StreetName, 1, street_len));
while (r <> nil) do begin
if UpRuss(r^.base.street) = StreetName then
Add(m, r^.base.fio, r^.base.city,
r^.base.street, r^.base.house, r^.base.house_room);
r:=r^.Next end;
if m <> nil then begin
p:=m; {Сортировка методом вставки}
while p^.Next <> nil do begin
s:=p^.Next; min:=p;
while s <> nil do begin {Ищем минимальное}
if s^.base.house < min^.base.house then min := s;
s:= s^.Next end;
if min <> p then begin
buf:=p^.base; p^.base := min^.base; min^.base := buf;
end; p:=p^.Next end;
end; SearchByStreet:=m end;

procedure Destroy(var r: PNode);
var p: PNode;
begin
if r = nil then Exit;
while r^.Next <> nil do
begin p:=r^.Next; Dispose(r); r:=p end;
Dispose(r) end;

VAR
p, list: PNode; n: Integer; Street: String;
BEGIN
Root:=nil;
WriteLn(''''Заполнение базы данных'''');
While AddFromKB(root) do WriteLn(''''--'''');
PrintAll(root);
WriteLn(''''============'''');
list:=SearchByStreet(root, ''''aa'''');
if list = nil then WriteLn(''''На улице '''',Street,'''' ничего не найдено'''')
else PrintAll(list);
Destroy(list); Destroy(Root);
END.

1506. Санёк   (10.01.2008 16:12)
0  
Спасибо, все работает теперь.Но помогите, вот есть програмка.Это юнит.Там одна процедура draw выводит на экран 16-цветный рисунок BMP. Помогите, как переделать ее под 256- цветную? (Там надо изменить цветовую гамму, наверное.).
Вот этот юнит:
Drawing.PAS


Unit Drawing;

interface
uses crt,dos,graph;
var f,f1,f2,f3:text;
n:integer;
i:char;
mesing:string[60];
hill:string[8];
adress,name,pass2:string[60];
procedure wait;
procedure Draw(x0,y0: integer; fname: string; transparent: boolean);
procedure input(a,b:integer;c:boolean);

implementation

procedure wait;
begin
while keypressed do i:=readkey;
repeat until keypressed;
end;

procedure Draw(x0,y0: integer; fname: string; transparent: boolean);
label bye;
const color: array[0..15] of byte = (0,4,2,6,1,5,3,7,8,12,10,14,9,13,11,15);
type
bmpinfo = record
h1,h2:char;
size,reserved,offset,b,width,height:longint;
plans,bpp:word;
end;
var
f:file of bmpinfo;
bmpf:file of byte;
info:bmpinfo;
res,x,y,nb,np,i,j:integer;
b,bh,b1,tpcolor:byte;
begin
assign(f,fname);
{$I-}
reset(f);
{$I+}
res:=ioresult;
if res<>0 then begin goto bye;end;
read(f,info);
close(f);
if info.bpp<>4 then begin goto bye;end;
x:=x0;
y:=y0+info.height;
nb:=(info.width div 8)*4;
if (info.width mod 8)<>0 then nb:=nb+4;
assign(bmpf,fname);
reset(bmpf);
seek(bmpf,info.offset);
if transparent then begin
read(bmpf,b);
tpcolor:=b shr 4;
seek(bmpf,info.offset);
end else tpcolor:=17;
for i:=info.height downto 1 do
begin
np:=0;
for j:=1 to nb do
begin
{ if not eof(bmpf) then }
read(bmpf,b);
if np<info.width then
begin
bh:= b shr 4;
if bh<>tpcolor then putpixel(x,y,color[bh]);
inc(x);
inc(np);
end;
if np<info.width then
begin
b1:= b and 15;
if b1<>tpcolor then putpixel(x,y,color[b1]);
inc(x);
inc(np);
end;
end;
x:=x0;
dec(y);
end;
close(bmpf);
bye:
end;

procedure input(a,b:integer;c:boolean);
begin
setfillstyle(1,0);
mesing:='''';
repeat
if c then
begin
pass2:='''';
for n:=1 to length(mesing) do pass2:=pass2+''*'';
outtextxy(a,b,pass2+''_'');
end else outtextxy(a,b,mesing+''_'');
i:=readkey;
if (i<>chr(8)) and (i<>chr(13)) then mesing:=mesing+i;
if i=chr(8) then begin
mesing:=copy(mesing,1,length(mesing)-1);
end;
if i=chr(13) then a:=a+8;
bar(a+length(mesing)*8-8,b,a+length(mesing)*8+16,b+10);
until i=chr(13);
end;
end.
Ответ: Еще не анализировал, но первая мысль: у Вас определены цвета от 0 до 15, а нужно до 255!!!
Напишите себе программу - закрашенные прямоугольнички, чтобы представлять себе соответствие между номером и цветом

1505.   (10.01.2008 15:00)
0  
""В каком виде нужно хранить информацию о людях:
1) в виде массива фиксированного размера;
2) в виде списка (одностороннего хватит). ""
В виде списка надо

1504.   (09.01.2008 22:33)
0  
Извините, я насчет задачки (Описать процедуру, находящую кол-во цифр,данного целого положительного числа к, и их сумму) я не сказала что ее надо чисто арифметически решить... в процедуру только одну переменную ввести надо само число к... вот сама написала, только помогите найти ошибку (и если мона исправить):

procedure INTOJ(k:longint);
var
c,s:longint;
begin
c:=0;
while (k div 10)<>0 do begin
k:=k div 10;
c:=c+1;
end;

s:=0;
while (k div 10)<>0 do begin
s:=s+(k mod 10);
k:=k div 10;
end;
end;
var
g:longint;

begin
writeln(''vvedite cislo'');
readln(g);
INTOJ(g);
Writeln(c,s)
end.
Ответ: В процедуре подсчитывается число цифр в переменной с. Но ее значение теряется при выходе из подпрограммы.
Два основных пути решения проблемы:
1) объявить с глобальной переменной. То есть, перенести VAR C: Longint; выше процедуры. Кстати, хватит и байта :))
2) объявить INTOJ функцией и присвоить ей значение с


Имя *:
Email *:
WWW:
Код *:
Поиск
Друзья сайта
  • Создать сайт
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Все проекты компании
  • Copyright MyCorp © 2024
    Конструктор сайтов - uCoz