IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Операция с одномерным численным массивом, хелп!
Олег
сообщение 5.03.2007 13:32
Сообщение #1


Гость






Задание: найти наибольшее количество цифр, идущих подряд.

Функция, использует переменные
ntemp - количество цифр в строке
temp - сам массив цифр



Function count(ntemp:byte; temp:massiv):byte;
Var i,t,c,max:byte;
Begin
max:=1;
For i:=1 to (ntemp-1) do if (temp[i]=temp[i+1]-1) then
begin
t:=i;
c:=1; while (t<ntemp) and (temp[t]=temp[t+1]-1) do
begin
if c>max then max:=c; else inc©; inc(t);
end;
i:=t;
end;
count:=max+1;
End;




Проблема в следующем: функция циклится в процессе For , несмотря на то, что i много больше ntemp, чего, я полагаю, быть не должно.


Если дана строка вида 12345000 или 765123400 то проблем нет - последовательность одна. А вот при сравнении максимума все зависает.

Замечу, что пробовал не один алгоритм - эффект идентичный.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Гость
сообщение 5.03.2007 13:49
Сообщение #2


Гость






ну могу полностью программу...

Дан текстовый файл f, состоящий из нескольких строк. В каждой строке найти наибольшее количество цифр, идущих подряд. Из этих значений сформировать файл h.

А что же насчет изменения i - так другие мысли на ум не приходят, как это решать...


Program tip2;
Uses crt;
Type file1=text; file2=file of byte; massiv=array[0..10] of byte;
Var H:file2; F:file1; Fname:string; s:byte; re,n:massiv;

Function count(ntemp:byte; temp:massiv):byte;
Var i,t,c,max:byte;
Begin
max:=1;
For i:=1 to (ntemp-1) do if (temp[i]=temp[i+1]-1) then
begin
t:=i;
c:=1; while (t<ntemp) and (temp[t]=temp[t+1]-1) do
begin
if c>max then max:=c; else inc©; inc(t);
end;
i:=t;
end;
count:=max+1;
End;

Procedure Input(Var F:file1; Fname:string; Var s:byte; Var n:massiv);
Var x,i,j:byte;
Begin
clrscr;
Write('Input/filename: '); Readln(fname);
Assign(F,fname); ReWrite(F); Append(F);
Write('Input/count/strings: '); Readln(s);
For j:=1 to s do
Begin
Write('Input/count/elements: '); Readln(n[j]);
Writeln('String ',j,#10,#13,'!start');
For i:=1 to n[j]-1 do
Begin
write(i,') '); Readln(x); Write(F,x,' ');
End;
Write(n[j],') '); Readln(x); Writeln(F,x);
Writeln('!end');
End;
Close(F);
End;





Procedure mathpart(Var F:file1;Var re:massiv; s:byte; n:massiv);
var i,j,x,ntemp:byte; temp:massiv;
Begin
Reset(F);
For j:=1 to s do
begin
for i:=1 to (n[j]-1) do
Begin
Read(F,x);
temp[i]:=x;
End;
Readln(F,x); temp[n[j]]:=x;
ntemp:=n[j];
re[j]:=count(ntemp,temp);
End;
Write('Output/count: '); for j:=1 to s do write(re[j],' '); Writeln;
Close(F);
readkey;
End;

procedure Output(Var H:file2; s:byte; re:massiv);
Var j:byte;
Begin
Write('Input/filename: '); Readln(fname);
Assign(H,fname); ReWrite(H); Reset(H);
Write('Output/file/count: ');
For j:=1 to s do begin write(H,re[j]); write(re[j],' '); end;
Close(H);
readkey;
End;

Begin
Input(F,Fname,s,n);
mathpart(F,re,s,n);
output(H,s,re);
End.

 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 18:31
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"