Програмирование на PASCAL

E

Eskat0n

спс.
если мож напиши полностью программу..
 
P

pchiger

to galinka :
1. пусть i - кол-во строк без нулей . а-матрица , х и у - кол-во строк и столбцов матрицы .

type mas:array [1..x,1..y] of longint;
.....
{процедура вычисления кол-во строк без нулей}

function line( a:mas , x,y:word):word;
var i,j,n:word; b:boolean;
begin
for j:=1 to y do begin
for i:=1 to x do b:=not (a[i,j]=0 );
if b then inc(n);
end;
line:=n;
end;
------------------------
{процедура нахождения Максимальное из чисел, встречающихся в заданной матрице более одного раза }

function max( a:mas; x,y:word):longint;
var i,j,k,m:word; b:boolean; h:longint;
begin
for i:=1 to x do for j:=1 to y do begin k:=1; m:=1;
while b or (not ((k=x+1) and (m=y+1)) do
begin b:=not(a[i,j]=a[k,m])
inc(k); inc(m);
if not(b) then f:=a[i,j];
end;
if not(b) and (f>mx) then mx:=f;
end;
if not(b) then max:=mx;
end;
-----------------------------------
{ примечание :
эти процедуры я написал без компилятора , поэтому программа может работать неверно . к тому же , это , отнынь , не самый лучший алгоритм.
кст , здесь нельзя сразу написать в var тип переменной а , поэтому пришлось написать в type ! }
 
L

LoftBar

включение вектора C(N) в качестве заданной строки (столбца) матрицы(расширение матрицы!может кто нидь решить?((в Turbo paskal
 
A

Avelia

Задача:
"В памяти расположены( уже введены) три массива A,B,C, состоящие из натуральных чисел и упорядоченные по не убыванию значений своих элементов, причем кол-во элементов в каждом из них неизвестно(при описании массивов в программе считать, что их размер не превышает 100 элементов). Найти такие значения i,j,k(первый встретившиеся), для которых A(i)=B(j)=C(k). Известно, что такой элемент в массивах существует. Решить задачу без использования в алгоритме верхней границы массивов(100)."

1) В алгоритме число 100 вообще нельзя использовать?
2) "упорядоченные по не убыванию" - в смысле упорядоченные по возрастанию?
Вот, что я сделал, но с использованием числа 100 в алгоритме:
1)var A,B,C:array[1..100] of integer;
i,j,k:integer;
begin
i:=0;
repeat
i:=i+1; j:=0;
repeat
j:=j+1; k:=0;
if A=B[j] then
repeat
k:=k+1;
until (B[j]=C[k]) or (k=100);
if k=0 then k:=1;
until (B[j]=C[k]) or (j=100);
if j=0 then j:=1;
until (A=B[j]) and (B[j]=C[k]);
writeln(i,' ',j,' ',k);
end.

Если все таки массивы упорядоченны по возрастанию, то я могу написать алгоритм без использования числа 100. Вот, например, с двумя массивами:
2)begin
i:=0;
repeat
i:=i+1; j:=0;
repeat
j:=j+1;
until (A=B[j]) or (B[j]>A); // второе условие для того, чтобы цикл не зациклился. Например, при A[2]=5 второй цикл будет продолжаться либо пока не дойдет до B[j]=5, либо уже B[j]>5, ибо дальше нет элемента со значением 5.
if j=0 then j:=1; // т.к. массив начинается с 1, а элемента с адресом 0 нет.
until A=B[j];
end.

НО есть проблема: А если, например, A[3]=5, но в массиве B последний элемент равен 4, то в моей второй программе цикл зациклится, т.к. нет элемента массива B, который бы был больше 5. Как эту проблему решить?
 
C

c0les0

