0 / 0 / 0
Регистрация: 08.02.2011
Сообщений: 19
1

Написать программу для вычисления функции F

21.01.2012, 20:34. Показов 4928. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
помогите решить данные 2 задачи
1.Использовать оператор while
Написать программу для вычисления функции F, при этом, если не указано количество шагов (бесконечность), то вычисления проводить с точностью 10-4 (точность считается достигнутой, если очередное слагаемое или сомножитель по модулю меньше точность).

(картинка)

2. Дана строка, в которой содержится осмысленное текстовое сообщение. Слова сообщения разделяются пробелами и знаками препинания.
Найти самое длинное слово сообщения.
Изображения
 
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.01.2012, 20:34
Ответы с готовыми решениями:

Написать программу для вычисления функции
Написать программу вычисления значений функций F(x) для указанного диапазона значений аргумента с...

Написать программу для вычисления функции F
Помогите!! (использовать оператор while) Написать программу для вычисления функции F, при этом,...

Написать программу для вычисления функции
9,2cos2x - |sinx /l,l|

Написать программу для вычисления функции F
Помогите найти ошибку, по итогу выводит 0, понимаю что не может быть такого. (использовать...

15
155 / 155 / 44
Регистрация: 03.11.2010
Сообщений: 393
22.01.2012, 00:55 2
Очень интересное первое задание.
Вот мои мысли.
1) Не указано количество шагов ( указана бесконечность ) - значит считаем с точностью 10^-4, а это 0.0001.
2) Но тут мы видим, что очередной сомножитель считается по формуле, в которой к результату деления всегда прибавляется единица.
3) Вывод - таким образом очередной сомножитель по модулю будет всегда больше точности 10^-4, кроме случая, когда результат деления будет отрицательным и разность этого результата с единицей будет по модулю меньше точности 10^-4.
4) И чтобы достичь этого случая x должен быть равен близко к 3 / 2 pi и k должен быть равен единице.
А это единственный случай в цикле - первая его итерация, когда k равно единице, при условии, что x будет иметь значение близкое к 3/2 pi.

Вот код программы. Если при запуске ввести x равное 4.71225 или очень близкое к этому значение, то выполнится всего одна итерация цикла. Если ввести значение отличающиеся от 4.71225 буквально на 0.15 - 0.2, то произойдет зацикливание.
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
#include <iostream>
#include <cmath>
using namespace std;
 
#define EPS 1E-4
 
unsigned int factorial( unsigned int n ) {
    if ( n <= 1 )
        return 1;
    return ( n * factorial( n - 1 ) );
}
 
double calc_func( double x ){
    double curr = 1.0, func = 1.0;
    unsigned int k = 1;
 
    while ( fabs(curr) >= EPS ) {
        curr =  1 + sin( k * x ) / factorial( k );
        func *= curr;
        ++k;
    }
    return func;
}
 
int main() {
    double x;
 
    cout << "Введите x" << endl;
    cin >> x;
    cout << "Значение функции равно " << calc_func( x ) << endl;
 
    return 0;
}
1
0 / 0 / 0
Регистрация: 08.02.2011
Сообщений: 19
22.01.2012, 01:56  [ТС] 3
а как насчет 2 задачки...
Дана строка, в которой содержится осмысленное текстовое сообщение. Слова сообщения разделяются пробелами и знаками препинания.
Найти самое длинное слово сообщения.
________________________________________________________________________________
Насчет 1 задачки....

Вот похожая ток я не пойму что и как....
Все тоже самое ток пример чуть другой...


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <locale.h>
#include <math.h>
using namespace std;
void main ()
{int i=2;
long double x=2.0,f=1.0;
while(x>0.001)
{
x=(double)(i+1)/(double)(i*i+2);
f=f+x;i++;
}
cout<<"F="<<f;
_getch();
}
 Комментарий модератора 
Используйте теги форматирования кода!
Изображения
 
