Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Yulya92
1

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

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

Author24 — интернет-сервис помощи студентам
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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.11.2009, 18:20
Ответы с готовыми решениями:

Очень прошу помочь...
Очень прошу!!! Помогите пожалуйста срочно решить задачи!!!!Ну очень надо.... 1 задача. Дан...

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

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

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

3
анимешник++
95 / 62 / 7
Регистрация: 03.11.2009
Сообщений: 427
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
12.11.2009, 21:50 3
спасибо за помощ Iworb..

Вот задание:


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

Добавлено через 22 секунды
помогите пожалуйста
Эксперт по математике/физике
4217 / 3412 / 396
Регистрация: 15.06.2009
Сообщений: 5,818
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.11.2009, 00:28
Помогаю со студенческими работами здесь

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

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

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

С++ неправильно считает
Здраствуйте Вот часть программы: main(){ float a,b,c,d,hx,hy,x,y,f; int n; clrscr();...


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

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