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

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

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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> работа с записями, (упорядочение, формирование множества)
сообщение
Сообщение #1


Профи
****

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

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


Дан массив записей. Каждая запись содержит сведения о студенте группы: Ф.И.О., оценки по 4 предметам.
упорядочить массив по невозрастанию сумм оценок.

начала делать, когда дошла до упорядочения: не пойму, как суммы сравнивать (if sum>sum+1??? или ждесь нужны какие-то индексы?)


uses crt;
type
tablica=record
name:string[18];
matan,alg,TP,info:byte;
sum:byte;
end;
var i,j,n:integer; a:tablica;
mas:array[1..24]of tablica; {tablica - massiv zapicey}
Begin
clrscr;
{vvod kol-va zapisey}
write ('n=');
readln(n);
{vvod elementov v massiv zapicey}
for i:=1 to n do
with mas[i] do
begin
writeln ('i=',i:4);
writeln('FIO');
readln(name);
write ('otsenki');
readln (matan,alg,tp,info);
end;
sum:=0;
for i:=1 to n do
sum:=sum+mas[i].matan+mas[i].alg+mas[i].tp+mas[i].info;
for i:=1 to n-1 do
for j:=1 to n-i do
if {????????}



а вот ещё: дан массив из эн натур. чисел. Сформировать множество цифр, которых нет в записи хотя бы одного из чисел массива.

я не пойму смысла этой задачи, что от меня тут требуется?

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


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


function Total(const T: tablica): Integer;
var
s: Integer;
begin
s := 0;
with T do
s := s + matan + alg + TP + Info;
Total := s;
end;

//...

var
T: tablica;

// ...

for i := n downto 2 do
for j := 1 to i - 1 do
if Total(mas[j]) < Total(mas[j + 1]) then begin
T := mas[j];
mas[j] := mas[j + 1];
mas[j + 1] := T;
end;






Добавлено: и убери из структуры tablica поле sum - это избыточная информация, не нужно хранить то, что можно получить из имеющейся информации


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


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

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

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


Цитата
Сформировать множество цифр, которых нет в записи хотя бы одного из чисел массива.

По-моему, тут можно двояко трактовать.
Либо те цифры, которые не встречаются ни в одном из чисел.
Либо те, которые встречаются не во всех...
Скорее второе. Уточнить не можешь?


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


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

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

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


Цитата(18192123 @ 27.11.2006 22:28) *

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

Цитата(мисс_граффити @ 27.11.2006 23:49) *

По-моему, тут можно двояко трактовать.

Условие сформулировано абсолютно четко, никаких двояких толкований.
Могу перефразировать:
в искомом множестве должны быть все цифры, кроме тех, которые входят в запись всех чисел.


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


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

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

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


"которых нет в записи хотя бы одного" = "не те, которые есть в записи хотя бы одного"
нет?
запуталась.
это из серии "ни один" и "любой" - синонимы или антонимы....


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


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

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

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


Цитата(мисс_граффити @ 28.11.2006 2:17) *

"которых нет в записи хотя бы одного" = "не те, которые есть в записи хотя бы одного"

smile.gif
нет, вот так: "которых нет в записи хотя бы одного" = "не те, которые есть в записи всех"

Согласен, тут русский превносит свой колорит.. сочетание "хотя бы один" трудно формализовать.
Можно так:
X принадлежит M, если ......... существует >=1 слОва, в которых X отсутствует
X не принадлежит M, если .......... существует ровно 0 слов, в которых X отсутствует


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


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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


Переношу тему в Дискуссионный Клуб


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


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

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

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


Цитата(Bokul @ 28.11.2006 2:46) *

Переношу тему в Дискуссионный Клуб

Bokul, хохмач, хоть бы улыбнулся при этом! smile.gif))))
С каких это пор математика стала предметом голосования??
PS
хватит флудить..


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


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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


Цитата
Bokul, хохмач, хоть бы улыбнулся при этом! smile.gif))))

Дык я на полном серьёзе blum.gif
P.S. только форум что-то глючит...
P.S.S. все, убегаю, больше не буду...
P.S.S.S. поверели...


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Профи
****

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

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


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


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

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

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


18192123, давай не будем сваливать в кучу 2 независимых задачи? а то путаница будет...
запись - это элемент массива, соответственно, ввести массив, не сформировав записи, не удастся.
если бы у тебя был массив целых чисел, заполнение было бы простым. Ну, что-то вроде такого:
for i:=1 to n do
begin
writeln('введите элемент');
readln(mas[i]);
end

