![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
pusha |
![]() ![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 5 Пол: Женский Репутация: ![]() ![]() ![]() |
помогите, пожалуйста, девушке-блондинке...
![]() ![]() |
мисс_граффити |
![]()
Сообщение
#2
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
ну раз мало того, что девушке, так еще и блондинке....
если я правильно поняла задание - то что-то вроде такого: program blondi;
const n=10;
var a,b:array[1..n]of integer;
fl:boolean;
i,j,kol:integer;
begin
randomize;
kol:=0;
for i:=1 to n do
begin
a[i]:=random(10);
fl:=true;
write(a[i], ' ');
for j:=1 to kol do
if b[j]=a[i] then
fl:=false;
if fl then
begin
inc(kol);
b[kol]:=a[i];
end;
end;
writeln;
for i:=1 to kol do
write(b[i],' ');
readln;
end.
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
pusha |
![]() ![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 5 Пол: Женский Репутация: ![]() ![]() ![]() |
ОГРОМНОЕ СПАСИБО, МИСС_ГРАФФИТИ!!! очень тебе благодарна за помощь!!!
![]() |
pusha |
![]() ![]()
Сообщение
#4
|
Группа: Пользователи Сообщений: 5 Пол: Женский Репутация: ![]() ![]() ![]() |
ой... еще вопрос: здесь выводятся все члены последовательности без повторений, а как сделать, чтобы выводились только те, которые повторяются, но в единичном экземпляре(без тех, которые не повторяются в первоначальном массиве)?
![]() |
Lapp |
![]()
Сообщение
#5
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
как сделать, чтобы выводились только те, которые повторяются, но в единичном экземпляре(без тех, которые не повторяются в первоначальном массиве)? Если взять за основу код мисс_граффити, то нужно добавить еще один массив, который заполняется примерно так же. Я очень извиняюсь, но я изменил кое-какие названия переменных для большей корреляции с назначением. Так, выходной массив я назвал Dup (Duplication, дубли), а промежуточный - All (все различные элементы). Признак добавления элемента в массив я назвал Take (брать). {for pusha, by Miss_Graffity & Lapp}
{to delete all singles and duplications from array}
const
n=10;
var
a,All,Dup:array[1..n]of integer;
i,j,k,l,Count:integer;
Take:boolean;
begin
k:=0;
l:=0;
for i:=1 to n do begin
a[i]:=random(10);
write(a[i],' ');
Take:=true;
for j:=1 to k do if All[j]=a[i] then Take:=false;
if Take then begin
inc(k);
All[k]:=a[i];
end
else begin
Take:=true;
for j:=1 to l do if Dup[j]=a[i] then Take:=false;
if Take then begin
Inc(l);
Dup[l]:=a[i]
end
end
end;
writeln;
for i:=1 to l do write(Dup[i],' ');
readln;
end.
Ниже - другой вариант решения. Он основан на множествах, что несет в себе некие преимущества (проще и быстрее), но и недостатки тоже: - множества не могут содержать более 255 элементов; - возможно, вы еще просто не проходили множества.. {for pusha by Lapp}
{to delete singles and duplicates, uses sets}
const
n=20;
r=20; {range, must be < 256}
var
a,b:array[1..n]of integer;
All,Dup:set of byte;
i,j:integer;
begin
for i:=1 to n do a[i]:=Random(r ); {заполняем массив случайными числами}
All:=[]; {готовим множество всех элементов}
Dup:=[]; {готовим множество для дублей}
for i:=1 to n do begin
Write(a[i]:3);
if a[i] in All then Dup:=Dup+[a[i]]; {заполняем множество дублей}
All:=All+[a[i]] {заполняем множество всех}
end;
WriteLn;
j:=0; {готовим счетчик выходного массива}
for i:=1 to n do if a[i] in Dup then begin
Inc(j); {увеличиваем счетчик выходного массива}
b[j]:=a[i]; {заполняем выходной массив}
Dup:=Dup-[a[i]] {убираем элемент из множества дублей}
end;
for i:=1 to j do Write(b[i]:3);
WriteLn;
ReadLn
end.
PS не вижу доказательств в профиле, что ты блондинка.. ![]() -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
мисс_граффити |
![]()
Сообщение
#6
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
lapp, да имен переменных мне не жалко.
![]() но я не Цитата Miss_Graffity , а Miss_Graffitiсорри за офф. теперь по теме. если уж брать за основу мой код, то, продолжая следовать женской логике, новый массив создавать не будем. (переменные оставла, как были... ) program blondi;
const n=10;
var a,b:array[1..n]of integer;
fl:boolean;
i,j,kol:integer;
begin
randomize;
kol:=0;
{отделяем цикл с заполнением - потом будем работать только с готовым массивом}
for i:=1 to n do
begin
a[i]:=random(10);
write(a[i], ' ');
end;
for i:=1 to n do
begin
fl:=false;{изначально считаем, что элемент нам не нужен}
for j:=1 to n do
if (a[i]=a[j]) and (i<>j) then {первая проверка: если элемент повторяющийся...}
fl:=true;{если первый тест пройден, задумываемся о том, что его можно взять}
if fl then {если решили, что предварительно он подходящий}
for j:=1 to kol do
if b[j]=a[i] then {то проверяем - может, мы его уже взяли?}
fl:=false;{второй раз брать не будем}
if fl then {если по всем критериям подходит}
begin
inc(kol);
b[kol]:=a[i];{то берем}
end;
end;
writeln;
for i:=1 to kol do
write(b[i],' ');
readln;
end.
при желании, можно вывод не писать отдельным циклом, а делать сразу после принятия решения о том, что элемент нам подошел... имхо, не очень принципиальный вопрос. Сообщение отредактировано: мисс_граффити - 1.12.2006 20:07 -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
pusha |
![]() ![]()
Сообщение
#7
|
Группа: Пользователи Сообщений: 5 Пол: Женский Репутация: ![]() ![]() ![]() |
lapp и мисс_граффити еще раз огромное-преогромное спасибо за помощь!!! что не оставили на произвол... стыдно, конечно, но я вот стала разбираться в программах, вроде все поняла, кроме одного
![]() например, изначальный массив 1 2 4 5 2 5...., первый повторяющийся элемент 2, дойдя до него, получаем, что if (a[i]=a[j]) and (i<>j) это условие выполняется, а значит f1:=true; далее в этом случае выполняется условие if f1 then for j:=1 to kol do if b[j]=a[i] then f1:=false; здесь непонятна строка for j:=1 to kol , ведь kol пока еще =0, и тогда цикл for j:=1 to 0 не выполниться ни разу? так что ли...? |
Lapp |
![]()
Сообщение
#8
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Цитата непонятна строка for j:=1 to kol , ведь kol пока еще =0, и тогда цикл for j:=1 to 0 не выполниться ни разу? так что ли...? Да, именно так ![]() В этом дополнительное доказательство правильности совершаемых действий. Алгоритм внутрене согласован. Однако - WOW! Кажется, ты меня убедила, что это ты сказала не из вежливости: ни разу не работала с массивами, а здесь придется... Действительно, работаешь! ![]() Осталось убедить меня еще в одном пункте: PS не вижу доказательств в профиле, что ты блондинка.. ![]() Поспособствуешь? ![]() -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Lapp |
![]()
Сообщение
#9
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
но я не <...т-ссс!...> , а Miss_Graffiti 2 Miss_Graffiti: Извиняюсь... ![]() ![]() ![]() -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
мисс_граффити |
![]()
Сообщение
#10
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
самой, что ли, осветлиться?...
![]() lapp, я другой перевод встречала - царапать. Граффити (которое рисование) началось с выцарапывания картинок на стеклах в метро. Потом уже в ход пошли маркеры, баллончики и т.д. y или i - в разных источниках по-разному... но я выбрала i ![]() pusha, молодец, что стала разбираться, а не просто распечатала и пошла сдавать. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
pusha |
![]()
Сообщение
#11
|
Группа: Пользователи Сообщений: 5 Пол: Женский Репутация: ![]() ![]() ![]() |
Цитата Осталось убедить меня еще в одном пункте: PS не вижу доказательств в профиле, что ты блондинка.. ![]() если честно, то в профиле не хочу размещать свое фото...мне кажется,что здесь это не так принципиально, как, например, на сайте знакомств... ![]() Цитата Поспособствуешь? ![]() lapp, если тебе интересно (?), как я выгляжу, могу поспособствовать лично: выслать фото на e-mail... ![]() |
![]() ![]() |
![]() |
Текстовая версия | 17.07.2025 22:29 |