Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2011, 13:24   #1
Degster
Пользователь
 
Регистрация: 30.04.2011
Сообщений: 17
Вопрос Несколько задач

1)вывести фамилии,имена и отчества всех студентов мужского пола,не сдавших более двух экзаменов(предметы:физика,математик а и информатика)
2)заданы имена девочек. определить,какие из этих имен встречаются во всех классах данной параллели,которые есть только в некоторых классах и какие их этих имен не встречаются ни в одном классе.
3)а)определить радиус и центр окружности,на которой лежит наибольшее число точек заданного на плоскости множества точек
б)если к сумме цифр двузначного числа прибавить квадрат этой суммы,то снова получится это двузначное число.найти все такие числа.
Degster вне форума Ответить с цитированием
Старый 30.04.2011, 13:31   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Наработки есть?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.04.2011, 13:54   #3
Degster
Пользователь
 
Регистрация: 30.04.2011
Сообщений: 17
По умолчанию

есть только для второго задания, но она почему то не работает(

Код:
Uses Crt;
type
names = (anya,masha,lyuba,olya,kolya,zhenya);

Var
a,b,c : set of names;
mas : array[0..4] of string = ('anya','masha','lyuba','olya','kolya');
i : integer;
k : names;

Begin
ClrScr;
a := [anya,masha,lyuba];
b := [anya,masha,olya];
c := [anya,masha,kolya];
{----------}
writeln('Est vo vseh klassah: ');
for k := anya to zhenya do
begin
if (k in a) and (k in b) and (k in c) then
write(mas[ord(k)],' ');
end;
writeln;
writeln;
writeln('Net ni v odnom klasse: ');
for k:=anya to zhenya do
begin
if not (k in a) and not (k in b) and not (k in c) then
write(mas[ord(k)],' ');
end;
writeln;
writeln;
writeln('tolko v klasse A: ');
for k:=anya to zhenya do
begin
if (k in a) and not (k in b) and not (k in c) then
write(mas[ord(k)],' ');
end;

Readln
END.


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 30.04.2011 в 16:21.
Degster вне форума Ответить с цитированием
Старый 30.04.2011, 16:39   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) иницилизировать переменные при объявлении нельзя.
Это допустимо только для типизированных констант.
(смотри мой вариант решения ниже)

2) в массиве имён mas Вы Женю потеряли.

3) Вам не нужно решать задачу "tolko v klasse A:" (такое не спрашивается в условиях.

4) с множествами допустимы операции пересечений и объединений.
поэтому, найти имена, которые есть в каждом классе можно так
if (k in a * b * c) then
в принципе, в данном случае это не принципиально (Ваш вариант тоже будет работать правильно.
НО! Когда нужно решать задачу "которые есть только в некоторых классах "
вот тогда вместо целого огорода условий, достаточно:
if (k in a + b + c) and not (k in a*b*c) then

ну и последнее.
А что это за девочка с именем "kolya"? Намяется она по жизни с таким именем...

вот решение:
Код:
uses Crt;
type
  names = (anya, masha, lyuba, olya, Lena, zhenya);

const
  mas: array[0..5] of string = ('anya', 'masha', 'lyuba', 'olya', 'Lena', 'zhenia');

var
  a, b, c: set of names;
  i: integer;
  k: names;

begin
  ClrScr;
  a := [anya, masha, lyuba];
  b := [anya, masha, olya];
  c := [anya, masha, Lena];
{----------}
  writeln('Est vo vseh klassah: ');
  for k := anya to zhenya do
  begin
    if (k in a * b * c) then
      write(mas[ord(k)], ' ');
  end;
  writeln;
  writeln;

  writeln('Net ni v odnom klasse: ');
  for k := anya to zhenya do
  begin
    if not (k in a + b + c) then
      write(mas[ord(k)], ' ');
  end;
  writeln;
  writeln;


  writeln('Est tolko v nekotoryh klassah: ');
  for k := anya to zhenya do
  begin
    if (k in a + b + c) and not (k in a*b*c) then
      write(mas[ord(k)], ' ');
  end;
  writeln;
  writeln;

  Readln
end.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несколько задач Nellas Помощь студентам 24 31.10.2009 14:22
Несколько задач hvaran Помощь студентам 0 07.07.2009 17:31
Несколько задач. GoldMan Паскаль, Turbo Pascal, PascalABC.NET 1 02.12.2008 15:14
[C++] Несколько задач Алиса111 Помощь студентам 1 15.01.2008 03:52
Несколько задач Wilda Паскаль, Turbo Pascal, PascalABC.NET 5 05.12.2007 19:03