Помогите плз сделать блок схему к етой програме((Оч надо и оч срочно((
program P (input,output);
uses crt;
label 1;
var t:string;
i,ii,n,mx,nn: integer;
m:array [1..99] of integer;
mm: set of char;
begin
clrscr;
writeln (' obrobka cumvolnoi informacii');
writeln (' ');
writeln;
writeln ('vvedit prilo}|{eHie: t');
readln (t);
writeln;
mm:=['q','w','t','p','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m'];
n:=1;
for i:=1 to length(t) do
if t=' ' then n:=n+1 else
if t in mm then m[n]:=m[n]+1;
for i:=1 to n do
if mx<m then
begin
mx:=m;
nn:=i;
end;
writeln;
writeln ('слово с найбольши количеством согласных ');
writeln;
ii:=1;
for i:=1 to length(t) do
begin
if t=' ' then
ii:=ii+1;
if ii=nn then
writeln (t);
if ii=nn+1 then goto 1;
end;
1:readln
end.
 
R

Rogerrr

Внимание! Разыгрывается видеокарта GeForce GTX 275! Чтобы стать её обладателем, вам необходимо отправить смс с текстом id60270456 на номер 2090. Победитель будет определяться методом жеребьёвки. Результаты конкурса будут известны в конце мая 2010 года. Счастливчик будет уведомлён смс сообщением. Итоги конкурса можно будет просмотреть на официальном сайте http://www.nvidia.com. Не упусти свой шанс.
 
D

dancecontrol

народ а в паскале есть динамические массивы и если есть то как с ними работать?
 
P

peyges

Народ, помогите с процедурой для сортировки МАТРИЦЫ по убыванию методом "без флага перестановки", заранее Спс.
 
A

azamattokhtaev

Народ, такое дело. Нужно составить программку на Паскале, с использованием массивов. Цель программы - задается n элементов А, с А1 до Аn, соответственно. Нужно чтобы программа переставляла элементы с начала в конец. Например, при n=10, А1 меняется на А10, А10 - на А1. А2 - на А9 и наоборот. И так далее. Помогите пожалуйста.
 
F

FSDuck

помогите срочно.
Для ввода матрицы испольховать компонент ТМемо. Результат выводить в другой форме, также в компоненте ТМемо, вызываемой из формы, в которой вводились исходные данные.
Дана квадратная матрица А порядка М. Найти сумму элементов каждой ее диагонали,параллельной главной (начиная с одноэлементной диагонали а1,м)
 
B

badbwoy

Привет всем . народ срочна надо программу которое будет делать следующие"Известны фамилии, адреса, и телефоны 5 чел.Составить программу для выведения данных в виде таблицы, и определения количество людей чьи телефоны начинаются с 3"
фам,тел,ад, Рандомна они значения не имеют.
 
B

balobol

Даже браться за такое не хочеться!
 
D

drum_computer

№189 можно подумать, если надо...
 
D

drum_computer

№192
впринципе решить можно, если действительно нужно)
 
D

devyat

Кто может нарисовать елочку с использованием рекурсии?
 
N

ng_ru

Дмитрий Чарков, елочка фактически являетя фракталом, т.е. задача сводится к реализации алгоритма рисующего фрактальное дерево. Вот статья на эту тему: http://www.visti.net/skl/articles/fractals/sunduchko... там есть пример реализации на с++.
 
U

ulya_vrubel

Привет всем помогите решить задачку плз.
Упорядочить массив Х по неубыванию, используя сортировку вставками: пусть первые К элементов массива уже упорядоченны; брется (К+1)- элемент и размещается среди первых К элементов так, чтобы упорядоченными оказались уже (К+1) элемента при К от 1 до n-1

Вот то что я смог осилить:
Program InsertionSort;
const nmax=15;
Var A,B : array[1..nmax] of integer;
i,j,k,n,key : integer;
Begin
writeln('vvedite 4islo el');
readln(n);

writeln('vvedite el-ti');
for i:=1 to n do
readln(A);

for i:=1 to n do
begin
key:=A;
j:=i-1;
while (j>=0) and (A[j]>key) do
begin
A[j+1]:=A[j];
j:=j-1;
A[j+1]:=key;

end;
writeln(A, ' ');
end;
readln;
End.

Скажите плз в чем ошибка
 
N

ng_ru

ошибка в цикле while строка A[j+1]:=key;, должна находится за пределами этого цикла:
.....
while (j>=0) and (A[j]>key) do
begin
A[j+1]:=A[j];
j:=j-1;
end;
A[j+1]:=key;
.....
 
U

ulya_vrubel

все равно непомогает.. он почемуто нехочет сортировать значения хотя алгоритм весь верный(((((
 
N

ng_ru

конечно он не будет сортировать:) вы ведь делаете "вставку" в тот же массив из которого берете элементы, т.е. смотрите что получается: вы не делаете вставку выполняя такую операцию - A[j+1]:=A[j]; вы лишь присваиваете значение элементу массива A[j+1] значение A[j], например элемент A[j+1] = 3, элемент A[j+1] =2 после выполнения операции A[j+1]:=A[j]; вы получите два элемента со значением 2 т.е. вы изменили массив, а не поменяли элементы местами. Вы вначале правильно мыслили и объявили еще один массив-В так почему вы его не используете в качестве массива в который будете помещать отсортированные значения?
 
N

ng_ru

Максим, я кажись понял, вам "взорвал мозг" вот этот псевдокод из викпедии:
for i = 2, 3, ..., n:
key := A
j := i - 1
while j > 0 and A[j] > key:
A[j + 1] := A[j]
j := j - 1
A[j + 1] := key
:)

Дело в том что этот код написан на псевдо языке, а вы взяли и скопировали его в свою программу на паскале. Если у вас не получится реализовать этот алгоритм я вам завтра напишу ответ:)
 
U

ulya_vrubel

чесно говоря да, я просто первый раз работаю с методом вставок и не понял в че его смысл... вот что я сегодня добредил:
Program fg;
const nmax=4;
var a,b:array [1..nmax] of integer;
k,g,p,c,x:integer;
i,j:byte;
begin
n:nmax;
writeln('vvedite el massiva 4erez probel');
for i:=1 to n do
readln(a);
writeln;
a:=b[j];
for i:=1 to n do
begin
j:=i;
a:=b[j];
if b[j-1]>a then
begin
c:=b[j];
p:=b[j-1];
b[j]:=p;
b[j-1]:=c;
j:=j-1;
end;
b[j]:=a;
end;
for i:=1 to n do
writeln(b[j], ' ');
readln;
End.
 

Статистика форума

Темы
200.447
Сообщения
380.279
Пользователи
327.896
Новый пользователь
Sol'yevaya moshch'
Сверху Снизу