Форум: Форум C++Разное
Новые темы: 00
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вычислить значение функции в цикле по заранее заданной формуле
 
 автор: Cena   (11.11.2011 в 00:12)   письмо автору
 
 

Вычислить значение z, соответствующие каждому значению x (xn<=x<=xk, шаг изменения x равен dx) по формуле z=pow((tan*(a-x))/(4.35+sin*(a+x))),1/3). Определить разницу между max и min значениями z по модулям.На экран выводить каждую четвертую пару x и z. Контрольный расчет провести при a=2.94, xn=1.5, xk=5.5, dx=0.2.ВВОД И ВЫВОД ИСПОЛЬЗОВАТЬ CIN И COUT, пожалуйста помогите.

  Ответить  
 
 автор: Cena   (11.11.2011 в 00:19)   письмо автору
 
   для: Cena   (11.11.2011 в 00:12)
 

я пытался создать код, но у меня ничего не получилось)));
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
  double xn,xk,dx,x,z,max,min,sin,tan,a;
  int k=0;
  cout<<"xn,xk,dx=";
  cin>>xn>>xk>>dx;
  cout<<"a="<<a<<"\t sin="<<sin<<"\t tan="<<tan<<"\n";
  for (x=xn; xn<=x<=xk; x+=dx)
  {
    k%4==2;
    cout<<"x=";
    cin>>x;
    cout<<"z=";
    cin>>z;
    z=pow(fabs(tan*(alf-x))/(4.35+sin*(alf+x))),1./3);
    k++;
    if (k==1)
    {
      max=z;
      min=z;
    }
    {else
     if (|z|>min) max==|z|
    if (|z|<max) min==|z|
  }
  x=x+dx;
  cout<<"max="<<max<<"\t min="<<min<<"\t z="<<z<<"\n";
  cout<<"R="<<max-min<<"\n";
  cout<<"z="<<z<<"\n";
  return z;
}

  Ответить  
 
 автор: cheops   (11.11.2011 в 09:44)   письмо автору
 
   для: Cena   (11.11.2011 в 00:12)
 

Не очень понятно, почему после тангенса и синуса идет знак умножения? Он лишний или это у функций аргумент пропущен? Заготовка для программы может выглядеть следующим образом
#include <stdio.h>
#include <iostream>
#include <math.h>
using namespace std;

int main()
{
  // Объявление переменных
  double x, xn, xk, dx, a, z;
  // Ввод параметров
  cout << "Введите xn = ";
  cin >> xn;
  cout << "Введите xk = ";
  cin >> xk;
  cout << "Введите dx = ";
  cin >> dx;
  cout << "Введите a = ";
  cin >> a;
  // Вычисление значений функции
  for(x = xn; x <= xk; x += dx)
  {
    z = pow(tan(a - x)/(4.35 + sin(a + x)), double(1/3));
    cout << "x = " << x << " z = " << z << endl;
  }
  // Остановка перед закрытием окна
  system("PAUSE");
  // Передает операционной системе состояние 0 - все в порядке,
  // штатное завершение
  return 0;
}

  Ответить  
 
 автор: Cena   (12.11.2011 в 13:51)   письмо автору
 
   для: cheops   (11.11.2011 в 09:44)
 

Спасибо большое, а как вывести отсюда каждую четвертую пару x и z?

  Ответить  
 
 автор: cheops   (12.11.2011 в 14:47)   письмо автору
 
   для: Cena   (12.11.2011 в 13:51)
 

Можно поступить следующим образом
#include <stdio.h>
#include <iostream>
#include <math.h>
using namespace std;

int main()
{
  // Объявление переменных
  double x, xn, xk, dx, a, z;
  int count = 0;
  // Ввод параметров
  cout << "Введите xn = ";
  cin >> xn;
  cout << "Введите xk = ";
  cin >> xk;
  cout << "Введите dx = ";
  cin >> dx;
  cout << "Введите a = ";
  cin >> a;
  // Вычисление значений функции
  for(x = xn, count = 0; x <= xk; x += dx, count++)
  {
     if(count > 4) count = 0;
     if(count == 0)
     {
       z = pow(tan(a - x)/(4.35 + sin(a + x)), double(1/3));
       cout << "x = " << x << " z = " << z << endl;
     }
  }
   // Остановка перед закрытием окна
  system("PAUSE");
  // Передает операционной системе состояние 0 - все в порядке,
  // штатное завершение
  return 0;
}

  Ответить  
 
 автор: Cena   (12.11.2011 в 17:36)   письмо автору
 
   для: cheops   (12.11.2011 в 14:47)
 

Подскажите пожалуйста, где у меня могут быть ошибки, когда я считал min и max значение среди модуля z и разницы max и min?
#include <iostream>
#include <math.h>
using namespace std;

int main()
{
double x,xn,xk,dx,a,z,max,min,;
int i=0;
cout << "xn = ";
cin >> xn;
cout << "xk = ";
cin >> xk;
cout << "dx = ";
cin >> dx;
cout << "a = ";
cin >> a;
for(x = xn, i = 0; x <= xk; x += dx, i++)
{if(i > 4) i = 0;
if(i == 0)
{
z = pow(tan(a - x)/(4.35 + sin(a + x)), double(1/3));
cout << "x = " << x << " z = " << z << endl;
}
{max=|z|;
min=|z|;
if (|z|>max) max=|z|;
if (|z|<max) min=|z|;
}
cout<<"max="<<max<<"\t min="<<min<<"\n";
cout<<"R="<<max-min<<"\n";
system("PAUSE");
return 0;
}

  Ответить  
 
 автор: cheops   (12.11.2011 в 18:38)   письмо автору
 
   для: Cena   (12.11.2011 в 17:36)
 

Модуль в C++ не обеспечивается при помощи вертикальных линий - это совсем другой оператор, ответственный за битовое ИЛИ. Для модуля числа имеется специальная функция abs(x).

  Ответить  
 
 автор: Cena   (12.11.2011 в 19:54)   письмо автору
 
   для: cheops   (12.11.2011 в 18:38)
 

Понятно спасибо, но все равно выбивает ошибку(( где-то здесь
{max=abc(z);
min=abc(z);
if (abc(z)>max) max=abc(z);
if (abc(z)<max) min=abc(z);
}
cout<<"max="<<max<<"\t min="<<min<<"\n";
cout<<"R="<<max-min<<"\n";
system("PAUSE");
return 0;
}
и вібивает ошибки:
C:\Dev-Cpp\dev4.cpp In function `int main()':
24 C:\Dev-Cpp\dev4.cpp `abc' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)
33 C:\Dev-Cpp\dev4.cpp expected `}' at end of input
Я не понимаю, где же я их допустил...(

  Ответить  
 
 автор: cheops   (12.11.2011 в 22:28)   письмо автору
 
   для: Cena   (12.11.2011 в 19:54)
 

1. Вместо abc() следует писать abs().
2. Кроме того, после if (abc(z)<max) min=abc(z); стоит лишняя закрывающая фигурная скобка.

  Ответить  
 
 автор: Cena   (16.11.2011 в 21:58)   письмо автору
 
   для: cheops   (12.11.2011 в 22:28)
 

Здраствуйте, подскажите пожалуйста, в преведенной выше программе, у меня должен осуществиться вывод каждой пары x и z, у меня выводит x, но z почемуто остается неизменным, тоесть
x=1.5; z=1;
x=2.5; z=1;
x=3.5; z=1;
x=4.5; z=1;
может быть, в цикле нужно указать не i++, а 4+=i?

  Ответить  
 
 автор: cheops   (16.11.2011 в 22:12)   письмо автору
 
   для: Cena   (16.11.2011 в 21:58)
 

1. А какое значение z должно принимать (да у меня тоже везде единицы - это неправильно)?
2. x += 4 ничего не даст, так как по условию задачи вы сами задаете шаг и он равен 0.2, поэтому циклы нужно пропускать внутри for. Да и не даст это ничего на значение z это не виляет, это влияет на x.

  Ответить  
 
 автор: Cena   (16.11.2011 в 22:17)   письмо автору
 
   для: cheops   (16.11.2011 в 22:12)
 

#include <iostream>
#include <math.h>
#include <cmath>
using namespace std;
int main()
{
double x,xn,xk,dx,a,z,max,min,k;

// Ввод параметров
cout << "xn = ";
cin >> xn;
cout << "xk = ";
cin >> xk;
cout << "dx = ";
cin >> dx;
cout << "a = ";
cin >> a;

for(x = xn; x <= xk; x += dx)
{if(k%4==2)
z = pow(tan(a - x)/(4.35 + sin(a + x)), double(1/3));
cout << "x = " << x << "\t z = " << z << endl;
}max=fabs(z);
min=fabs(z);
if (fabs(z)>max) max=fabs(z);
if (fabs(z)<max) min=fabs(z);
cout<<"max="<<max<<"\t min="<<min<<"\n";
cout<<"R="<<max-min<<"\n";
system("PAUSE");
return 0;
}
а как-то так можно сделать? но у меня выдает ошибку(20 C:\Dev-Cpp\Безымянный14568.cpp invalid operands of types `double' and `int' to binary `operator%' )

  Ответить  
 
 автор: cheops   (16.11.2011 в 22:49)   письмо автору
 
   для: Cena   (16.11.2011 в 22:17)
 

У вас переменная k имеет тип double, а операцию взятия остатка % можно использовать только совместно с переменными типа int.

  Ответить  
 
 автор: Cena   (16.11.2011 в 22:57)   письмо автору
 
   для: cheops   (16.11.2011 в 22:49)
 

Спасибо Вам!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования