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

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Помогите с прогами в Паскале (http://www.tehnari.ru/f41/t31383/)

JCHacker 23.12.2009 22:43

Помогите с прогами в Паскале
 
9.8. Дано матрицу А размером 6х6. Заменить в матрице элементы главной диагонали нулями.

10.8. Дано стороны двух треугольников: a, b, c и d, e, f.
Найти, на сколько площадь одного треугольника больше второй.
Площадь треугольника ABC со сторонами A, B, C исчисляется по
формулой Герона
s = r (r-a) (r-b) (r-c)
где R - пивпериметр треугольника ABC. Вычисление площади треугольников оформить в виде процедуры.

6.8. Дан одномерный массив P, состоящий из 16 элементов. Найти номера тех элементов, модуль которых равна заданному числу А. Число А ввести с клавиатуры.

Помогите решить эти 3 задачи в Паскале)
Оч нужно!!!
Спасибо.

DDS 23.12.2009 23:09

Задание 9.8
Код:

const n=6;
var a:array[1..n,1..n]of byte;
      i,j:byte;
begin
Randomize;
for i:=1 to n do
  for j:=1 to n do
  a[i,j]:=random(10);
for i:=1 to n do
  a[i,i]:=0;
for i:=1 to n do
  begin
      for j:=1 to n do
      write(a[i,j],' ');
      writeln;
  end;
readln;
end.


DDS 23.12.2009 23:19

Задание 6.8
Код:

const n=10;
var p:array[1..n]of byte;
    i,a:byte;
begin
 Randomize;
 for i:=1 to n do
    p[i]:=random(10);
 for i:=1 to n do
    write(p[i],' ');
 writeln;
 write('a= '); readln(a);
 for i:=1 to n do
    if p[i]=a then writeln(i);
 readln;
end.


DDS 23.12.2009 23:38

Задание 10.8
Код:

var a,b,c,d,e,f:byte;
    s1,s2,s_otn:real;
procedure geron(a,b,c:byte;var s1:real);
  var p:real;
  begin
    p:=(a+b+c)/2;
    s1:=sqrt(p*(p-a)*(p-b)*(p-c));
  end;
begin
 write('Введите a b c '); readln(a,b,c);
 write('Введите d e f '); readln(d,e,f);
 geron(a,b,c,s1);
 geron(d,e,f,s2);
 s_otn:=s1/s2;
 writeln('Площадь 1 треугольника ',s1:5:2);
 writeln('Площадь 2 треугольника ',s2:5:2);
 writeln('Отношение площадей ',s_otn:5:2);
 readln;
end.

Я не стал делать проверку существования треугольника, так что при проверке вводите числа такие, чтобы треугольники существовали.

Vladimir_S 24.12.2009 10:25

Уважаемый DDS, я позволил себе внести некоторую правку в Ваши программы, уж извините. Во-первых, если Вы используете генератор случайных чисел, то не забывайте в начале программы его инициализировать, т.е. написать команду Randomize. Во-вторых, ну что у Вас за пристрастие к CRT-шным командам типа ReadKey, при том, что модуль CRT вы не присоединяете? Останов программы в конце проще всего делается командой Readln, правда сработает это только при условии, что ввод с клавиатуры в теле программы осуществляется ТОЛЬКО командами Readln(x), но не Read(x). Универсальный останов лучше всего сделать так:
Uses CRT;
...
Repeat Until KeyPressed;
ReadKey;
Последняя команда, впрочем, нужна только если останов не оконечный.
Ну и в-третьих, сделана небольшая косметика: поправлены явные описки.
Надеюсь, без обид?

Vladimir_S 24.12.2009 11:29

Цитата:

Сообщение от Vladimir_S (Сообщение 274061)
Универсальный останов лучше всего сделать так:
Uses CRT;
...
Repeat Until KeyPressed;
ReadKey;

Насчет универсального останова - тут меня Long Cat поправил. Совсем правильно будет так:
Код:

while keypressed do readkey; {гарантируем пустой буфер перед ожиданием}
readkey;
if (keypressed) then readkey;  {опустошаем буфер, если была нажата клавиша с расширенным скан-кодом}


DDS 24.12.2009 17:04

Vladimir_S, спасибо за поправки. Буду стараться в дальнейшем их учитывать.

JCHacker 24.12.2009 17:51

Спасибо большое, очень помогли))))
Если не сложно, еще одна задачка)

Оформить вычысление значения интегральной функции Ф(х), используя формулу(х>0):
http://www.tehnari.ru/imagehosting/2...371e14813b.jpg

Vladimir_S 24.12.2009 21:20

Цитата:

Сообщение от JCHacker (Сообщение 274189)
Оформить вычисление значения интегральной функции Ф(х), используя формулу(х>0):
http://www.tehnari.ru/imagehosting/2...371e14813b.jpg

Код:

FUNCTION Fi(x:REAL;n:INTEGER):REAL;
 VAR
  i:INTEGER;
  a,S:REAL;
 BEGIN
  a:=1;
  S:=1;
  FOR i:=1 TO n DO
  BEGIN
    a:=a*SQR(x)/4/i*(2*i-1)/(2*i+1);
    S:=S+a;
  END;
  Fi:=S*x*SQRT(2/Pi);
 END; {Fi}

Надеюсь, что первый минус в скобках - опечатка.

JCHacker 26.12.2009 01:55

Спасибо огромнейшее)


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

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