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

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

Войти
Регистрация
Восстановить пароль
 
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
#1

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

07.06.2011, 09:17. Просмотров 347. Ответов 6
Метки нет (Все метки)

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++
Вот код программы// // Conversion - Прогграмма для преобразования // температтуры по Цельсию в температуру по Фаренгейту: // ...

Что здесь не правильно? - C++
#include <iosteam.h> int main(){ float x = 1; cout << "sizeof (float) :" << sizeof (float); cout << "\nsizeof x :" <<...

Какие здесь идентификаторы? - C++
# include "c:\borlandc\include\iostream.h" # include "c:\borlandc\include\math.h" # include "c:\borlandc\include\conio.h" void...

где здесь ошибка? - C++
решил сделать программку каторая считает каличество счасливых белетеков в сериии то есть от 000000 до 999999 при этом считается что белет...

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

В чём здесь ошибка? - C++
В чём здесь ошибка? #include "stdafx.h" #include <iostream> #include <string.h> using namespace std; int main(){ ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
07.06.2011, 09:24     Много ли здесь бреда? #2
taras atavin, Вы названия переменных и функций внятно именовать пробовали? Попробуйте, помогает. И еще - переменные должны объявлятся и по возможности сразу инициализироваться как можно ближе к месту первого использования.
ValeryLaptev
Эксперт С++
1039 / 818 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
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
Ушёл с форума.
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
4821 / 3241 / 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
Эксперт С++
1039 / 818 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
08.06.2011, 07:39     Много ли здесь бреда? #6
И еще один момент: f = true ВСЕГДА. Зачем эта переменная нужна?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2011, 16:54     Много ли здесь бреда?
Еще ссылки по теме:

Где здесь ошибка - C++
под "а" #include <iostream> #include <math.h> #include <time.h> using namespace std; int main() { setlocale(0, "rus"); ...

В чем здесь ошибка? - C++
Взял пример из книги 3d game programming with DirectX11, немного переделал, т.к. #include <xnamath.h> больше не существует: #include...

В чём здесь ошибка? - C++
#include <vcl.h> #include <conio.h> #include <iostream> #include <math.h> using namespace std; int main(int argc, char* argv) ...

Какие здесь ошибки - C++
1) int main() { Node *p1, *p2; p1 = new Node; p2 = new Node; p1->Data = 11; p2->Data = 22; p1->Next = p2; p2->Next = NULL; cout <<...


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

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

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