0
8 / 8 / 3
Регистрация: 06.06.2010
Сообщений: 25
22.01.2012, 02:51 4
2 задачка
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
#include <iostream>
#include <conio.h>
#include <string>
#include <vector>
 
using namespace std;
 
    char str[] = "A string\tof ,,tokens\nand some  more tokens";
    char seps[]   = " ,\t\n";
    char *token;
 
int main()
{
    vector<string> list;
 
    //char str[100];
    //cout << "Input text: ";
    //cin.getline( str, 100 );
 
   token = strtok( str, seps ); 
   while( token != NULL )
   {
        list.push_back(token);
      token = strtok( NULL, seps ); 
   }
 
    int sizeOfToken = list[0].size();
 
    for ( int i = 1; i < list.size(); i++ )
    {
        if ( sizeOfToken < list[i].size() )
            sizeOfToken = list[i].size();
    }
 
    cout << sizeOfToken;
    _getch();
    return 0;
}
Добавлено через 12 минут
Цитата Сообщение от keksik-91 Посмотреть сообщение
а как насчет 2 задачки...
Дана строка, в которой содержится осмысленное текстовое сообщение. Слова сообщения разделяются пробелами и знаками препинания.
Найти самое длинное слово сообщения.
________________________________________________________________________________
Насчет 1 задачки....

Вот похожая ток я не пойму что и как....
Все тоже самое ток пример чуть другой...


#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <locale.h>
#include <math.h>
using namespace std;
void main ()
{int i=2;
long double x=2.0,f=1.0;
while(x>0.001)
{
x=(double)(i+1)/(double)(i*i+2);
f=f+x;i++;
}
cout<<"F="<<f;
_getch();
}
а что не понятного? все тоже самое, только формула проще, если там выражение зависит от введенного нами x, то здесь тупо произведение считается.
1
0 / 0 / 0
Регистрация: 08.02.2011
Сообщений: 19
22.01.2012, 04:02  [ТС] 5
спасибо большое Вам!
0
8 / 8 / 3
Регистрация: 06.06.2010
Сообщений: 25
22.01.2012, 11:36 6
да, второй пример, который вы привели считается не верно, у вас в формуле стоит произведение, а программа считает сумму.
1
0 / 0 / 0
Регистрация: 08.02.2011
Сообщений: 19
22.01.2012, 15:22  [ТС] 7
=)
и всё же... как решить такое чудо... ?
Дана строка, в которой содержится осмысленное текстовое сообщение. Слова сообщения разделяются пробелами и знаками препинания.
Найти самое длинное слово сообщения.
0
8 / 8 / 3
Регистрация: 06.06.2010
Сообщений: 25
22.01.2012, 15:33 8
я же ответил вам, см выше. свою строку сюда
C++
1
char str[] = "A string\tof ,,tokens\nand some  more tokens";
,либо с клавиатуры
C++
1
2
3
4
        
   //char str[100];
   //cout << "Input text: ";
   //cin.getline( str, 100 );
в общем строку в переменную str.

