Форум программистов, компьютерный форум CyberForum.ru

Вычисление значений неэлементарной функции y = f(x). - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
NaiMI
 Аватар для NaiMI
0 / 0 / 0
Регистрация: 13.03.2013
Сообщений: 13
16.03.2013, 12:47     Вычисление значений неэлементарной функции y = f(x). #1
Составить программу для вычисления значения неэлементарной функции y = f(x). Реализовать решение несколькими способами:
1) полное ветвление;
2) краткая форма ветвления с использованием составных логических выражений;
3) с использованием условной операции.
Подобрать самостоятельно значения входных данных, демонстрирующие правильность работы программы. Количество тестов должно быть не менее 7 (внутри каждого интервала и на границах).
Аргумент функции прочитать из заранее подготовленного текстового файла In.txt, полученное значение функции вывести на экран и записать в выходной файл Out.txt
4) Написать программу, которая запрашивает аргумент функции x и номер формулы, по которой происходит вычисление (самая верхняя формула – № 1, самая нижняя – № 4). Предусмотреть ввод некорректных данных (номер меньше 1 или больше 4) и случай, когда x не входит в область определения вычисляемой функции.
Подобрать самостоятельно значения входных данных, демонстрирующие правильность работы программы. Количество тестов должно обеспечивать проверку работы каждой формулы (с учётом области определения), а также случай, когда не может быть выбрана ни одна из четырёх формул.

Отчётом о проделанной работе является текстовый файл в сетевой папке (имя файла содержит информацию о фамилии, группе и подгруппе, порядковом номере лабораторной работы и номере варианта).
В отчёте должны быть:
 тексты всех четырёх программ;
 входные данные для тестирования и ожидаемый результат (для первых трёх задач тесты совпадают, для четвёртой – в соответствии с условиями задачи.

y = cos(x)+14/sin(x)+7 при x < 4
y = sqrt(x+ln(abs(x-8)+10)) при 4 <= x < 12
y = sqrt(x-13) при 12 <= x < 38
y = 5*x при x>=38

сама программа

C++
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;
 
 
/*
Функция y = f(x):
y = cos(x)+14/sin(x)+7 при x < 4
y = sqrt(x+ln(abs(x-8)+10)) при 4 <= x < 12
y = sqrt(x-13) при 12 <= x < 38
y = 5*x при x>=38
*/
int func1(double x)
int func2(double x)
int fubc3(double x)
 
int main()
{
   setlocale(LC_ALL,"Russian");
   fstream f("C:\\LAB_3_MP_11_Minisheva.txt",ios::out);
   cout<<"Минишева Наиля, группа МП-11(2), лабораторная работа №3,вариант 12 :";
  //полное ветвление
  double func1
{
  double x,a;
  a=sin(x)+7;
  if (x<4)
  {
   {
    if (a!=0)
    double y=cos(x)+14/a;
    }
  else
  {
   if (x<=4 && x<12)
   double y = sqrt(x+ln(abs(x-8)+10));
   else
   {
    double b=x-13;
    if (x<=12 && x<38)
     {
      if (b!=0)
      double y=sqrt(b);
      }
   else
   {
   if (x>=38)
   double y=5*x;
   }
   return y;
  }
 
//краткое ветвление;
   double func2
{
   double x;
   if (x<4)
   double y=cos(x)+14/a;
   if (x<=4 && x<12)
   double y = sqrt(x+ln(abs(x-8)+10));
   if (x<=12 && x<38)
   double y=sqrt(b);
   return y;
}
   
// с использованием условной операции
   double func3
{
   double y,x;
   (x < 4) ? (y3 = cos(x)+14/sin(x)+7) : ((4 <= x) && (x < 12)) ?
                  (y3 = sqrt(x+ln(abs(x-8)+10)) : ((12 <= x) && (x < 38)) ?
                      (y3 = sqrt(x-13)) :(x>=38) ? (y = 5*x);
    return y;
}
// запрос аргумент функции и номер задания
   cout<< "номер интересующего вас задания (от 1 до 4)?: ";
  cin>> с;
  if (с<1 && с>4)
  cout<<"не верные даные";
  else
{
  switch (с)
  {
     double x;
     case 1:  cout<< "№1" ;  double y=cos(x)+14/sin(x)+7; break;
     case 2:  cout<< "№2" ;  double sqrt(x+ln(abs(x-8)+10); break;
     case 3:  cout<< "№3" ;    double y=sqrt(x-13); break;
     case 4:  cout<< "№4" ;  double y=5*x; break;
     
     default: cout<< "ошибка" ; int d=0;
  }
   f.close();
  }
system("pause");
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2013, 12:47     Вычисление значений неэлементарной функции y = f(x).
Посмотрите здесь:

C++ вычисление значений функции
C++ Вычисление значений функции
C++ Цикл: Вычисление значений заданной функции
Вычисление значений периодической функции C++
C++ Вычисление значений функции
Вычислить m значений функции f(x) на отрезке [a, b]. Вычисление величины f(x) оформить в виде функции C++
C++ Вычисление значений функции
C++ Вычисление таблицы значений заданной функции для N значений X в заданном интервале

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 17:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru