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

Много ли здесь бреда? - C++

Восстановить пароль Регистрация
 
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
07.06.2011, 09:17     Много ли здесь бреда? #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
typedef double (*df)(double *x, unsigned N);
double Diff (df f, double *x, unsigned N, unsigned i, double dx)
{
 doubel r,l,t;
 t=x[i];
 x[i]=t+dx/2;
 r=f(x, N);
 x[i]=t-dx/2;
 l=f(x, N);
 x[i]=t;
 return (r-l)/dx;
}
double calculate(df functions, double *x, unsigned int N, double epsilon, double dx)
{
 double b, d, s;
 bool f;
 df function;
 do
 {
  for (s=0.0, f=true, function=functions+N-1; function>=functions; --function)
  {
   b=function(x, N);
   d=Diff(function, x, N, function-functions, dx);
   if (d>epsilon)
   {
    f=true;
    x[function-functions]-=b/d;
   }
   s+=b*b;
  }
  s=sqrt(s);
 } while ((s>epsilon)&(f));
 return s;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2011, 09:17     Много ли здесь бреда?
Посмотрите здесь:

C++ Что здесь не так
C++ где здесь ошибка?
C++ какие здесь идентификаторы?
Что здесь не так? C++
C++ Что здесь не правильно?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
07.06.2011, 09:24     Много ли здесь бреда? #2
taras atavin, Вы названия переменных и функций внятно именовать пробовали? Попробуйте, помогает. И еще - переменные должны объявлятся и по возможности сразу инициализироваться как можно ближе к месту первого использования.
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
07.06.2011, 09:43     Много ли здесь бреда? #3
Своеобразный стиль...
Добавлено через 18 минут
1. Я б добавил комменты, что делают функции.
2. Для большей читабельности я б написал так:
C++
1
2
typedef double (*df)(double x[], unsigned N);
double Diff (df f, double x[], unsigned N, unsigned i, double dx)
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
08.06.2011, 07:05  [ТС]     Много ли здесь бреда? #4
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
И еще - переменные должны объявлятся и по возможности сразу инициализироваться как можно ближе к месту первого использования.
b не требует инициирования, s и function логичнее иницировать в заголовке цикла, но я предпочитаю не ни в заголовках циклов, ни в фигурных скобках свичей и альтернатив ни каких переменных, чтоб гарантировать их видимость во всей функции. И если переменные перемешаны с операциями, то лично мне это затрудняет чтение.

Добавлено через 35 секунд
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Вы названия переменных и функций внятно именовать пробовали? Попробуйте, помогает.
Вопрос читали?

Добавлено через 1 минуту
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
C++
1
2
typedef double (*df)(double x[], unsigned N);
double Diff (df f, double x[], unsigned N, unsigned i, double dx)
Компил всё равно прочитает
C++
1
2
typedef double (*df)(double *x, unsigned N);
double Diff (df f, double *x, unsigned N, unsigned i, double dx)
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
08.06.2011, 07:32     Много ли здесь бреда? #5
C++
1
typedef double (*df)(double *x, unsigned N);
большими буквами именуются константы
имена типов должны отличаться от имён переменных
свои имена типов должны отличаться от встроенных и библиотечных имён типов

C++
1
doubel r,l,t;
писать нужно в каком-нибудь приемлемом текстовом редакторе, который подсвечивает типы
gedit

C++
1
2
 doubel r,l,t;
 t=x[i];
отступы надо делать так, чтобы их было хорошо видно и они не занимали много места
стиль K&R - 4 пробела
объявления нужно отделять от операторов, если есть такая возможность

C++
1
x[i]=t+dx/2;
разделённаязаписьлегчевоспринимаетсяпричтении
C++
1
x[i] = t + dx / 2;
разделённая запись легче воспринимается при чтении
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
08.06.2011, 07:39     Много ли здесь бреда? #6
И еще один момент: f = true ВСЕГДА. Зачем эта переменная нужна?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2011, 16:54     Много ли здесь бреда?
Еще ссылки по теме:

C++ Где здесь ошибка
Что здесь не так? C++
В чём здесь ошибка? C++

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

Или воспользуйтесь поиском по форуму:
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
08.06.2011, 16:54     Много ли здесь бреда? #7
Цитата Сообщение от taras atavin Посмотреть сообщение
я предпочитаю не ни в заголовках циклов, ни в фигурных скобках свичей и альтернатив ни каких переменных, чтоб гарантировать их видимость во всей функции
Если Вам некая переменная нужна в конкретном блоке, ее нужно именно там объявить и инициализировать, тогда человеку который будет читать код будет понятно, что места использования нужно искать только внутри данного блока. Вы пишете код не для себя или машины, Вы пишете код для людей, которые будут его читать.
Цитата Сообщение от taras atavin Посмотреть сообщение
Вопрос читали?
И?
Цитата Сообщение от taras atavin Посмотреть сообщение
Компил всё равно прочитает
Вам дали рекомендацию относительно удобочитаемости, а не ошибки компиляции.
Yandex
Объявления
08.06.2011, 16:54     Много ли здесь бреда?
Ответ Создать тему
Опции темы

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