Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
0 / 0 / 0
Регистрация: 04.05.2015
Сообщений: 24

Как задать условие для функции

22.01.2017, 21:18. Показов 5094. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер! Например есть
C++
1
double Psi(double x)
Нужно чтобы функция возвращала https://www.cyberforum.ru/cgi-bin/latex.cgi?x при https://www.cyberforum.ru/cgi-bin/latex.cgi?0\leq x \leq 1\ , https://www.cyberforum.ru/cgi-bin/latex.cgi?2-x при https://www.cyberforum.ru/cgi-bin/latex.cgi?1\leq x \leq 2\ и 0 в любом другом случае (т.е. https://www.cyberforum.ru/cgi-bin/latex.cgi?x < 0 и https://www.cyberforum.ru/cgi-bin/latex.cgi?x>2). Заранее спасибо)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.01.2017, 21:18
Ответы с готовыми решениями:

Как задать условие для переменной?
Доброго дня уважаемые форумчане. Подскажите пожалуйста возможно ли задать условие наподобие If ssil Is Nothing Or ssil Is Empty Then Дело в...

Как задать условие для кнопки?
&quot;Если поле в edittext пустое = button не активен(нельзя нажать)&quot;

Как задать условие выбора для EventTrigger?
Есть Image со стилем, который розмещен на `MyControl : UserControl`, в `MyControl` есть свойство `IsSelected`. &lt;Image.Style&gt; ...

8
 Аватар для FreeYourMind
147 / 147 / 104
Регистрация: 13.11.2016
Сообщений: 557
22.01.2017, 21:41
Цитата Сообщение от Undertaker Посмотреть сообщение
1
C++
1
double Psi(double x)
то есть это все что есть?
0
0 / 0 / 0
Регистрация: 04.05.2015
Сообщений: 24
22.01.2017, 21:50  [ТС]
нет не всё
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
 
int Nt = 51; //Количество расчетных узлов (время)
int Nx = 25; //Количество расчетных узлов (координата)
double A = 5; //Коэффициент в уравнении
double ht = 0.25; //Шаг по времени
double hx = 0.25; //Шаг по координате
double X0 = -2; //Границы по координате
double XN = 4;
double X; //Положение точки
const int MaxNt = 200;
const int MaxNx = 200;
double U[MaxNt][MaxNx]; //Массив для хранения данных
double UPhi[MaxNt][MaxNx]; //Массив для хранения данных
double UPsi[MaxNt][MaxNx]; //Массив для хранения данных
 
double Phi(double x) //Положение точки
{
    return (2*x)/(1+pow(x,2)); //Начальное положение будет задано такой функцией
}
 
double Psi(double x) //Импульс точки
{
    if (x<0)  return 0;
    if (x>2)  return 0;
    if ((x<=0) && (x<=1))  return (x);
    if ((x<=1) && (x<=2))   return (2-x);
    //return cos(0.1*x);//Например, начальный импульс будет задан такой функцией
}
 
double Zero(double x) //Нулевая функция
{
    return 0.0;
}
 
void Print(char * FileName, char * Header, double U[MaxNt][MaxNx])
{
  FILE * F = fopen(FileName,"w");
  fprintf(F,"%10s \n%10s",Header,"T\t");
  //Вывести X
  for (int nx=0; nx<Nx; nx++) fprintf(F,"%10.3lf\t",X0+nx*hx);
  fprintf(F,"\n");
  //Вывести решение
  for (int nt=0; nt<Nt; nt++)
   {
    fprintf(F,"%10.3lf\t",nt*ht); //Время
    for (int nx=0; nx<Nx; nx++)
     fprintf(F,"%10.3lf\t",U[nt][nx]);
    fprintf(F,"\n");
   }
  fclose(F);
}
 
void Print() //Вывод результата на консоль и в файлы
{
    Print("resultPhi.txt","Phi",UPhi); //
    Print("resultPsi.txt","Psi",UPsi);
    Print("result.txt","Полное",U); //Полное
}
 
double Int(double x0,double xn,double F(double),int N)
//Интеграл методом прямоугольников
//x0 - начало интервала
//xn - конец интервала
//F - интегрируемая функция
//N - количество точек
{
    double h = (xn-x0)/(N-1); //Шаг
    double Sum = 0;
    for (int n=0; n<N; n++)
        Sum+=F(x0+h*n);
    return Sum / N;
}
 
double Integral(double x0,double xn,double F(double))
//Любым численным методом найти интеграл заданной функции
//Метод прямоугольников
{
    const double epsilon = 0.0001;//Точность
    int N = 20; //Начальное количество
    double I0 = Int(x0,xn,F,N);
    double I1;
    do {
        N*=2; //Увеличить количество шагов вдвое
        I1 = I0;
        I0 = Int(x0,xn,F,N); //Вычислить интеграл
    } while (fabs(I0-I1)>epsilon); //Если он очень похож на предыдущее значение
    return I0; //То это и есть искомое значение
}
 
double Solve(double Phi(double),double Psi(double),double A, double t,double x)
//Решение уравнения колебания струны
{
    //Решение:
    //U(x,t) = 0.5(Phi(x-at)+Phi(x+at)) + 1/(2*A)Integral(x-at,x+at,Psi);
    return 0.5*(Phi(x-A*t)+Phi(x+A*t)) + 0.5/A * Integral(x-A*t,x+A*t,Psi);
}
 
