IPB

Здравствуйте, гость ( Вход | Регистрация )

> С++ нахождения площади и периметра треугольника по координатам, Переход от Pascal к C++
InFuz
сообщение 11.3.2010, 14:16
Сообщение #1


Студент
**

Группа: Продвинутые
Сообщений: 116
Регистрация: 13.10.2009
Город: Ульяновск
Учебное заведение: УлГУ
Вы: студент



В общем закончили 1 семестр и во втором начался C++ (был и остался Pascal)
Посоветуйте какую нибудь книжку или самоучитель по C++.
Пока читаю Г. Шилд "Самоучитель С++"

И помогите разобраться с 1 лабой. Мало того, что в С++ пока не рублю так еще и задача... я ее даже на листке не решу не то что уж прогу по ней писать.

Известны координаты вершин треугольника ABC: A(x1,y1), B(x2,y2) и C(x3,y3). Найти
его площадь и периметр.

Нашел в инете пару формул, хотя точно не уверен что те.
Вот, что пока смог накорябать.

# include <iostream.h>
# include <stdio.h>
# include <math.h>

int main()

{
int x1,x2,x3,y1,y2,y3;
double s,p,a,b,c;
cout<<"\n Лабораторная работа №1";
cout<<"\n x1="; cin>>x1;
cout<<"\n x2="; cin>>x2;
cout<<"\n x3="; cin>>x3;
cout<<"\n y1="; cin>>y1;
cout<<"\n y2="; cin>>y2;
cout<<"\n y3="; cin>>y3;
a = sqrt((x1-x2)^2+(y1-y2)^2);
b = sqrt((x1-x3)^2+(y1-y3)^2);
c = sqrt((x2-x3)^2+(y2-y3)^2);
p = a+b+c;
cout<<"\n p=" <<p;
/* cout<<"p="<<p;
s=(x1-x3)*(y2-y3)*(x2-x3)*(y1-y3)/2;
cout<<"s="<<s; */
}
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
InFuz
сообщение 6.4.2010, 9:08
Сообщение #2


Студент
**

Группа: Продвинутые
Сообщений: 116
Регистрация: 13.10.2009
Город: Ульяновск
Учебное заведение: УлГУ
Вы: студент



Final

Код
# include <iostream.h>
# include <stdio.h>
# include <math.h>
# include <conio.h>
# include <alloc.h>

//-----------------------------------------------------------------
    int Chislo(int x)
    {
      int j;
      if (x<4) return 1;
      else
       {
         for (j=2; j<ceil(sqrt(x))+1; j++)
         if (x%j==0) return 0;
       }
       return 1;
    }
//-----------------------------------------------------------------
    void swap(int *p)
    {
      int t=p[0];
      p[0]=p[1];
      p[1]=t;
    }
//-----------------------------------------------------------------
    void sort1(int *mas1, int n)
    {
      int again,i;
      do
      {
    again=0;
    for(i=0;i<n-1;i++)
    {
      if(mas1[i]>mas1[i+1])
      {
        swap(mas1+i);
        again=1;
      }
    }
      }
      while(again);
    }
//-----------------------------------------------------------------
    void sort2(int *mas2, int k)
    {
      int again,i;
      do
      {
    again=0;
    for(i=0;i<k-1;i++)
    {
      if(mas2[i]<mas2[i+1])
      {
        swap(mas2+i);
        again=1;
      }
    }
      }
      while(again);
    }
//-----------------------------------------------------------------
    void main()
    {
      clrscr();
      int t,k,i2,j,j2,i,n; j=0; k=0;
      cout<<"n="; cin>>n;
      int* mas1 = new int[n];
      int* mas2 = new int[n];
      cout<<"El-ma \n"<<"\n";
      for (i=0; i<n; i++)
      {
    cin>>mas1[i];
      }
      for (i=0; i<n; i++)
      {
    cout<<"\nmas1["<<i<<"]="<<mas1[i];
      }
      cout<<"\n";
      sort1(mas1,n);
      for (i=0; i<n; i++)
      {
    cout<<"\nmas1["<<i<<"]="<<mas1[i];
      }
      cout<<"\n";
      for (i=0; i<n; i++)
      {
    if (Chislo(mas1[i])==1) {mas2[j]=mas1[i]; j=j+1; k=k+1;}
      }
      for (j=0; j<k; j++)
      {
    cout<<"\nmas2["<<j<<"]="<<mas2[j];
      }
      cout<<"\n";
      sort2(mas2,k);
      for (j=0; j<k; j++)
      {
    cout<<"\nmas2["<<j<<"]="<<mas2[j];
      }
      delete []mas1;
      delete []mas2;
      getch();
    }


Один вопрос
swap пишиться для экономии места и времени или нет?
что измениться если написать

Код
void sort1(int *mas1, int n)
    {
      int again,i,t;
      do
      {
    again=0;
    for(i=0;i<n-1;i++)
    {
      if(mas1[i]>mas1[i+1])
      {
        t=p[i];
        p[i]=p[i+1];
        p[i+1]=t;
        again=1;
      }
    }
      }
      while(again);
    }
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
InFuz   С++ нахождения площади и периметра треугольника по координатам   11.3.2010, 14:16
Евгений М.   Формула Герона. pp=p*0.5; s=sqrt(pp*(pp-a)*(pp- b...   11.3.2010, 15:09
InFuz   Пару вопросов. Что такое pp (p я так понимаю пирим...   11.3.2010, 16:15
Pavlov Andrey   да pp - у него это периметр, а в Героне надо полу-...   11.3.2010, 16:25
InFuz   да фиг его знает, когда вводишь а(1,1) b(-1,1) c(0...   11.3.2010, 18:01
Dimka   выведите на экран промежуточные значения a,b,c,p a...   11.3.2010, 18:20
InFuz   без abs выдает ошибку что значение под корнем отри...   11.3.2010, 18:37
Dimka   да Вы не для меня выводите эти значения, а для себ...   11.3.2010, 18:46
InFuz   Да я знаю что не для вас, не надо так сурово (: к...   11.3.2010, 19:09
Dimka   sqr что ознгачает?   11.3.2010, 19:34
InFuz   возведение в квадрат.   11.3.2010, 19:35
граф Монте-Кристо   Видимо, в math.h нету такой функции. Можно написат...   11.3.2010, 19:42
InFuz   я в принципе и хотел написать в виде х*х, просо с ...   11.3.2010, 19:51
Dimka   на счётах быстрее посчитаешь площадь. Уже 2 часа и...   11.3.2010, 19:54
InFuz   :D если бы я лучше знал язык я бы может и после пе...   11.3.2010, 19:59
InFuz   [b]Лаба №2 [b]Определить, является ли последовате...   12.3.2010, 17:36
Vahappaday   [size=3][b]Лаба №2 [b]Определить, является ли по...   12.3.2010, 19:54
InFuz   я компилю в borland c++ 3.1 т.к. и сдавать лабы ну...   12.3.2010, 21:06
Vahappaday   да [b]"Прикладная математика и информатика...   12.3.2010, 21:32
InFuz   ясно, первая итерация как бы проходит в холостую (...   13.3.2010, 9:56
Vahappaday   ясно, первая итерация как бы проходит в холостую ...   13.3.2010, 11:00
InFuz   [b]Лаба №4 [b]Дан массив целых простых чисел. Пер...   30.3.2010, 12:28
граф Монте-Кристо   a=(float *) malloe (n * sizeof(float)); //...   30.3.2010, 13:05
InFuz   :D   30.3.2010, 15:00
Vahappaday   ой... а зачем и new и malloc? и ни разу не освобож...   31.3.2010, 4:07
InFuz   Пока делаю без функций т.к. с ними еще не разобрал...   31.3.2010, 10:54
Vahappaday   ой... не нравится мне этот код. Опишу в таком поря...   31.3.2010, 14:52
InFuz   Гляньте функцию, еще хотел спросить как х присвоит...   31.3.2010, 16:18
Vahappaday   На мой взгляд, вновь неверно... Теоретически функц...   31.3.2010, 16:43
InFuz   (i=2;i<x;i++)? Разве может быть делителем x чис...   1.4.2010, 10:33
Vahappaday   [b](i=2;i<x;i++)? Разве может быть делителем x...   1.4.2010, 18:39
InFuz   Вот отлаженный вариант # include <iostream.h...   2.4.2010, 14:38
InFuz   # include <iostream.h> # include <stdi...   2.4.2010, 14:52
Vahappaday   qsort - быстрая сортировка, хороший алгоритм, вопр...   2.4.2010, 16:26
InFuz   Чот не знаю как пузырек оформить в виде функции, е...   2.4.2010, 17:09
Vahappaday   Хочу в функции сортировки сделать копию массива с...   2.4.2010, 19:30
InFuz   Вот пузырек реалезованый не как функция. # includ...   2.4.2010, 21:45
Vahappaday   а в чём проблема реализации как функции? Ведь то ж...   3.4.2010, 5:13
InFuz   j=j+1; не знаю наверно привычка с паскаля еще так...   3.4.2010, 9:21
Vahappaday   В функцию нужно передавать весь массив, а не один ...   3.4.2010, 13:34
InFuz   [color=#FF0000]Final [code]# include <iostrea...   6.4.2010, 9:08
Vahappaday   Ответ: конкретно так работать не будет, потому что...   6.4.2010, 13:32
InFuz   Ну вот тот что сверху полностью рабочий вариант, в...   6.4.2010, 19:13
InFuz   [b]Лаба №6 [b]Создать двоичный файл и записать в...   20.4.2010, 14:38
Vahappaday   Нет, все числа из файла, удовлетворяющие условию, ...   20.4.2010, 15:36
InFuz   А я понял, вроде. Надо из файла брать (и добавлять...   20.4.2010, 16:33
Vahappaday   да, только сначала для расчёта условий надо сначал...   20.4.2010, 18:27
InFuz   Гляньте пожалуйста вроде должна работать, но чот н...   21.4.2010, 12:17
Vahappaday   Есть много комментариев по 2 части. Зачем записыв...   21.4.2010, 16:03
InFuz   Все исправил, заработала. Гляньте еще одну прогу....   22.4.2010, 12:46
Vahappaday   return (sym/s); - опять то же самое)) Результат-то...   22.4.2010, 13:53
InFuz   Результат-то будет типа double ну так и функция ти...   22.4.2010, 17:17
Vahappaday   Советую повнимательнее взглянуть сюда: return (sym...   22.4.2010, 20:29
InFuz   Все, готово, кое как своими кривыми ручонками отла...   23.4.2010, 19:07
Vahappaday   А с делением поправили?))) Косячить ведь будет)   23.4.2010, 19:47
InFuz   так точно! сделал еще печать в самой процедуре...   23.4.2010, 21:37
Vahappaday   Если честно, не в курсе, это чисто борландовое пре...   23.4.2010, 22:37


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 9.5.2024, 1:38

Книжки в помощь: "Сборник заданий по высшей математике" Кузнецов Л.А., "Сборник заданий по высшей математике" Чудесенко В.Ф., "Индивидуальные задания по высшей математике" Рябушко А.П., и другие.




Зеркало сайта Решебник.Ру - reshebnik.org.ru