Страница 2 из 2

Re: Турбо паскаль, 1 задача, файл/записи/массивы

Добавлено: 21 янв 2009, 15:49
ge4r
и тут опять будет косяк

1 1 1 1 1 2 он пройдет от 1ой яденицы,увидит что а[5]=a[4], cчетчик не накинет.пойдетй от второй единийы и получит a[2]=a[3]=a[4]=a[5]<>a[6] и накинет счетчик,хотя единиц все же 5 штук стоит)

Re: Турбо паскаль, 1 задача, файл/записи/массивы

Добавлено: 21 янв 2009, 16:02
Naeel Maqsudov
Предлагаю так:
Взять массив на 2 элемента длиннее.
0-й и N-й элементы будут терминальными и равны
A[0]=A[1]+1; A[N]=A[N-1]+1; - т.е. гарантированно неравные своим соседям!

Теперь в цикле по i:=0..N-5 будем "скользить" по массиву "окном" из 6 элементов:
A...A[i+5]
Условием, по которому обнаруживается 4 и только 4 последовательных числа является
(A[i+1]=A[i+2]=A[i+3]=A[i+4]) AND (A<>A[i+1]) AND (A[i+5]<>A[i+1])

Для проверки условия A[i+1]=A[i+2]=A[i+3]=A[i+4] можно использовать цикл,
тогда алгоритм можно будет переформулировать для M и только M последовательных чисел.

Re: Турбо паскаль, 1 задача, файл/записи/массивы

Добавлено: 21 янв 2009, 16:13
ge4r
спс,ща попробую

Re: Турбо паскаль, 1 задача, файл/записи/массивы

Добавлено: 21 янв 2009, 17:31
dr.Jekill
Если долго мучится - что-нибудь получится!
Предлагаю Вашему вниманию готовую программу, учитывающую, что подряд могут идти больше чем 4 одинаковых елемента:

uses crt;
var a:array[1..20] of integer;
n,k,i:byte;
begin
clrscr;
n:=0;k:=0;
writeln('Vvedite elementy massiva -> ');
for i:=1 to 20 do
begin
read(a);
end;
i:=0;
for i:=1 to 20 do
begin
if a=a[i+1] then
k:=k+1;
if (a<>a[i+1]) and (k<>3) then k:=0;
if (k<>0) and (k mod 3 = 0) and (a[i+1]<>a[i+2]) then
begin
n:=n+1;
k:=0;
end;
end;
writeln('Kombinacii iz chetyreh podriad iduschih odinakovyh elementov: ',n:2);
readln;
readln;
end.

Копируй в файл *.bak (или в *.txt, а потом переименуй в *.bak) и запусти с помощью Pascal'я (Открыть с помощью..., TPX.exe).
Хотя наверное Вы сами знаете.

Работает? - Оставьте отзыв.
С уважением dr.Jekill.


Re: Турбо паскаль, 1 задача, файл/записи/массивы

Добавлено: 21 янв 2009, 19:11
ge4r
спаибо,вроде пашет

Re: Турбо паскаль, 1 задача, файл/записи/массивы

Добавлено: 22 янв 2009, 01:35
dr.Jekill
Переписал программку, но запускал всего пару раз. Протестировать надо (а может и отладить). Больше нет свободного времени, а кому может интересно!

Код: Выделить всё

 
uses crt;
var a:array[1..100] of integer;
n,k,i,m,kol:byte;
begin
clrscr;
n:=0;k:=0;kol:=0;m:=0;
write('Vvedite kolichestvo elementov massiva: ');
readln(kol);
if kol=0 then
begin
writeln('Massiv ne dolzhen byt pustym!');
readln;
exit;
end;
writeln('Vvodite elementy massiva');
for i:=1 to kol do
begin
write(' -> ');
read(a[i]);
end;
writeln;
write('Zadaite skolko povtorenii elementa sleduet otslezhivat: ');
readln(m);
if m=1 then
begin
writeln;
writeln('Kazhdyi vvedennyi element budet povtoriaietsia 1 raz!');
readln;
exit;
end;
if m>kol then
begin
writeln('V massive net stolko elementov!');
readln;
exit;
end;
for i:=1 to kol do
begin
if a[i]=a[i+1] then k:=k+1;
if (k>m-1) or ((a[i]<>a[i+1]) and (k<=m-1)) then k:=0;
if (k>0) and (k mod (m-1) = 0) and (a[i+1]<>a[i+2]) and (a[i-m]<>a[i]) then
begin
n:=n+1;
k:=0;
writeln('Element ',a[i]:3,' povtoriaetsia ',m:3,' raz(a) podriad.');
end;
end;
writeln('VSEGO POVTORIAUSCHIHSIA ELEMENTOV: ',n:2);
readln;
end.

Re: Турбо паскаль, 1 задача, файл/записи/массивы

Добавлено: 05 апр 2009, 19:29
Worlok
Пожалуйста, решите задачу....выручайте!!!!Простые задачи, но блин я просто вкурить не могу как они решаются...препод лох!)))
короче:

1)Дан символьный файл f. Получить копию файла в файле g

2)Cведения об автомобиле состоят из его марки, номера и фамилии владельца. Дан файл f, содержащий сведения о нескольких автомобилях. Найти кол-во автомобилей каждой марки

народ, выручайте...