Здесь же элемент - запись, состоящая из нескольких полей, каждое из которых надо заполнить. Например, так:
for i:=1 to n do
begin
writeln('введите фамилию');
readln(mas[i].name); {здесь мы заносим значение как бы не в целый элемент, а в его кусочек}
writeln('введите оценку по матану');
readln(mas[i].matan);
{и так со всеми полями}
end


это ты вполне благополучно делаешь:
for i:=1 to n do
with mas[i] do {благодаря этой строчке тебе не надо каждый раз писать mas[i].name - достаточно просто name}
begin
writeln ('i=',i:4);
writeln('FIO');
readln(name);
write ('otsenki');
readln (matan,alg,tp,info);
end;


в чем проблема-то?
или я вопрос не поняла...?


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


Профи
****

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

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


Цитата(мисс_граффити @ 28.11.2006 20:30) *


или я вопрос не поняла...?

У меня 2 задачки в этой теме, с первой - я разобралась, а вот с этой
"а вот ещё: дан массив из эн натур. чисел. Сформировать множество цифр, которых нет в записи хотя бы одного из чисел массива. "

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


Гость






18192123, а поконкретнее, что ИМЕННО не получается? Не можешь найти множество цифр, встречающихся в каждом числе?

Смотри:
for i := 1 to n do begin
digits := []; { <--- в начале обработки этого числа - пустое множество }
T := a[i]; { <--- временный буффер, чтобы не портить сам массив }

while T > 0 do begin
digits := digits + [T mod 10];
T := T div 10;
end;
{
Вот тут у тебя множество digits уже заполнено всеми цифрами,
которые есть в текущем элементе массива
}
end;


А вот теперь подумай, что нужно сделать, чтобы найти все числа, которые ЕСТЬ в каждом элементе массива? А потом из множества всех существующих цифр просто вычтешь найденное, и все...

М
P.S. На будущее - ОДНА тема - ОДИН вопрос...
Чтобы вот такого бардака, как сейчас не было...

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


Профи
****

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

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


Цитата(volvo @ 28.11.2006 21:02) *

18192123, а поконкретнее, что ИМЕННО не получается?

На счет одной задачи в теме - я поняла. Действительно бардак получается!
ну а с задачей вот что:
прежде всего не пойму насчет записи цифр, что там должно быть, как её формировать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Профи
****

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

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


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

и ещё: в чём здесь смысл, почему мы делаем так


digits := digits + [T mod 10];
T := T div 10;


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


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

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

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


а, ты про это... вывод
for i:=0 to 9 do
if i in mn then
writeln(i)


а здесь:
digits := digits + [T mod 10];
T := T div 10;

мы разбиваем число на цифры.
допустим, у нас есть число Т=273.
на первом проходе T mod 10 даст нам 3. После этого делаем T div 10, получаем Т=27. На следующем проходе аналогично выделяем 7, а в Т остается 2.. идем на третий проход. Выделили 2, в Т остался 0.


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


Профи
****

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

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


Вот что у меня получилось, только всегда выводит от 0 до 9-ти;
и еще: я не знаю, как сюда приплести запись чисел массива


uses crt;
const n=5;
type vect=array[1..n]of integer;
var a:vect;
i:byte;
T:integer;
rez_mn,is_mn:set of byte;
begin
clrscr;
for i:=1 to n do read(a[i]);
is_mn:=[0..9];
for i:=1 to n do
begin
rez_mn:=[];
t:=a[i];
while T<>0 do
begin
rez_mn:=rez_mn+[T mod 10];
T:=T div 10;
end;
end;
rez_mn:=is_mn-rez_mn;
for i:=0 to 9 do
begin
if i in rez_mn then
writeln (i);
end;
readkey;
end.



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


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

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

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


естественно, у тебя будет выводится от 0 до 9. Ты же сама пишешь:
is_mn:=[0..9];
smile.gif

а вместо T у тебя должно быть a[i] - тебе же исследовать не мифическое Т, а элементы конкретного массива.

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


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


Профи
****

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

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


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

естественно, у тебя будет выводится от 0 до 9. Ты же сама пишешь:
is_mn:=[0..9];
smile.gif

а вместо T у тебя должно быть a[i] - тебе же исследовать не мифическое Т, а элементы конкретного массива.

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


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

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

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


T - абсолютно не нужно.
вместо него пишешь a[i] и делаешь снаружи цикл по i. то есть чтобы действия, описанные volvo, выполнялись для каждого элемента.
записи? сначала у тебя множество пустое. а добавление в него эл-тов происходит здесь:
rez_mn:=rez_mn+[T mod 10];


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

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

 





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