Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 03.12.2013
Сообщений: 70
1
1C 8.x

Проверка на существование треугольника, вычисление площади и периметра

12.04.2016, 18:33. Показов 1852. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Необходимо написать программу, вообщем сгенерировать три случайных числа (стороны треугольника), написать функцию проверки на существование треугольника, функцию вычисления площади, процедуру вывода на экран сторон, площади и периметра. я написал, но есть вопросы:
1) если в одной из функций в 1с используется переменная, то в другой эту переменную уже нельзя использовать, она не будет видимой?
2) в переменную res я записывал результат проверки на существование треугольника, но программа не может привести результат к числу... не могу понять почему так...
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Перем Гсч;  // Генератор случайных чисел
Перем Pi;
 
 
Процедура ПриНачалеРаботыСистемы()
    Перем a,b,c;
     Вывод();
     //Проверка_сущ(a,b,c);
     //Периметр(a,b,c);
     //Пл_Гер(a,b,c);
    
КонецПроцедуры
Функция Проверка_сущ(a,b,c)
    res= ?(a<b+c И b<a+c И c<a+b,1,0);
    Возврат res;
  КонецФункции
 Функция Периметр(a,b,c)
     Возврат a+b+c;
  КонецФункции
  Функция Пл_Гер(a,b,c)
      p=(a+b+c)/2;
      Sq=Sqrt( p*(p-a)*(p-b)*(p-c));
      Возврат Sq;
  КонецФункции
  Процедура Вывод()
      a=Случайное(10,20);
      b=Случайное(20,30);
      c=Случайное(30,40);
      Сообщить("Сторона а : " + a);
      Сообщить("Сторона b : " + b);
      Сообщить("Сторона c : " + c);
      Если res=1      Тогда
          Сообщить("Периметр равен : " + Периметр(a,b,c) );
          Сообщить("Площадь равна  : " + Пл_Гер(a,b,c) );
      Иначе
         Сообщить("Дальнейшие расчеты невозможны! Это - не треугольник! ");
          КонецЕсли;
  КонецПроцедуры
 
// Использование объекта Гсч  
Функция Случайное(НГран, ВГран)   
    Возврат НГран + Гсч.СлучайноеЧисло(0, ВГран - НГран);
КонецФункции
 
// Создание объекта генератора случайных чисел
Гсч = Новый ГенераторСлучайныхЧисел();
Pi = 3.14159265358979;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.04.2016, 18:33
Ответы с готовыми решениями:

Вычисление периметра треугольника и площади
всем привет,можете подсказать,как решить задачу на Qbasic:вычисление периметра треугольника и...

