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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Yulya92
Сообщений: n/a
#1

Неправильно считает, очень прошу помочь - C++

12.11.2009, 18:20. Просмотров 553. Ответов 3
Метки нет (Все метки)

1:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <math.h>
float epswhile(float x,float eps, float& posl,int& z)
{ float s=0,sl=0,d; int i=1;
  posl=0; 
  while(fabs(sl)<=eps)
    {
      d=i+1;
      sl=(pow(-1,d)*log(i*x))/i*(i*i+1);
      s=s+sl;
      posl=sl;
      i++;
    }
  z=i-1;
  return s;
}
2:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <math.h>
float epsdo(float x,float eps, float& posl,int& z)
{ float s=0,sl=0,d; int i=1;
  posl=0; d=i+1;
  do
    {
      s=s+sl;
      posl=sl;
      sl=(pow(-1,d)*log(i*x))/i*(i*i+1);
      i++;
    }
  while(fabs(sl)<=eps);
  z=i-1;
  return s;
}
3:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <math.h>
float epsfor(float x,float eps, float& posl,int& z)
{ float s=0,sl=0,d; int i;
  posl=0; d=i+1;
  for(i=1;fabs(sl)<=eps;i++)
    {
      s=s+sl;
      posl=sl;
      sl=(pow(-1,d)*log(i*x))/i*(i*i+1);
    }
  z=i-1;
  return s;
}
4:
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
#include <iostream>
#include <conio.h>
float epswhile(float x,float eps, float& posl,int& z);
float epsdo(float x,float eps, float& posl,int& z);
float epsfor(float x,float eps, float& posl,int& z);
using namespace std;
 
void main (void)
{ float x, eps,posl,s,sl;int z,Cycle;
  char Ans;
  setlocale (LC_ALL, "rus");
  do
  {
    cout <<"Введите действительные числа х и Е такие, что 0<E<=1 \n";
    cin>>x>>eps;
 
   if (eps>0 && eps<=1)
        {cout<<"Решить задачу с помощью \n 1-while \n 2-for \n 3-do...while";
             cin>>Cycle;
             switch (Cycle) 
             {
              case 1: sl=epswhile(x, eps,posl,z);break;
              case 2: sl=epsdo(x, eps,posl,z);break;
              case 3: sl=epsfor(x, eps,posl,z);break;
              default: cout<<"\n введите число от 1 до 3 \n";
             }
            cout<<"сумма S="<<s<<"\n последнее слогаемое вошедшее в сумму равно "<<posl<<"\n его номер "<<z;
        }
       else cout<<"Е не принадлежит заданному промежутку";
    
       cout<<"\n Повторить?\t Y/N";
    cin>>Ans;
  } 
  while (Ans=='Y');
}
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2009, 18:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Неправильно считает, очень прошу помочь (C++):

Очень прошу помочь... - C++
Очень прошу!!! Помогите пожалуйста срочно решить задачи!!!!Ну очень надо.... 1 задача. Дан массив. Скопировать все его элементы в...

Прошу объяснить о ссылках,указателях,стрелке -> и двоеточиях :: очень прошу я не понял синтаксис - C++
Здравствуйте! Есть конкретно 4 типа: 1)стрелка (-&gt;) 2)указатели (*) 3)ссылки (&amp;) 4)2е двоеточий (::) а вопрос:что они собой...

Прошу помочь - C++
Нужно привести програмку в порядок, с первой частью вроде справился, со второй не могу, ошибка С2784. Первая часть: было: ...

прошу помочь с программой на с++ - C++
Для матрицы A, с размерами N×M написать функции умножения матрицы на скаляр и вычисления суммы элементов матрицы. Вычислить и напечатать...

прошу помочь найти ошибку - C++
задача должна заключатЬся в следующем: вводится предположим число 5, программа обрабатывает и выдает на строке 5 звездочек. #include...

Прошу помочь распределить время на изучение C++ - C++
так как являюсь тем кто любит поиграть игры, и имею больошое желаение учить с++ но немагу розкинуть вермя учёбы...вот я прошу Вас помочь...

3
Iworb
анимешник++
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 413
12.11.2009, 18:58 #2
в первом ты не присвоил начальное значение d

Добавлено через 24 секунды
а не, все норм.

Добавлено через 1 минуту
нужна проверка на х>0

