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

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

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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> работа с записями, (упорядочение, формирование множества)
18192123
сообщение 27.11.2006 21:28
Сообщение #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 - 27.11.2006 21:29
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 27.11.2006 21:34
Сообщение #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 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 27.11.2006 22:49
Сообщение #3


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

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

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


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

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


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


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

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

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


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

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

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

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

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


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


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

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

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


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


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


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

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

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


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

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

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

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


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


Гуру
*****

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

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


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


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


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

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

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


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

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

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


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


Гуру
*****

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

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


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

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


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


Профи
****

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

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


Спасибо! смысл стал яснее! Но вот с чего мне начинать?
Вот ввела массив, а как быть с записью, не пойму как её формировать...
И ещё вопрос: в итоге мне нужно множество, для которого не определены операции вывода.
Как демонстрировать результат, что выводить в конце?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 28.11.2006 20:30
Сообщение #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 
 К началу страницы 
+ Ответить 
18192123
сообщение 28.11.2006 20:46
Сообщение #12


Профи
****

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

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


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


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

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

ну никак!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 28.11.2006 21:02
Сообщение #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. На будущее - ОДНА тема - ОДИН вопрос...
Чтобы вот такого бардака, как сейчас не было...

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


Профи
****

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

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


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

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

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


Профи
****

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

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


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

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


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


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 30.11.2006 18:27
Сообщение #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 
 К началу страницы 
+ Ответить 
18192123
сообщение 30.11.2006 20:31
Сообщение #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 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 30.11.2006 21:21
Сообщение #18


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

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

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


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

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

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


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


Профи
****

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

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


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

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

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

мне что Т вообще не нужно?
а что насчет записи?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 30.11.2006 21:54
Сообщение #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

 



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