Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
#1

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

07.06.2011, 09:17. Просмотров 357. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2011, 09:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Много ли здесь бреда? (C++):

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

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

Где здесь ошибка? - C++
Делаю все по видео уроку. У него работает все нормально у меня жалуется #include <allegro.h> #define MAXFILAS 20 // X #define...

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

В чём здесь ошибка? - C++
Вот код программы// // Conversion - Прогграмма для преобразования // температтуры по Цельсию в температуру по Фаренгейту: // ...

Какие здесь ошибки - 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 <<...

6
CyBOSSeR
Эксперт С++
2304 / 1674 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
07.06.2011, 09:24 #2
taras atavin, Вы названия переменных и функций внятно именовать пробовали? Попробуйте, помогает. И еще - переменные должны объявлятся и по возможности сразу инициализироваться как можно ближе к месту первого использования.
0
ValeryLaptev
Эксперт С++
1042 / 821 / 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)
0
taras atavin
3570 / 1753 / 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)
0
accept
4825 / 3246 / 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;
разделённая запись легче воспринимается при чтении
0
ValeryLaptev
Эксперт С++
1042 / 821 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
08.06.2011, 07:39 #6
И еще один момент: f = true ВСЕГДА. Зачем эта переменная нужна?
0
CyBOSSeR
Эксперт С++
2304 / 1674 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
08.06.2011, 16:54 #7
Цитата Сообщение от taras atavin Посмотреть сообщение
я предпочитаю не ни в заголовках циклов, ни в фигурных скобках свичей и альтернатив ни каких переменных, чтоб гарантировать их видимость во всей функции
Если Вам некая переменная нужна в конкретном блоке, ее нужно именно там объявить и инициализировать, тогда человеку который будет читать код будет понятно, что места использования нужно искать только внутри данного блока. Вы пишете код не для себя или машины, Вы пишете код для людей, которые будут его читать.
Цитата Сообщение от taras atavin Посмотреть сообщение
Вопрос читали?
И?
Цитата Сообщение от taras atavin Посмотреть сообщение
Компил всё равно прочитает
Вам дали рекомендацию относительно удобочитаемости, а не ошибки компиляции.
0
08.06.2011, 16:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2011, 16:54
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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