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

Технический форум (http://www.tehnari.ru/)
-   Delphi, Kylix and Pascal (http://www.tehnari.ru/f43/)
-   -   Функции, двумерный массив, записи, файлы... и все это Pascal. (http://www.tehnari.ru/f43/t37181/)

Goroh 19.06.2010 19:38

Функции, двумерный массив, записи, файлы... и все это Pascal.
 
Народ! Помогите мне решить воть эти четыре задачки!
У меня на носу защита! Кто как сможет!!! плиззззззз!
Буду очень признателен...
Вот задачи которые я не успел решить... help!

1) На плоскости координатами своих вершин заданы два треугольника. Определите, одинакового ли они типа (равносторонний, равнобедренный, произвольный). "Функции"

2) Дана матрица B[N, M]. Найти в каждой строке матрицы максимальный и минимальный элементы и поменять их местами с первым и последним элементом строки соответственно. "Двумерный массив"

3) Из ассортимента конфет, выпускаемых пермской кондитерской фабрикой, выбрать те, стоимость которых от 30 до 55 руб. за 1 кг. Указать срок их годности и номера магазинов, в которых они имеются в продаже. "Записи"

4) Багаж пассажира характеризуется количеством вещей и их общим весом. Дан файл Bagazh, содержащий сведения о багаже нескольких пассажиров. Сведения о багаже каждого пассажира представляют собой запись с двумя полями: одно поле целого типа (количество вещей) и одно — действительного (вес в килограммах).
Найти число пассажиров, имеющих более двух вещей, и число пассажиров, количество вещей которых превосходит среднее число вещей. "Файлы"

DDS 21.06.2010 01:42

Задача 1
Код:

Var  x1,y1,x2,y2,x3,y3:real;
    s1,s2:string;
Function Triangle(x1,y1,x2,y2,x3,y3:real):string;
    Function otrezok(x1,y1,x2,y2:real):real;
      begin
      otrezok:=sqrt(sqr(x1-x2)+sqr(y1-y2));
      end;
  var a,b,c:real;
  begin
  a:=otrezok(x1,y1,x2,y2);
  b:=otrezok(x2,y2,x3,y3);
  c:=otrezok(x1,y1,x3,y3);
  if (a=b)or(b=c)or(a=c) then
    if (a=b)and(b=c)and(a=c) then Triangle:='Equilateral'{равностороний}
    else  Triangle:='Isosceles'{равнобедренный}
  else  Triangle:='Arbitrary'{произвольный}
  end;
Begin
  Readln(x1,y1);
  Readln(x2,y2);
  Readln(x3,y3);
  s1:=Triangle(x1,y1,x2,y2,x3,y3);
  Writeln('The first triangle is ',s1);

  Readln(x1,y1);
  Readln(x2,y2);
  Readln(x3,y3);
  s2:=Triangle(x1,y1,x2,y2,x3,y3);
  Writeln('The second triangle is ',s2);

  If s1=s2 then writeln('Triangles are same!')
          else writeln('Triangles are not same!');

End.

Задача 2
Код:

uses crt;
Const n=5; m=5;
Var b:array [1..n,1..m]of integer;
    min,max:integer;
    i,j:byte;
    tmp,i1,i2:integer;
Begin
  clrscr;
  Randomize;
  For i:=1 to n do
  For j:=1 to m do
  b[i,j]:=random(50)-25;

  For i:=1 to n do
  begin
  For j:=1 to m do
  write(b[i,j]:4);
  writeln;
  end;
  writeln;
  For i:=1 to n do
    begin
  max:=b[i,1];
  min:=b[i,m];
  i1:=1;
  i2:=m;
  For j:=1 to m do
  begin
  if b[i,j]>max then begin max:=b[i,j];i1:=j; end;
  if b[i,j]<min then begin min:=b[i,j];i2:=j; end;
  end;
  tmp:=b[i,1];
  b[i,1]:=b[i,i1];
  b[i,i1]:=tmp;

  tmp:=b[i,m];
  b[i,m]:=b[i,i2];
  b[i,i2]:=tmp;

      end;

  For i:=1 to n do
  begin
  For j:=1 to m do
  write(b[i,j]:4);
  writeln;
  end;

End.

На сегодня всё, пора спать...

DDS 21.06.2010 14:49

Задача 3
Код:

Const n=2;m=2;
Var a:array[1..n]  of record
                      cost:real;
                      srok:integer;
                      shop:array[1..m] of byte;
                      end;
    i,j:byte;
Begin
  For i:=1 to n do
  begin
  Write('Enter cost, shelf life, numbers of shops...');{ввод цены, срока годности, номеров магазинов}
  readln(a[i].cost);
  readln(a[i].srok);
  for j:=1 to m do
  readln(a[i].shop[j]);
  end;
  writeln;

  For i:=1 to n do

  If (a[i].cost>=30)and(a[i].cost<=55)
  then  begin
        writeln('Sweets number ',i,'- shelf life ',a[i].srok);{вывод номера конфет, их срока годности и магазинов}
        writeln('and numbers of shops ');
        for j:=1 to m do
        write(a[i].shop[j]:3);
  end;

End.

Задча 4
Код:

Const n=4;
Var f1:text;
    a:array[1..n] of record
                    k:integer;
                    w:real;
                    end;
    i:byte;
    s:real;
Begin
 s:=0;
 Assign(f1,'bagazh.txt');
 Reset(f1);
 For i:=1 to n do
 begin
 read(f1,a[i].k);readln(f1,a[i].w);
 end;
 for i:=1 to n do
 s:=s+a[i].k;
 s:=s/n;

 Writeln('Passangers with 2 or more things');{вывод багажа с больше, чем 2 вещами}
 For i:=1 to n do
 If a[i].k>2 then writeln('Bagazh number ',i);
 Writeln;
 Writeln;
 Writeln('Things in bagazh more than average');{вывод багажа, с кол-вом вещей больше среднего арифметического}
 For i:=1 to n do
 If a[i].k>s then writeln('Bagazh number ',i);
 Close(f1);
End.


Goroh 21.06.2010 15:13

ОООО!! НУ ПРОСТО Я ОЧ ВАМ БЛАГОДАРЕН! ВЫРУЧИЛИ КАК НАДО! :)
только вот чета 3 неробит :(

DDS 21.06.2010 16:19

Что именно не работает?

Goroh 21.06.2010 16:44

Ну там прога должна выбрать те, стоимость которых от 30 до 55 руб. за 1 кг.
а у меня получается что я только ввожу и ввожу... вывода не происходит...

Vladimir_S 21.06.2010 16:47

Цитата:

Сообщение от DDS (Сообщение 350284)
Что именно не работает?

DDS, там бы надо вставить подсказки при вводе. А то вслепую очень трудно ориентироваться. Типа
Write('Numer of shop ',j,' '); ReadLn(a[i].shop[j]);

DDS 21.06.2010 16:47

Всё правильно. Сначала водишь все данные, а потом программа выдаёт результат...
Чем меньше m,n тем меньше надо вводить...

Goroh 21.06.2010 17:25

эт точно...
подсказок не хватает...
Но все равно спс :)


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

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