Добавлено через 1 минуту
C
1
  if((x<0)||(eps<0)) return s;
попробуй добавить это

Добавлено через 6 минут
а вот и ошибка:
C
1
2
3
case 1: sl=epswhile(x, eps,posl,z);break;
              case 2: sl=epsdo(x, eps,posl,z);break;
              case 3: sl=epsfor(x, eps,posl,z);break;
заменить на
C
1
2
3
case 1: s=epswhile(x, eps,posl,z);break;
              case 2: s=epsdo(x, eps,posl,z);break;
              case 3: s=epsfor(x, eps,posl,z);break;
ведь ты возвращаешь значение s

Добавлено через 3 минуты
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <math.h>
float epswhile(float x,float eps, float& posl,int& z)
{ float s=0,sl=0,d; int i=1;
  posl=0; 
  while(fabs(sl)<=eps)
        {
          d=i+1;
          sl=(pow(-1,d)*log(i*x))/i*(i*i+1);
          s=s+sl;
          posl=sl;
          i++;
        }
  z=i-1;
  return s;
}
я конечно не уверен, но чтобы найти posl нужно заменить строчку или на &posl=&sl или на *posl=*sl(точно не помню на что), чтобы после возврата функцией значения s значение posl сохранялось

Добавлено через 55 секунд
и вообще - нафига его передавать функции?????

Добавлено через 20 секунд
ведь именно функция его и ищет

Добавлено через 2 минуты
вообщем во все 3 функции добавь проверку икса на положительность (чтобы логарифм не ругался)

Добавлено через 2 минуты
1. Если не ошибаюсь, то так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <math.h>
float epswhile(float x,float eps, int& z)//а зачем вообще у тебя z?? объясни код программы(в данном случае, что делает именно эта переменная)
{ float s=0,sl=0,d; int i=1;
  posl=0; 
  while(fabs(sl)<=eps)
        {
          d=i+1;
          sl=(pow(-1,d)*log(i*x))/i*(i*i+1);
          s=s+sl;
          *posl=sl;
          i++;
        }
  z=i-1;
  return s;
}
Добавлено через 5 минут
ладно, мне пора, если что тебе помогут - тут есть такие люди, но вообщем пару ошибок нашел =^_~=
1
Yulya92
Сообщений: n/a
12.11.2009, 21:50 #3
спасибо за помощ Iworb..

Вот задание:
http://img687.imageshack.us/img687/4759/17699271.jpg

Добавлено через 1 час 55 минут
не работает, ночь сидела, даже не знаю, что еще может быть

Добавлено через 22 секунды
помогите пожалуйста
Том Ардер
Модератор
Эксперт по математике/физике
3769 / 2382 / 302
Регистрация: 15.06.2009
Сообщений: 4,278
13.11.2009, 00:28 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Основная ошибка - чрезмерное усложнение.

Вот вычислительная часть:

C++
1
2
3
4
5
6
7
8
9
10
11
12
float sum = 0,
    sign = 1;
float term;  // текущее слагаемое ряда
int i = 1;
 
do
{
    term = log(i*x)/(i*(i*i+1));
    sum += sign*term;
    sign = -sign;     // зачем же юзать pow(-1,d)?
    i++;
} while (fabs(term) > eps);
Добавлено через 4 минуты
Цитата Сообщение от Yulya92 Посмотреть сообщение
log(i*x))/i*(i*i+1)
Знаменатели везде у тя неправильные!
1
13.11.2009, 00:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2009, 00:28
Привет! Вот еще темы с ответами:

Прошу помочь в написании програмы ( оплачу) - C++
Я сам не очень розбераюсь в C++ но мне в институт надо написать прогу естественно я оплачу за роботу. Програма на самомо деле легкая. ...

Неправильно считает - C++
#include&lt;iostream&gt; #include&lt;clocale&gt; #include&lt;cmath&gt; #include&lt;cstdlib&gt; #include&lt;cstring&gt; using namespace std; double...

Неправильно считает - C++
имеется простой код #include &lt;math.h&gt; #include &lt;stdio.h&gt; #include &lt;dos.h&gt; #include &lt;stdlib.h&gt; int main(void) ...

Неправильно считает - C++
#include&lt;iostream&gt; #include&lt;conio.h&gt; #include&lt;math.h&gt; void main(void) { using namespace std; setlocale(LC_ALL, &quot;Russian&quot;);...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru