Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Fortran]Вычисление заданного набора геом. характ. треугольник 
:(
    Опции темы
KJIaCCuK
Дата 15.2.2008, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 11.5.2006
Где: Новосибирск

Репутация: нет
Всего: нет



Написать программу, реализующую на языке Фортра вычисление заданного набора геом. характеристик треугольников с использованием меню:
1. ввод треугольника
2. вычисление прлощади треугольника
3. вычисление мин. угла в градусах
4. вычмсление кос. мин. угла в градусах
5. окончание работы

-программа должна быть модульной, каждое действие равлизуется в виде подпрограммы
- параметры треугольника хранятся в общих блоках, остальное - по желанию
-вещественные числа хранятся с одинарной точностью
-вычесления производится оптимальным образом
-все вводимые данный проверяются на корректность
-все углы измеряются в градусах

Треугольник задается координатами вершин, использовать векторное произведение.


Буду признателень в помощи! Спасибо!!!
PM MAIL ICQ   Вверх
KJIaCCuK
Дата 18.2.2008, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 11.5.2006
Где: Новосибирск

Репутация: нет
Всего: нет



Код

subroutine vvod
    common /blok/ a1,a2,a3,b1,b2,b3, c(3),cos,i,j
    
       print* ,'Enter coordinates of'
     print* ,'first top'
     read* ,a1,b1
       print* ,'second top'
       read* , a2,b2
       print* ,'third top'
       read* , a3,b3

    end
     
    subroutine cosinus
    common /blok/ a1,a2,a3,b1,b2,b3, c(3),cos,i,j
    dimension e(6)


    e(1) = abs(a2-a1)
    e(2) = abs(b2-b1)

      e(3) = abs(a3-a1)
    e(4) = abs(b3-b1)

    e(5) = abs(a3-a2)
    e(6) = abs(b3-b2)

    c(1)  = (e(1)**2 + e(2)**2)**0.5
      c(2)  = (e(3)**2 + e(4)**2)**0.5
    c(3)  = (e(5)**2 + e(6)**2)**0.5

    c_min= c(1)
    i = 2
    j = 3
    if(c(2) .LT. c_min) then
    i = 1
    j = 3 
    c_min = c(2) 
    end if
    if(c(3) .LT. c_min) then
    c_min = c(3)
    i = 1
    j = 2
    end if

      
      cos = ((e(2*i-1)*e(2*j-1) + e(2*i)*e(2*j)) /(c(i)*c(j)))
    

    end

    


      subroutine square(S)
      common /blok/ a1,a2,a3,b1,b2,b3, c(3),cos,i,j
      
      sin = (1-cos**2)**0.5

    S = c(i)*c(j)*sin*0.5
    
      end

    subroutine ugol(U)
      common /blok/ a1,a2,a3,b1,b2,b3, c(3),cos,i,j

    pi  = 3.1415926
        U = (acos(cos)/pi)*180 
    end



    program main

    common /blok/ a1,a2,a3,b1,b2,b3, c(3),cos
    


      print* ,'Main menu'
      i_command =1
    i_error =0
    do while(i_command .NE. 5) 
       
        if (i_command .EQ. 1) then 
           call vvod    
        else 
             if (i_command .EQ. 2) then 
               call square(S)
               print* ,'Square:'
               print* , S  
           else
               if (i_command .EQ. 3) then
                   print* ,'Cosinus:'
                   print* ,cos 
                 else
                  if (i_command .EQ. 4) then
                        call ugol(U) 
                      print* , 'Angle'
                      print* , U
                  else
                      print* , 'Command Error'
                  end if
                 end if
             end if
        end if 

     
     call cosinus

       print* ,'Main menu'
     print* ,'1. Enter new coordinates'
       print* ,'2. Square of triangle'
       print* ,'3. Cosinus'
     print* ,'4. Angle'
     print* ,'5. Exit'

     print* ,'Enter command:'
       read* ,i_command

    end do

    print* ,'(c) KJIaCCuK. ALL RIGHTS RESERV'
       read*
     end



Может ли кто-нибудь объяснить следующее 

Код

 cos = ((e(2*i-1)*e(2*j-1) + e(2*i)*e(2*j)) /(c(i)*c(j)))

PM MAIL ICQ   Вверх
Cr@$h
Дата 15.1.2009, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 3
Всего: 41



i и j содержат информацию о наименьшем угле. Потом с помощью этих и ндексов в формулах используются соответствующие стороны треугольника. Так по алгоритму задумано, по крайней мере.

Это сообщение отредактировал(а) Cr@$h - 15.1.2009, 15:03
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0793 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.