C++
1
char seps[]   = " ,\t\n!.;:";
- сюда символы добавляй. например точку, восклицательный знак, вопросительный можно.
1
0 / 0 / 0
Регистрация: 08.02.2011
Сообщений: 19
22.01.2012, 16:22  [ТС] 9
спасиб, я чуть перепутал просто...
проблема с 1 задачей, весь код кинул в с++, запустил просит ввести х и чтобы я не вводил выдает ошибку(Необработанное исключение в "0x004114e9" в "1.exe": 0xC00000FD: Stack overflow.), в чем может быть проблема?
0
8 / 8 / 3
Регистрация: 06.06.2010
Сообщений: 25
22.01.2012, 16:47 10
переполнение стека.
внимательней прочитайте, ответ roofa, он все расписал, x = 4.71225 или близко.
при различных x программа зацикливается.
1
0 / 0 / 0
Регистрация: 08.02.2011
Сообщений: 19
22.01.2012, 17:04  [ТС] 11
даже когда ввожу x = 4.71225, выдает туже ошибку=(
0
155 / 155 / 44
Регистрация: 03.11.2010
Сообщений: 393
22.01.2012, 17:15 12
2 keksik-91
Во-первых условие задачи вызывает сомнения и скорее всего неверно, так как вряд ли Вам по учебе специально дали бы задачу с зацикливанием, скорее всего просто ошибочно условие. Ну это я так думаю.
Во-вторых - какой у Вас компилятор?
1
0 / 0 / 0
Регистрация: 08.02.2011
Сообщений: 19
22.01.2012, 17:35  [ТС] 13
ну если я правильно Вас понял то, Microsoft Visual Studio 2010 С++ .
0
155 / 155 / 44
Регистрация: 03.11.2010
Сообщений: 393
22.01.2012, 19:38 14
с Microsoft Visual Studio никогда не работал. Мой пример отлично работает на gcc, mingw.
Думаю, что Вы вводите что-то не то или переписали неверно мой пример.
Скриншот с ошибкой выложите, возможно это поможет понять, что у Вас за ошибка.
1
0 / 0 / 0
Регистрация: 08.02.2011
Сообщений: 19
22.01.2012, 20:44  [ТС] 15
спасиб, все заработало... ошибка в самой программе была (переустановил)

можно еще один вопрос?
есть такая задача.
Вводится последовательность из N целых чисел. Найти среднее арифметическое его цифр (функцией оформить определения среднего арифметического цифр числа).

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
#include <iostream>
#include <vector>
#include <algorithm>
 
double arithmetic_mean(long num) 
{
   int total = 0;
   int cnt = 0;
   do
   {
      total += num % 10;
      ++cnt;
   }
   while ( num /= 10 );
   return total / static_cast<double> (cnt);
}     
 
int main()
{
   std::vector<int> v = {52, 23, 33};
   double total = 0.0;
   std::for_each(v.begin(), v.end(), [&] ( int val ) { total += arithmetic_mean(val); });  
   std::cout << total / v.size() << std::endl;
   return 0;
}
Выдает ошибки:
error C2552: v: инициализация не агрегированных данных с помощью списка инициализации не допускается

IntelliSense: инициализация объектов типа "std::vector<int, std::allocator<int>>" с помощью выражения {...} не допускается

Сказали... вектор заполнять придется, с помощью push_back.

тип.
C++
1
2
int a[3] = {52, 23, 33};
   std::vector<int> v;for(int i=0;i<3;v.push_back(a[i++]));
окончательный код получается такой ?

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
#include <iostream>
#include <vector>
#include <algorithm>
 
double arithmetic_mean(long num) 
{
   int total = 0;
   int cnt = 0;
   do
   {
      total += num % 10;
      ++cnt;
   }
   while ( num /= 10 );
   return total / static_cast<double> (cnt);
}     
int main()
{
   int a[3] = {52, 23, 33};
   double total = 0.0;
   std::vector<int> v;for(int i=0;i<3;v.push_back(a[i++])); 
   std::cout << total / v.size() << std::endl;
   return 0;
}
0
Roof
22.01.2012, 21:12     Написать программу для вычисления функции F
  #16

Не по теме:

В одной теме не нужно плодить кучу вопросов - создавайте новую тему для новых вопросов.

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.01.2012, 21:12

Написать программу для вычисления значения функции
Составить программу вычисления значения функции Нарушение правил форума п. 5.4 Запрещено...

Написать программу для вычисления значения функции
Добрый день. Прошу помочь, написать программу для вычисления значения функции. ...

Написать функцию и программу для ее проверки для вычисления функции sin(x) C++
Написать функцию и программу для ее проверки для вычисления функции sin(x).

написать программу для вычисления значений функции F(x) для х, изменяющегося в интервале от A до B с шагом DEL.
С использованием оператора цикла с предусловием написать программу для вычисления значений функции...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

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