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

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

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

 
 Ответить  Открыть новую тему 
> простая задача на массив, девушке срочно требуется помощь
сообщение
Сообщение #1





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

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


помогите, пожалуйста, девушке-блондинке... wub.gif )) ни разу не работала с массивами, а здесь придется... программа простая сама понимаю.., но вам же не сложно мне помочь и написать вот это: Даны целые числа а1,а2,...,аn, среди которых могут быть повторяющиеся. Составьте новый массив из чисел, взятых по одному из каждой группы равных членов данной последовательности. Очень прошу..., буду благодарна за любую помощь... give_rose.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


ну раз мало того, что девушке, так еще и блондинке....
если я правильно поняла задание - то что-то вроде такого:
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.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





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

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


ОГРОМНОЕ СПАСИБО, МИСС_ГРАФФИТИ!!! очень тебе благодарна за помощь!!! good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





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

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


ой... еще вопрос: здесь выводятся все члены последовательности без повторений, а как сделать, чтобы выводились только те, которые повторяются, но в единичном экземпляре(без тех, которые не повторяются в первоначальном массиве)? unsure.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(pusha @ 1.12.2006 2:03) *
как сделать, чтобы выводились только те, которые повторяются, но в единичном экземпляре(без тех, которые не повторяются в первоначальном массиве)?

Если взять за основу код мисс_граффити, то нужно добавить еще один массив, который заполняется примерно так же. Я очень извиняюсь, но я изменил кое-какие названия переменных для большей корреляции с назначением. Так, выходной массив я назвал 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
не вижу доказательств в профиле, что ты блондинка.. smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


lapp, да имен переменных мне не жалко. smile.gif просто обзывала их по привычке. fl - это flag...
но я не
Цитата
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.

при желании, можно вывод не писать отдельным циклом, а делать сразу после принятия решения о том, что элемент нам подошел... имхо, не очень принципиальный вопрос.

Сообщение отредактировано: мисс_граффити -


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





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

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


lapp и мисс_граффити еще раз огромное-преогромное спасибо за помощь!!! что не оставили на произвол... стыдно, конечно, но я вот стала разбираться в программах, вроде все поняла, кроме одного rolleyes.gif , объясните пожалуйста вот эту часть:
например, изначальный массив 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 не выполниться ни разу? так что ли...?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата
непонятна строка for j:=1 to kol , ведь kol пока еще =0, и тогда цикл for j:=1 to 0 не выполниться ни разу? так что ли...?

Да, именно так smile.gif Если еще ничего не набрано, то и сравнивать не нужно.
В этом дополнительное доказательство правильности совершаемых действий. Алгоритм внутрене согласован.

Однако - WOW! Кажется, ты меня убедила, что это ты сказала не из вежливости:
Цитата(pusha @ 30.11.2006 14:16) *

ни разу не работала с массивами, а здесь придется...

Действительно, работаешь! smile.gif Respect!
Осталось убедить меня еще в одном пункте:
Цитата(lapp @ 1.12.2006 6:01) *

PS
не вижу доказательств в профиле, что ты блондинка.. smile.gif

Поспособствуешь? smile.gif Sorry about offtop..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(мисс_граффити @ 1.12.2006 21:06) *

но я не <...т-ссс!...> , а Miss_Graffiti

2 Miss_Graffiti:
Извиняюсь... smile.gif Слово какое-то не вполне английское, хотя явно пришло из английского, поэтому рука сама набирает "y".. smile.gif Интересно, что по итальянски (предположительный источник) это вообще значит совсем не то: циклевать, скреплять, фальцевать blink.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


самой, что ли, осветлиться?... rolleyes.gif
lapp, я другой перевод встречала - царапать. Граффити (которое рисование) началось с выцарапывания картинок на стеклах в метро. Потом уже в ход пошли маркеры, баллончики и т.д.
y или i - в разных источниках по-разному... но я выбрала i smile.gif

pusha, молодец, что стала разбираться, а не просто распечатала и пошла сдавать.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11





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

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


Цитата
Осталось убедить меня еще в одном пункте:

PS
не вижу доказательств в профиле, что ты блондинка.. smile.gif


если честно, то в профиле не хочу размещать свое фото...мне кажется,что здесь это не так принципиально, как, например, на сайте знакомств... smile.gif

Цитата
Поспособствуешь? smile.gif


lapp, если тебе интересно (?), как я выгляжу, могу поспособствовать лично: выслать фото на e-mail... rolleyes.gif






 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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