Технический форум

Технический форум (http://www.tehnari.ru/index.php)
-   Помощь студентам (http://www.tehnari.ru/forumdisplay.php?f=41)
-   -   Помогите решить три задачи в Free Pascal (http://www.tehnari.ru/showthread.php?t=69232)

vitaref 15.02.2012 22:57

Помогите решить три задачи в Free Pascal
 
Вложений: 1
Помогите пожалуйста решить задачи.

Даны произвольные числа a,b,c. Выяснить существует ли треугольник с такими длинами сторон. Если треугольник существует, то ответить является ли он равносторонним, равнобедренным или каким либо иным.

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

Даны действительные числа x, ε (x не равно 0, ε>0). Вычислить с точностью ε (ε=10-3,10-4,10-5,10-6) сумму ряда и указать количество учтенных слагаемых. Результаты оформить в виде таблицы:
(подробнее во вложении)

vitaref 15.02.2012 23:19

Первую решил. Надо ещё хотя бы одну задачу сделать

var
a,b,c:real;
t:string;
begin
writeln('vvedite storony treugolnika',a,b,c);
readln (a,b,c);
if (a+b<c) or (b+c<a) or (a+c<b) then t:='treugolnik ne suwestvuet' else t:='treugolnik suwestvuet';
if (a=b) or (b=c) or (a=c) then t:='treugolnik ravnobedrennyy';
if ((a=b) and (b=c)) then t:='treugolnik ravnostoronnyy';
if (a*a=b*b+c*c) or (b*b=a*a+c*c) or (c*c=a*a+b*b) then t:='treugolnik pryamougolnyy';
writeln(t);
readln()
end.

Vladimir_S 16.02.2012 10:51

Цитата:

Сообщение от vitaref (Сообщение 681905)
Первую решил.

В принципе - правильно, но есть несколько замечаний.
Лучше бы убрать переменную t вовсе, а просто в условных операторах выдавать сообщения. То есть так:
Код:

var
 a,b,c:real;
begin
 writeln('vvedite storony treugolnika',a,b,c);
 readln (a,b,c);
 if (a+b<=c) or  (b+c<=a) or (a+c<=b) then
  writeln('treugolnik ne suwestvuet') else
  writeln('treugolnik suwestvuet');
 if ((a=b) and (b=c)) then
  writeln('treugolnik ravnostoronnyy') else
 if (a=b) or (b=c) or (a=c) then
  writeln('treugolnik ravnobedrennyy');
 if (a*a=b*b+c*c) or (b*b=a*a+c*c)  or (c*c=a*a+b*b) then
  writeln('treugolnik pryamougolnyy');
 readln
end.

Связано это с тем, что у Вас в программе переменная t может принимать значение только одного из вариантов строки, между тем как треугольник может оказаться одновременно и равнобедренным, и прямоугольным (с углами 45-90-45), и тогда в предложенном мной варианте появятся обе надписи.
Кроме того, в проверке существования корректнее дать нестрогие неравенства. Ну в самом деле, если сумма двух сторон равна третьей, то что это за треугольник?
И последнее. В операторе останова readln перед заключительным end скобки можно не ставить. Не ошибка, можно и так, как у Вас, но не нужно.

Vladimir_S 16.02.2012 11:45

Цитата:

Сообщение от vitaref (Сообщение 681887)
Даны действительные числа x, ε (x не равно 0, ε>0). Вычислить с точностью ε (ε=10-3,10-4,10-5,10-6) сумму ряда и указать количество учтенных слагаемых. Результаты оформить в виде таблицы: (подробнее во вложении)

Пожалуйста:
Код:

CONST
 Eps:Array[1..4] of Real=(0.001,0.0001,0.00001,0.000001);
VAR
 Sum,x:Real;
 N:Word;
 i:Integer;

PROCEDURE SUMS(Es:Real; Var S:Real; Var Ns:Word);
 VAR
  a:Real;
 Begin
  S:=0;
  Ns:=0;
  Repeat
    Inc(Ns);
    a:=x/Ns/(Sqr(Ns)+Sqrt(Abs(x)+1));
    S:=S+a;
  Until (Abs(a)<Es) or (Ns=10);
 End;

BEGIN
 Write('x= ');
 ReadLn(x);
 WriteLn;
 WriteLn('        Results of calculation:');
 WriteLn('    X          Eps        SUM        N');
 WriteLn;
 For i:=1 to 4 do
  begin
  SUMS(Eps[i],Sum,N);
  WriteLn(x:8:5,'    ',Eps[i]:8:6,'    ',SUM:7:5,'    ',N:3);
  end;
 ReadLn;
END.

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

Vladimir_S 01.05.2012 21:59

Alex-jane, Ваш запрос перенесен в отдельную тему http://www.tehnari.ru/f41/t72547/. Эта ТЕМА ЗАКРЫТА.


Часовой пояс GMT +4, время: 18:55.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.