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

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

Восстановить пароль Регистрация
 
ИльГас
0 / 0 / 0
Регистрация: 28.09.2013
Сообщений: 34
28.09.2013, 22:14     почему код не работает? #1
помогите пожалуйста, почему у меня код не работает?
Ввожу "х", потом погрешность, а 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();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2013, 22:14     почему код не работает?
Посмотрите здесь:

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

Добавлено через 2 минуты
Забыл спросить: вы заметили, что у меня, в десятичном числе, запятая вместо точки стоит?
alsav22
5282 / 4801 / 442
Регистрация: 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();
}
Миниатюры
почему код не работает?  
alsav22
5282 / 4801 / 442
Регистрация: 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);
, то и символы будут нормально выводиться.
Миниатюры
почему код не работает?  
kventin_zhuk
БНТУ ФИТР
 Аватар для kventin_zhuk
214 / 154 / 15
Регистрация: 26.12.2012
Сообщений: 382
30.09.2013, 08:15     почему код не работает? #13
alsav22, да. Разные варианты пробовал. У меня тоже студия, но довольно старая. Пусть будет так
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.09.2013, 17:59     почему код не работает?
Еще ссылки по теме:

Почему не работает этот код? C++
Как и почему работает код? C++
Почему не работает код? C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.09.2013, 17:59     почему код не работает? #14
Вообще-то, программист должен знать: как и что в установленной локали (в том числе и по умолчанию). Иначе неизбежны ошибки. Если в этом коде оставить локаль по умолчанию, и использовать, при вводе десятичных чисел, запятую, то тоже будет ошибка ввода. Для пользователей, в таких случаях, делается подсказка: в каком формате что вводить.
Yandex
Объявления
30.09.2013, 17:59     почему код не работает?
Ответ Создать тему
Опции темы

Текущее время: 23:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru