Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
ИльГас
0 / 0 / 0
Регистрация: 28.09.2013
Сообщений: 42
1

почему код не работает?

28.09.2013, 22:14. Просмотров 671. Ответов 13
Метки нет (Все метки)

помогите пожалуйста, почему у меня код не работает?
Ввожу "х", потом погрешность, а arth всегда =0.
приложил Документ WORD, там описание лабораторной и таблица примеров внизу. у меня 1й вариант, то есть первый пример в списке.
вот сам код:
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
#include "StdAfx.h"
#include <conio.h>
#include <math.h>
#include <stdio.h>
#include <locale.h>
 
int main()
{
  int n;
  float x,y,arth,E,a;
  setlocale(LC_ALL,"");
  printf("\nВведите x: ");
  scanf("%f",&x);
  if (fabs(x)>1) {
    printf("\nОшибка ввода x, |x|<1!");
    return 1;
  }
  printf("\nВведите E: ");
  scanf("%f",&E);
  //arth=x;
  a=x;
  //y=0;
  for(n=1;fabs(a)>E;n++)
  {
     //arth+=y;
     //printf("\n %d: arth = %7.3lf",n,arth);
     //arth=x;
     y=a*x*x*(2*n-1)/(2*n+1);
     a=y;
     arth=a+y;
   }
  printf("\n arth = %7.3f",arth);
  getch();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2013, 22:14
Ответы с готовыми решениями:

Почему не работает код на других компьютерах (на моем работает)?
вот задание: построить ф-ю: на вход поступают 2 строки, на выходе 1 строка, по следующим правилам:...

Почему не работает код?
можете подсказать почему мой код не работает? задача, из файла читаются футбольные команды и...

Почему код не работает?
#include &lt;ctime&gt; #include &quot;std_lib_facilities.h&quot; int main() { vector &lt;int&gt; aaa;...

Почему не работает код?
Может кто найдёт ошибку: #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;time.h&gt; #include...

Почему код не работает?
#include &lt;iostream&gt; using namespace std; unsigned long double* remove(unsigned long double*...

13
kventin_zhuk
БНТУ ФИТР
215 / 155 / 41
Регистрация: 26.12.2012
Сообщений: 382
28.09.2013, 23:02 2
C++
1
setlocale(LC_ALL,"");
Вот эта вот нехитрая конструкция дичайшим образом ломает вам корректный ввод символов, кстати говоря. Пишите транслитом лучше) Как следствие - оттуда и все проблемы.
1
ИльГас
0 / 0 / 0
Регистрация: 28.09.2013
Сообщений: 42
29.09.2013, 00:15  [ТС] 3
у меня после ввода x и погрешности результат всегда одинаковый. arth = 0.
почему?????
0
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
29.09.2013, 00:29 4
Цитата Сообщение от kventin_zhuk Посмотреть сообщение
C++
1
setlocale(LC_ALL,"");
Вот эта вот нехитрая конструкция дичайшим образом ломает вам корректный ввод символов, кстати говоря. Пишите транслитом лучше) Как следствие - оттуда и все проблемы.
А где здесь символы вводятся?
1
ИльГас
0 / 0 / 0
Регистрация: 28.09.2013
Сообщений: 42
29.09.2013, 00:30  [ТС] 5
ну я ввожу Икс.
0
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
29.09.2013, 01:34 6
Цитата Сообщение от ИльГас Посмотреть сообщение
ну я ввожу Икс.
Здесь что ли?
C++
1
scanf("%f",&x);
Тут ввод числа float, а не символа.
1
kventin_zhuk
БНТУ ФИТР
215 / 155 / 41
Регистрация: 26.12.2012
Сообщений: 382
29.09.2013, 15:54 7
alsav22, вы вводим символы с клавиатуры, а уж потом они преобразуются в флоат..... Попробуйте ввести 0.1 0.1 допустим, ввод зависает.
2
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
29.09.2013, 18:41 8
Цитата Сообщение от kventin_zhuk Посмотреть сообщение
Попробуйте ввести 0.1 0.1 допустим, ввод зависает.
Ввод правильный делайте и не зависнет:
Введите x: 0,1
Введите E: 0,1
2
kventin_zhuk
БНТУ ФИТР
215 / 155 / 41
Регистрация: 26.12.2012
Сообщений: 382
30.09.2013, 01:20 9
alsav22, Пробовал - и так и так виснет. А вот если убрать - мой вариант работает, поставить "Russian" вторым параметром - ваш.
0
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
30.09.2013, 01:32 10
Цитата Сообщение от kventin_zhuk Посмотреть сообщение
Пробовал - и так и так виснет.
Если бы у меня вис, то я бы не писал. Может от компилятора зависит. Я в студии пробую.

Добавлено через 2 минуты
Забыл спросить: вы заметили, что у меня, в десятичном числе, запятая вместо точки стоит?
0
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
30.09.2013, 01:39 11
Если закоментировать то, что не относится к вводу(для чистоты эксперимента), и сделать видимую остановку перед выходом, то, в студии всё работает:
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
//#include "StdAfx.h"
#include <conio.h>
#include <math.h>
#include <stdio.h>
#include <locale.h>
 
int main()
{
  int n;
  float x,y,arth,E,a;
  setlocale(LC_ALL,"");
  printf("\nВведите x: ");
  scanf("%f",&x);
  /*if (fabs(x)>1) {
    printf("\nОшибка ввода x, |x|<1!");
    return 1;
  }*/
  printf("\nВведите E: ");
  scanf("%f",&E);
  ////arth=x;
  //a=x;
  ////y=0;
  //for(n=1;fabs(a)>E;n++)
  //{
  //   //arth+=y;
  //   //printf("\n %d: arth = %7.3lf",n,arth);
  //   //arth=x;
  //   y=a*x*x*(2*n-1)/(2*n+1);
  //   a=y;
  //   arth=a+y;
  // }
  //printf("\n arth = %7.3f",arth);
  
  printf("exit");
  getch();
}
0
Миниатюры
почему код не работает?  
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
30.09.2013, 01:44 12
Вот так это выглядит в Code Blocks (mingw), там, правда, setlocale для русского ввода не работает, но ввод цифр от этого не сбивается (при использовании запятой). А если добавить:
C++
1
2
3
#include <windows.h>
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
, то и символы будут нормально выводиться.
0
Миниатюры
почему код не работает?  
kventin_zhuk
БНТУ ФИТР
215 / 155 / 41
Регистрация: 26.12.2012
Сообщений: 382
30.09.2013, 08:15 13
alsav22, да. Разные варианты пробовал. У меня тоже студия, но довольно старая. Пусть будет так
0
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
30.09.2013, 17:59 14
Вообще-то, программист должен знать: как и что в установленной локали (в том числе и по умолчанию). Иначе неизбежны ошибки. Если в этом коде оставить локаль по умолчанию, и использовать, при вводе десятичных чисел, запятую, то тоже будет ошибка ввода. Для пользователей, в таких случаях, делается подсказка: в каком формате что вводить.
0
30.09.2013, 17:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.09.2013, 17:59

Почему не работает код?
можете подсказать почему мой код не работает правильно ??? задача вот в чем Вход программы...

Почему не работает код?
подскажите пожалуйста почему мой код не работает. от меня требуется отсортировать целые числа и...

Почему работает данный код?
В разделе &quot;Комбинаторика&quot; ( http://www.cyberforum.ru/combinatorics/thread572992.html ) задали...


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

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

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