Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > пожалуйста помогите решить задачки на С++


Автор: ashnu 22.5.2006, 12:50
1. Описать процедуру ArrayTbMatrix1(A,K,M,N,B), формирующую по вещественному массиву A размера K матрицу B размера MxN (матрица заполняется элементами массива А по строкам). Лишние элементы полагаются равными 0. Двумерный массив B является выходным параметром. С помощью этой процедуры на основе данного массива A размера K и целых M и N сформировать матрицу B размера MxN.
2. Описать функцию DecompressStr(S) строкового типа, Восстанавливающую строку, сжатую процедурой CompressStr . Параметр S содержит cжатую строку; восстановленная строка является возвращаемым значением функции. С помощью функции DecompressStr восстановить пять данных строк.
3. Используя типы Tpoint, TTriangle и функцию Dist описать процедуру Heights(T,h1,h2,h3), находящую высоты h1,h2,h3 треугольника T (Т - входной параметр типа TTriangle, h1,h2,h3 - выходные вещественные параметры), проведенные соответственно из вершин T.A, T.B, T.C. С помощью этой процедуры найти высоты треугольников ABC, ABD, ACD, если даны координаты точек A,B,C,D.

помогите пожалуйста 

Автор: Friackazoid 22.5.2006, 13:39
Ну почему никто не только не читает правила форума, но и даже то что выделенно  краснымцветомsmile 
    1 В задаче 2 уточните каким алгоритмом строка сжимаеться. Или алгоритм сжатия нодо придумать самому?
  

Автор: ashnu 22.5.2006, 14:26
можно использовать любой алгоритм 

Автор: Friackazoid 22.5.2006, 15:57
Ну чесно говоря вопросов меньше не стало. Например по первой задаче
    Это все таки процедура или функция. Потому что по старой терминологии паскаля процедура не возвращает значений, тогда ей надо передавать В как параметр. Или это функция которая возвращяет В тогда как параметр его передавать не надо.
Я поняля это все-таки как процедуру вот код
Код

#include <iostream.h>
#include <conio.h>

void ArrayTbMatrix1 (float a[], int k, int N, int M, float **b)
{
  int z=0,j,i;
  for (i=0; i<N; i++)
    for (j=0; j<M; j++)
      if (z<k)
        { b[i][j]=a[z]; z++;}
      else b[i][j]=0;
}

int main(int argc, char* argv[])
{
  cout<<"ââåäèòå ðàçìåðíîñòü ìàññèâà À";
  int K;
  cin>>K;
  float *A= new float [K];
  for (int i=0; i<K; i++)
  {
    cout<<"Ââåäèòå ýëåìåíò "<<i<<" ìàññèâà À";
    cin>>A[i];
  }
  cout<<"Ââåäèòå ðàçìåðíîñòü ìàòðèöû Â";
  int n,m;
  cin>>n>>m;
  float **B=new float*[n];
  for (int i=0; i<n;i++)
    B[i]=new float [m];
  ArrayTbMatrix1 (A,K,n,m,B);
  for (int i=0; i<n; i++)
  {
    for (int j=0; j<m; j++)
      cout<<B[i][j]<<' ';
    cout<<'\n';
  }
  getch();
  delete []A;
  for (int i=0; i<n; i++)
    delete B[i];
  delete []B;
  return 0;
}

 smile  

Автор: Friackazoid 22.5.2006, 17:09
Ой извините забыла что пользуюсь собственной функцие для перекодировки
Вот третья задача 
Код

#include <iostream.h>
#include <conio.h>
#include <math.h>
#pragma argsused

struct Tpoint
{
  double x,y;
};
struct Ttriangle
{
  Tpoint A, B, C;
};

double* Dist (Ttriangle trey)
{
  //длины сторон
  double AB=sqrt((trey.B.x-trey.A.x)*(trey.B.x-trey.A.x)+(trey.B.y-trey.A.y)*(trey.B.y-trey.A.y));
  double AC=sqrt((trey.C.x-trey.A.x)*(trey.C.x-trey.A.x)+(trey.C.y-trey.A.y)*(trey.C.y-trey.A.y));
  double BC=sqrt((trey.C.x-trey.B.x)*(trey.C.x-trey.B.x)+(trey.C.y-trey.B.y)*(trey.C.y-trey.B.y));
  //полупериметр
  double p=(AB+AC+BC)/2;
  double *h=new double[3];
  h[0]=(2/BC)*sqrt(p*(p-BC)*(p-AC)*(p-AB));
  h[1]=(2/AC)*sqrt(p*(p-BC)*(p-AC)*(p-AB));
  h[2]=(2/AB)*sqrt(p*(p-BC)*(p-AC)*(p-AB));
return h;
}

int main(int argc, char* argv[])
{
  Ttriangle ABC, ABD, ACD;
  cout<<"Enter A\n";
  cin>>ABC.A.x>>ABC.A.y;
  ABD.A.x=ABC.A.x;
  ABD.A.y=ABC.A.y;
  ACD.A.x=ABC.A.x;
  ACD.A.y=ABC.A.y;
  cout<<"Enter B\n";
  cin>>ABC.B.x>>ABC.B.y;
  ABD.B.x=ABC.B.x;
  ABD.B.y=ABC.B.y;
  cout<<"Enter C\n";
  cin>>ABC.C.x>>ABC.C.y;
  ACD.C.x=ABC.C.x;
  ACD.C.y=ABC.C.y;
  cout<<"Enter D\n";
  cin>>ACD.B.x>>ACD.B.y;
  ABD.C.x=ACD.B.x;
  ABD.C.y=ACD.B.y;
  double *H1,*H2,*H3;

  H1=Dist(ABC);
  cout<<"ABC:\n" ;
  for(int i=0; i<3; i++)
    cout<<H1[i]<<'\n';

  H2=Dist(ABD);
  cout<<"ABD:\n";
  for(int i=0; i<3; i++)
    cout<<H2[i]<<'\n';

  H3=Dist(ACD);
  cout<<"ACD:\n" ;
  for(int i=0; i<3; i++)
    cout<<H3[i]<<'\n';
  delete H1, H2, H3;
  getch();
  return 0;
}
 

Автор: ashnu 23.5.2006, 07:21
большое спасибо
 

Автор: ashnu 23.5.2006, 08:57
посмотри пожалуйста задачки которые be4 писал 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)