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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2008, 07:48   #1
vdv08
Пользователь
 
Регистрация: 01.04.2008
Сообщений: 42
По умолчанию Пожалуйста,помоготе решить задачки!

1)Число делиться на 11.если разность между суммой цифр, стоящих на нечетных местах, и суммой цифр, стоящих на четных местах,кратна 11. Проверит этот признак для всех натуральных чисел, не превосходящих заданного m, и вывести числа кратные 11.


2)На шахматной доске стоят черный король и три белые ладьи(ладья бьет по горизонтали и вертикали).Проверить не находиться ли король под боем, а если есть угроза, то от кого именно.


3)Найти все натуральные числа от 1 до 1000 которые совпадают с последними разрядами своих квадратов.(например.25^2=625, 76^2=5676) .


4)Можно ли из круглой заготовки радиуса l вырезать две прямоугольные пластину и с раз мерами a*b и c*d?
vdv08 вне форума Ответить с цитированием
Старый 08.04.2008, 07:55   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну так в чем проблема по первому? - конвертируй число в строку, и проходя по ее элементам каждую цифру конвертируй в число, суммируй в две переменки четные и нечетные.
Цитата:
2)
Это матрица 8х8 просто проверь совпадают ли позиции короля и ладей хотябы по одной из координат
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.04.2008, 09:36   #3
Xardas
Сисадмин
Форумчанин
 
Аватар для Xardas
 
Регистрация: 28.12.2007
Сообщений: 320
По умолчанию

Вот буквально на днях объяснял Вам, как решать эти задачи, и вот Вы опять почти скопировали предыдущую Вашу тему, и такое ощущение, что Вы даже и не пытались их сделать...
Уж про 4-ую задачу я Вам сказал все, что можно по ней сказать, не знаем формулы площадей, берем учебник геометрии и все, задача решается в 2 строчки... Не в обиду будет сказано, но видимо я в Вашей прошлой теме правильно выразился: "Охотимся за халявой"...

Код:
var
n,m:integer;
i,j,s1,s2:integer;

procedure reverse(n:integer);
begin
if odd(i) then S1:=S1+(n mod 10)
else S2:=S2+(n mod 10);
inc(i);
if (n div 10)<>0 then reverse (n div 10);
end;

begin
  readln(m);
  for j:=1 to m do
  begin
  i:=1; S1:=0; S2:=0;
  reverse(j);
  if s1=s2 then writeln(j);
  end;
  readln;
end.
Вот как вариант решение первой задачи, именно так я предлагал Вам ее сделать, более простой вариант для понимания Вам предложил Stilet. Дерзайте...
Xardas вне форума Ответить с цитированием
Старый 08.04.2008, 13:02   #4
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Насчет 4-ой задачи. ИМХО сравнения площадей недостаточно для ответа на поставленный вопрос. Хотя для решения все равно не нужно знать ничего сложнее теоремы Пифагора.

Код:
var lines : array [1..4] of real;

  procedure setLines(n:integer; k,l:real);
  begin
      if k > l then begin
         lines[n]   := k;
         lines[n+1] := l;
      end else begin
         lines[n]   := l;
         lines[n+1] := k;
      end;
  end;

var R, a, b, c, d, x, y : real;
    ok:boolean;
begin
   R := 50;
   a := 60; b := 30;
   c := 80; d := 40;

   // Выбираем прямоугольник с большей стороной
   if ((a > c) and (a > d)) or ((b > c) and (b > d)) then begin
      setLines(1, a, b);
      setLines(3, c, d);
   end else begin
      setLines(3, a, b);
      setLines(1, c, d);
   end;

   if lines[1] >= 2*R then ok := false
   else begin
      // Берем самую длинную сторону и строим хорду
      x := sqrt(sqr(R) - sqr(lines[1] / 2));
      // Вычитаем вторую сторону прямоугольника
      x := x - lines[2];
      // К первому прямоугольнику прикладываем второй
      // вычитаем меньшую сторону второго прямоугольника
      x := x - lines[4];

      // Вычисляем длину хорды в этой точке
      // если это возможно
      if abs(x) > R then ok := false
      else begin
         y := sqrt(sqr(R) - sqr(x)) * 2;
         // Второй прямоугольник поместится если хорда < стороны
         ok := lines[3] <= y
      end;
   end;

   if ok
   then writeln('можно вырезать')
   else writeln('нельзя вырезать');
   readln;
2Xardas. Или я слишком усложняю ?
alexBlack вне форума Ответить с цитированием
Старый 08.04.2008, 13:36   #5
Xardas
Сисадмин
Форумчанин
 
Аватар для Xardas
 
Регистрация: 28.12.2007
Сообщений: 320
По умолчанию

Цитата:
Сообщение от alexBlack Посмотреть сообщение
2Xardas. Или я слишком усложняю ?
Приношу свои извинения, действительно не подумал ...
Xardas вне форума Ответить с цитированием
Старый 08.04.2008, 14:29   #6
Xardas
Сисадмин
Форумчанин
 
Аватар для Xardas
 
Регистрация: 28.12.2007
Сообщений: 320
По умолчанию

В качестве работы над ошибками , предложу свой вариант решения 3 задачи:

Код:
var
i,j:integer;
StNum,NewStr:string;

procedure DigSel(aNumber,aCountNum:integer; var aNewStr:string);
var
SNum:string; NewStrBuf:string;
begin
str(aNumber,SNum);
NewStrBuf:='';
aNewStr:='';
//выделяем из квадрата числа столько цифр, сколько в этом числе
for i:=0 to aCountNum-1 do
NewStrBuf:=NewStrBuf+SNum[length(SNum)-i];

//"переворачиваем" строку, чтобы в дальнейшем производить сравнение
for i:=length(NewStrBuf) downto 1 do
aNewStr:=aNewStr+NewStrBuf[i];
end;

begin
for j:=1 to 1000 do
begin
//переводим в строку число
str(j,StNum);
//передаем в процедуру квадват числа и количество цифр, которых необходимо выделить из квадрата
DigSel(sqr(j),length(StNum),NewStr);
if StNum=NewStr then writeln(j,'*',j,'=',j*j);
end;
readln;
end.

Последний раз редактировалось Xardas; 08.04.2008 в 14:35.
Xardas вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Люди добрые,помогите пожалуйста решить задачки!!! Мартышонок Паскаль, Turbo Pascal, PascalABC.NET 4 22.05.2008 08:00
Пожалуйста помогите решить 4 задачки на массивы и оператор цикла. alena-yalymova Паскаль, Turbo Pascal, PascalABC.NET 8 05.04.2008 22:21
Помогите решить 2 задачки,пожалуйста!!!!(С++) Студентка@ Помощь студентам 1 21.03.2008 18:28
Помогите решить 2 задачки! Venom Помощь студентам 12 25.06.2007 13:51