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

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

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

 
 Ответить  Открыть новую тему 
> массив. поиск. сортировка
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


если нет равных элементов, то вывести массив по убыванию последней цифры.
вообще бред какой-то творю
Const
Nmax=10000;
Var
A:Array[1..Nmax] of Integer;
flag:Byte;
i,j,n:integer;
procedure Sort(Var x,y:integer);
Var
tmp:integer;
Begin
tmp:=x;
x:=y;
y:=tmp;
end;
procedure Poisk(x:integer; flag:Byte);
Var
k,y:Byte;
Begin
flag:=1;
y:=x mod 10;
for I := 1 to n-1 do begin
for k := i+1 to n do begin
If a[i]=a[k] Then begin
flag:=0;
Break;
end;
end;
end;
end;
Begin
Writeln('Vvedite dliny posledovatelnosti(n<=10000)');
Read(n);
Writeln('Vvedite posledovatelnost');
flag:=0;
For i:=1 to n Do
Begin
Read(A[i]);
If flag=0 Then
Poisk(A[i],flag);
end;
If flag=1 Then Begin
For i:=1 to n-1 Do Begin
For j:=i+1 to n Do
If (A[i]mod 10)<=(A[j]mod 10) Then
Sort(A[i],A[j]);
end;
end;
For i:=1 to n Do WriteLn(A[i]);
Readln;
Readln;
end.


Сообщение отредактировано: лоен -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Побочные эффекты от некорректного использования глобальных переменных... У тебя I в цикле ввода и I в процедуре Poisk - одна переменная. И ведет она себя поэтому непредсказуемо... Объяви локальную переменную I в процедуре, и почти все встанет на свои места (почти - потому, что для того, чтобы определить, не вводился ли уже раньше тот элемент, который был введен только что, достаточно ОДНОГО цикла...)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


спасибо.
исправил переменную. но есть еще ошибки, я так подозреваю.
попробую в один цикл.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


удалил Y. больше ничего не могу найти T_T
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Покажи, что у тебя есть на данный момент...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


почти то же самое.
Const
Nmax=10000;
Var
A:Array[1..Nmax] of Integer;
flag:Byte;
i,j,n:integer;
procedure Sort(Var x,y:integer);
Var
tmp:integer;
Begin
tmp:=x;
x:=y;
y:=tmp;
end;
procedure Poisk(x:integer; flag:Byte);
Var
i,k:Byte;
Begin
flag:=1;
for I := 1 to n-1 do begin
for k := i+1 to n do begin
If a[i]=a[k] Then begin
flag:=0;
Break;
end;
end;
end;
end;
Begin
Writeln('Vvedite dliny posledovatelnosti(n<=10000)');
Read(n);
Writeln('Vvedite posledovatelnost');
flag:=0;
For i:=1 to n Do
Begin
Read(A[i]);
If flag=0 Then
Poisk(A[i],flag);
end;
If flag=1 Then Begin
For i:=1 to n-1 Do Begin
For j:=i+1 to n Do
If (A[i]mod 10)<=(A[j]mod 10) Then
Sort(A[i],A[j]);
end;
end;
For i:=1 to n Do WriteLn(A[i]);
Readln;
Readln;
end.


Сообщение отредактировано: лоен -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


еще предложения есть?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Смотри:

Const
Nmax=10000;
Var
A:Array[1..Nmax] of Integer;

procedure Sort(Var x,y:integer);
Var
tmp:integer;
Begin
tmp:=x;
x:=y;
y:=tmp;
end;

{
flag должен быть описан как VAR параметр, кроме этого
передаем номер вводимого в данный момент элемента,
чтоб сравнить его со всеми предыдущими
}
procedure Poisk(x, size: integer; var flag: Byte);
var
i: integer;
Begin
flag := 1; { 1 если элемент уже встречался ранее }
for i := 1 to size - 1 do
if a[i] = X then exit;
flag := 0; { 0 если этого элемента еще не было }
end;

{ Переменные описаны здесь, потому что выше они тебе не нужны... }
var
flag:Byte;
i, j, n: integer;

Begin
Writeln('Vvedite dliny posledovatelnosti(n<=10000)');
Readln(n);
Writeln('Vvedite posledovatelnost');

flag:=0;
For i:=1 to n Do
Begin
Readln(A[i]);
If flag=0 Then
Poisk(A[i], i, flag);
end;

If flag=1 Then Begin
For i:=1 to n-1 Do Begin
For j:=i+1 to n Do
If (A[i]mod 10)<=(A[j]mod 10) Then
Sort(A[i],A[j]);
end;
end;

For i:=1 to n Do WriteLn(A[i]);
Readln;
end.

Вот так вот...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


все так просто и понятно
огромное спасибо)

Добавлено через 4 мин.
все равно не работает х_х
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Цитата
все равно не работает х_х
Не принято! Подпись мою внимательно читал? Программа проверена, вот лог работы:

Цитата
Vvedite dliny posledovatelnosti(n<=10000)
10
Vvedite posledovatelnost
1
20
54
45
45
46
84
21
54
84

46
45
45
84
54
84
54
21
1
20
Что не устроило? Как ДОЛЖНО БЫТЬ на этих исходных данных? Сказать "все равно не работает" - слишком просто, тебе не кажется?

Добавлено через 2 мин.
Или поменять
  If flag=1 Then Begin { <--- здесь }
For i:=1 to n-1 Do Begin
For j:=i+1 to n Do
If (A[i]mod 10)<=(A[j]mod 10) Then
Sort(A[i],A[j]);
end;
end;

единицу на 0 - это ОЧЕНЬ сложно? Ты же знаешь свое задание, я написал, что значит ноль, а что значит единица для Flag-а... В чем проблема вообще? dry.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


оп, извиняюсь)
ну не заметил, бывает)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 29.03.2024 4:47
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name