int main()
{
    system("chcp 1251>nul"); //Переключиться на кирилицу. Не забыть выбрать консольный шрифт!
 
    printf("Введите параметр A :");scanf("%lf",&A);
 //   printf("Сколько точек (по времени)вычислить? :"); scanf("%d",&Nt);
 //   printf("Сколько точек (по координате) вычислить? :"); scanf("%d",&Nx);
    if (Nt>MaxNt) {
        Nt = MaxNt;
        printf("Слишком много шагов по времени. Не больше %d\n",Nt);
    };
    if (Nx>MaxNx) {
        Nx = MaxNx;
        printf("Слишком много по координате. Не больше %d\n",Nx);
    };
 
    //printf("Шаг по времени? :"); scanf("%lf",&ht);
    //printf("Шаг по координате? :"); scanf("%lf",&hx);
    //printf("Координата точки x :");scanf("%lf",&X);
    //Вычисления
     //Для каждого момента времени от 0 с шагом 0.25 вычислить положение точки (полное решение)
     //а также частичные рещения
    printf("\n");
    for (int nx = 0; nx < Nx; nx++) //Для всех координат
    for (int nt = 0; nt < Nt; nt++) //Для всех времен
    {
        printf("\r%d",nt);
        double t = nt * ht; //Время
        X = X0 + nx * hx;
        U[nt][nx] = Solve(&Phi,&Psi,A,t,X); //Общее
        UPhi[nt][nx] = Solve(&Zero,&Psi,A,t,X); //Частное
        UPsi[nt][nx] = Solve(&Phi,&Zero,A,t,X); //Другое частное
    }
    printf("\r");
 
    //Вывод результата
    Print();
 
    system("pause");
}
с 24 по 31
0
 Аватар для FreeYourMind
147 / 147 / 104
Регистрация: 13.11.2016
Сообщений: 557
22.01.2017, 21:53
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
#include <iostream>
#include <cstdlib>
using std::cin;
using std::cout;
using std::endl;
double myfunc (double x)
{
    double result;
    if (0<=x && x<=1)
    {
        cout << x << endl;
        return 0;
    }
    else if (1<x && x<=2)
    {
        cout << 2-x << endl;
        return 0;
    }
    else
        cout << 0 << endl;
        return 0;
}
int main()
{  
    double x;
    cout << "input X" << endl;
    cin >> x;
    myfunc(x);
    return 0;
}
так?
0
0 / 0 / 0
Регистрация: 04.05.2015
Сообщений: 24
22.01.2017, 21:58  [ТС]
можно так записать?
C++
1
2
3
4
5
6
7
double Psi(double x)
{
if( x< 0 ) return 0;
else if( x> 2 ) return 0;
else if( x<= 1 ) return x;
else return 2-x
}
0
 Аватар для FreeYourMind
147 / 147 / 104
Регистрация: 13.11.2016
Сообщений: 557
22.01.2017, 22:03
у вас тогда условие кажется путается..
C++
1
2
3
4
5
6
7
8
double Psi(double x)
{
if (0<=x && x<=1)
        return x;
    else if (1<x && x<=2)
        return (2-x);
    else return 0;
}
1
0 / 0 / 0
Регистрация: 04.05.2015
Сообщений: 24
22.01.2017, 22:04  [ТС]
угу, именно так
0
 Аватар для FreeYourMind
147 / 147 / 104
Регистрация: 13.11.2016
Сообщений: 557
22.01.2017, 22:08
хотя при желании можно придраться и к заданию )) у вас там возвращать х при 0<=x<=1 и так же возврат 2-х при 1<=x<=2.. возникает вопрос - что выводить если х будет равен 1?
0
0 / 0 / 0
Регистрация: 04.05.2015
Сообщений: 24
22.01.2017, 22:25  [ТС]
нужно const прописать перед char?(в 38 строчке)
|59|warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]|
|60|warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]|

Добавлено через 4 минуты
Такое условие. По-хорошему должно быть где-то равенство

Добавлено через 8 минут
Хотя нет, все так и должно быть. Это же Коши. Вспомните ряды Фурье)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.01.2017, 22:25
Помогаю со студенческими работами здесь

Класс для вычисления факториала до 20! Как задать условие
Всем доброй ночи. Наступаю на те же грабли:: -Метод есть, условие присобачить не могу. Как ввести: например вычислить факториал 7. ...

Как задать начальное условие для переменной-массива в NMinimize?
Уважаемые участники форума! Решаю многомерную задачу оптимизации и хочу передать в NMinimize в качестве переменной массив, но у меня...

Как задать условие для подсчета суммы элементов массива с парным индексом
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main() { int a,b,c; printf(&quot;vvedit a:&quot;); scanf(&quot;%d&quot;,&amp;a); ...

Задать условие для if
Здравствуйте. Подскажите как задать if такого типа. Если t&gt;=45 то вывести опасно, если t&lt;45 то безопасность. Заранее спасибо. ...

Задать условие для массива
Помогите задать условие для смены диагоналей


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru