Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2015, 16:22   #1
Ilai
Пользователь
 
Регистрация: 10.09.2014
Сообщений: 90
Восклицание Программа на C++

Добрый день!

Помогите пожалуйста написать программу:

Написать программу используя цикл for для вычисления и вывода на
экран в точках xi =a+i*h, i=0,1,2…,n, h=(b-a)/n промежутка [a,b] значений функции y=f(x), указанной на фото. Также программа должна определять наибольшее и среднее значение функции. Предусмотреть проверку вычисляемых значений аргумента на принадлежность области допустимых значений. Ввод исходных данных
(a, b, n) осуществлять с клавиатуры.
Изображения
Тип файла: jpg 7.jpg (1.75 Мб, 148 просмотров)
Ilai вне форума Ответить с цитированием
Старый 06.01.2015, 18:50   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

операторы cout<< и cin>> уже проходили? тогда показывай свою наработку, а мы уж поможем её сделать рабочей.
или ты даже это не видел?
Код:
#include<conio.h>
#include<stdio.h>
void main()
{
printf("Hello world!\n");
getch();
}
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 12.01.2015, 16:48   #3
Ilai
Пользователь
 
Регистрация: 10.09.2014
Сообщений: 90
По умолчанию

Цитата:
Сообщение от NetSpace Посмотреть сообщение
операторы cout<< и cin>> уже проходили? тогда показывай свою наработку, а мы уж поможем её сделать рабочей.
или ты даже это не видел?
Код:
#include<conio.h>
#include<stdio.h>
void main()
{
printf("Hello world!\n");
getch();
}
Вот моя программа. Правда не совсем работает. a=1, b=2, n=10. А h в результате равен нулю. Как исправить? И как сделать в программе вот эти условия: "Также программа должна определять наибольшее и
среднее значение функции. Предусмотреть проверку
вычисляемых значений аргумента на принадлежность области
допустимых значений"

Код:
#include <stdio.h> 
#include <iostream>
#include <math.h> 
using namespace std;
int main()
{
	int x, y, a, b, n, h;
	cin >> a;
	cin >> b;
	cin >> n;
	h = (b-a)/n;

	for (x = 1; x <= 2; x = x + h);
	{
		y = sqrt((1/x)*(x^2-1))*pow(cos(abs(x)/3),2)+log(1/(x+1));

		printf("y= ", y);
	}
	system("pause");
}
Ilai вне форума Ответить с цитированием
Старый 12.01.2015, 17:11   #4
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

из переменных INT убрать h и написать ниже double h; может, у тебя в итоге получается h=0,005, но вредный INT округляет его до 0.
а числа с плавающей точкой честно выведет тебе 0,005.
и переменные x и y тоже сделай double;
и цикл переправь вот на этот:
Код:
for(i=0;i<=n;i++)
 {
  x=x+(i*h);
  y = sqrt((1/x)*(x^2-1))*pow(cos(abs(x)/3),2)+log(1/(x+1));
 // printf("y= ", y);
  printf("%10.5f\n",y);//на всё про всё 10 знаков, и 5 знаков после запятой, нецелое число же может быть
 }
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.

Последний раз редактировалось NetSpace; 12.01.2015 в 17:21.
NetSpace вне форума Ответить с цитированием
Старый 12.01.2015, 17:19   #5
Ilai
Пользователь
 
Регистрация: 10.09.2014
Сообщений: 90
По умолчанию

Цитата:
Сообщение от NetSpace Посмотреть сообщение
из переменных INT убрать h и написать ниже double h; может, у тебя в итоге получается h=0,005, но вредный INT округляет его до 0.
а числа с плавающей точкой честно выведет тебе 0,005.
и переменные x и y тоже сделай double;
К сожалению не получилось(
Изображения
Тип файла: jpg 456.jpg (115.1 Кб, 150 просмотров)
Ilai вне форума Ответить с цитированием
Старый 12.01.2015, 17:32   #6
Ilai
Пользователь
 
Регистрация: 10.09.2014
Сообщений: 90
По умолчанию

Сейчас попробовал все переменные сделать типом double, и сработало. h=0,1. Но далее когда заходит в цикл, x сразу становится равным двум. И как выполнить вот эти условия, подскажите, будьте добры: "Также программа должна определять наибольшее и
среднее значение функции. Предусмотреть проверку
вычисляемых значений аргумента на принадлежность области
допустимых значений"
Ilai вне форума Ответить с цитированием
Старый 12.01.2015, 19:08   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Надо полагать нужно что-то типа такого:
Код:
#include <iostream>
#include <cmath>
using namespace std;

double f(double x){
    return sqrt(1/x*(x*x-1))*pow(cos(fabs(x)/3),2)+log(1/(x-1));
}

int main()
{
    double y,max,sr=0,a=1,b=2,n=10,h=(b-a)/n,x;
    int i;
    for(i=0;a<b;a+=h,i++){
        x=a+i*h;
        y=f(x); sr+=y;
        max=(max<y || i=0)?y:max
        cout<<x<<'\t'<<y<<endl;
    }
    cout<<sr/n<<endl<<max;
    cin.get();
    return 0;
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.01.2015, 19:34   #8
Ilai
Пользователь
 
Регистрация: 10.09.2014
Сообщений: 90
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Надо полагать нужно что-то типа такого:
Код:
#include <iostream>
#include <cmath>
using namespace std;

double f(double x){
    return sqrt(1/x*(x*x-1))*pow(cos(fabs(x)/3),2)+log(1/(x-1));
}

int main()
{
    double y,max,sr=0,a=1,b=2,n=10,h=(b-a)/n,x;
    int i;
    for(i=0;a<b;a+=h,i++){
        x=a+i*h;
        y=f(x); sr+=y;
        max=(max<y || i=0)?y:max
        cout<<x<<'\t'<<y<<endl;
    }
    cout<<sr/n<<endl<<max;
    cin.get();
    return 0;
}
Не могу посмотреть, выдает ошибку
Код:
#include <iostream>
#include <cmath>
using namespace std;

double f(double x){
	return sqrt(1 / x*(x*x - 1))*pow(cos(fabs(x) / 3), 2) + log(1 / (x - 1));
}

int main()
{
	double y, max, sr = 0, a = 1, b = 2, n = 10, h = (b - a) / n, x;
	int i;
	for (i = 0; a<b; a += h, i++){
		x = a + i*h;
		y = f(x); sr += y;
		max = (max < y || i = 0) ? y : max;
			cout << x << '\t' << y << endl;
	}
	cout << sr / n << endl << max;
	cin.get();
	return 0;
}
Подчеркивает слово, выделенное красным и пишет ошибку: левый операнд должен быть левостороним значением

Помогите пожалуйста написать программу. Я не знаю что делать. Завтра уже нужно сдавать, а у меня ничего не готово
Изображения
Тип файла: jpg 67.jpg (36.1 Кб, 153 просмотров)

Последний раз редактировалось Stilet; 12.01.2015 в 21:29.
Ilai вне форума Ответить с цитированием
Старый 12.01.2015, 21:38   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Имя переменной по другому назови. Которая подчеркнута.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужна программа QControl программа для внутрилабораторного контроля качества Версия 5.5. миньен Софт 7 02.03.2014 00:28
Программа на Pascal в Lazarus и программа для одномерного массива целых чисел Yegorka Lazarus, Free Pascal, CodeTyphon 13 20.12.2012 18:02
Программа с применением записей и программа с применение множеств smert99 Помощь студентам 0 16.06.2011 23:14
Программа открыается если есть другая программа. bookkc Паскаль, Turbo Pascal, PascalABC.NET 12 14.10.2009 20:09