Вычисление площади и периметра треугольника
Вычисление площади и периметра треугольника. Данны декартовы координаты вершин треугольника(в...

Вычисление периметра и площади треугольника, заданного вершинами
Разроботать алгоритм,вычесляющий периметр,и площадь треугольника,заданного вепшинами.Вершины...

Вычисление периметра и площади треугольника по вводимым сторонам
Начал изучать Java.Получил следующее задание.Нужно написать программу вычисляющую периметр и...

3
Эксперт 1С
3057 / 2004 / 524
Регистрация: 25.06.2009
Сообщений: 6,964
12.04.2016, 18:50 2
alexey122, вы нигде не вызываете функцию проверки на треугольник.
Измените код этой процедуры:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Процедура Вывод()
    a = Случайное(10,20);
    b = Случайное(20,30);
    c = Случайное(30,40);
    Сообщить("Сторона а : " + a);
    Сообщить("Сторона b : " + b);
    Сообщить("Сторона c : " + c);
    res = Проверка_сущ(a,b,c);
    Если res = 1      Тогда
        Сообщить("Периметр равен : " + Периметр(a,b,c) );
        Сообщить("Площадь равна  : " + Пл_Гер(a,b,c) );
    Иначе
        Сообщить("Дальнейшие расчеты невозможны! Это - не треугольник! ");
    КонецЕсли;
КонецПроцедуры
Добавлено через 2 минуты
Цитата Сообщение от alexey122 Посмотреть сообщение
то в другой эту переменную уже нельзя использовать, она не будет видимой?
можете передавать нужную переменную в функцию/процедуру или объявлять в начале модуля, но в рамках одного контекста. В модуле управляемого приложения все выполняется на клиенте, поэтому здесь вопросов нет.
0
0 / 0 / 0
Регистрация: 03.12.2013
Сообщений: 70
13.04.2016, 14:12  [ТС] 3
Спасибо большое вам за ответ! Но не могли бы вы объяснить одну вещь - почему, ранее, когда я писал код немного по другому, и в функции писал возврат значения , а потом функцию вызывал, программа запускалась но это значение не печаталось на экране

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Перем Гсч;  // Генератор случайных чисел
Перем Pi;
 
 
// Обработчик события  ПриНачалеРаботыСистемы работает
// после запуска графического интерфейса
Процедура ПриНачалеРаботыСистемы()
    Перем a,b,c,result1,result2;
    //Для 7 треугольников:
    Для Счетчик = 1 по 7 Цикл
    result1=Check_Triangle(a,b,c);
    result2=Perimetr(a,b,c,result1);// почему значение периметра не выводится на экран при запуске программы (Периметр равен : )
    КонецЦикла;
КонецПроцедуры
// При помощи генератора случайных чисел задать тройки чисел (не массивы) - стороны треугольника. Вычислить периметр 
// и площадь 7 треугольников. Предусмотреть функцию проверки треугольника, функцию расчета периметра теугольника,
// функцию расчета площади (по методу Герона), процедуру вывода сторон треугольника, его площади,периметра
 
 // Функция проверки треугольника по трем сторонам
 Функция Check_Triangle(side1,side2,side3)
       // Объявляем булевые переменные флаг, отвечающие за проверку существования треугольника и переменную результата проверки :
       // Создаем стороны треугольника (случайные числа)
           side1= Случайное (10,20);
           side2= Случайное (20,30);
           side3= Случайное (30,40);
       //Сообщаем пользователю стороны треугольника
        Сообщить ("Сторона треугольника 1 : " +side1  );
        Сообщить ("Сторона треугольника 2 : " +side2  );
        Сообщить ("Сторона треугольника 3 : " +side3  );
        //Проверка на существование 
        res= ?(side1<side2+side3 И side2<side1+side3 И side3<side1+side2, 1,0);
        Возврат res;
    КонецФункции
    
    Функция Perimetr(side1,side2,side3,res)
       //Объявляем переменную периметра
       // Смотрим,стоит ли считать периметр треугольника
           Если res=0 Тогда
          Сообщить ("Дальнейшие расчеты невозможны! Треугольник не существует! ");
          Возврат 0;
      Иначе
          //Периметр
          Per=side1+side2+side3;      
          Сообщить ("Периметр равен : ");
          Возврат Per; // почему значение периметра не выводится на экран при запуске программы (Периметр равен : )
      КонецЕсли;
          
  КонецФункции
    
    
// Использование объекта Гсч  
Функция Случайное(НГран, ВГран)   
    Возврат НГран + Гсч.СлучайноеЧисло(0, ВГран - НГран);
КонецФункции
 
// Создание объекта генератора случайных чисел
Гсч = Новый ГенераторСлучайныхЧисел();
Pi = 3.14159265358979;
0
Эксперт 1С
3057 / 2004 / 524
Регистрация: 25.06.2009
Сообщений: 6,964
13.04.2016, 20:20 4
alexey122, потому что вы в сообщить не выводили значение периметра, надо так:
1C
1
          Сообщить ("Периметр равен : " + Per);
0
13.04.2016, 20:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.04.2016, 20:20
Помогаю со студенческими работами здесь

Вычисление периметра и площади равностороннего треугольника по стороне (процедура)
помогите это написать с процедурой TrianglePS var a,s,p:real; begin end; begin write('введiть...

Вычисление периметра и площади прямоугольного треугольника по 2 его катетам
Задание 2. Поместить в модуль подпрограмму, выполняющую указанные действия. Продемонстрировать...

Вычисление периметра, площади и гипотенузы прямоугольного треугольника - непонятный повтор ввода
дана простенькая задачка... в коде все написано #define _CRT_SECURE_NO_WARNINGS #include...

Вычисление площади и периметра прямоугольного треугольника, если известны длины двух его катетов
составить алгоритм и программу для вычесления площади и периметра прямоугольного треугольника, если...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru