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

Прокомментируйте пожалуйста - C++

Восстановить пароль Регистрация
 
campina
0 / 0 / 0
Регистрация: 03.06.2012
Сообщений: 4
03.06.2012, 15:25     Прокомментируйте пожалуйста #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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include "iostream"
#include <conio.h>
#include <math.h>
#include <stdio.h>
 
void Yacoby(int** m, int* s, int it);
 
int main(){
printf("Kirzaev. Yacobi.\n");
int i=0;
int j=0;
int e;
int** m = new int*[3];
m[0]=new int[3];
m[1]=new int[3];
m[2]=new int[3];
int s[3];
for(i=0; i<3; i++)
for(j=0; j<3; j++)
{
if(j==0)printf("\n");
printf("a[%i, %i] = ", i, j);
scanf("%d",&e);
m[i][j]=e;
}
for(int i = 0; i<3; i++)
{
printf("\nf%i = ",i);
scanf("%d",&e);
s[i]=e;
}
Yacoby(m,s,20);
getch();
return 0;
}
 
 
void Yacoby(int** m, int* s, int it){
float x[3];
x[0]=s[0];
x[1]=s[1];
x[2]=s[2];
for(int i=0; i<it; i++){
x[0]=(s[0]-m[0][1]*x[1]-m[0][2]*x[2])/m[0][0];
x[1]=(s[1]-m[1][0]*x[0]-m[1][2]*x[2])/m[1][1];
x[2]=(s[2]-m[1][0]*x[0]-m[2][1]*x[1])/m[2][2];
}
    printf("\nx0 = %f.\nx1 = %f\nx2 = %f.",x[0],x[1],x[2]);
}
что выполняет каждая строка программы прокомментируйте.буду очень признателен.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cactus09
Чайник
 Аватар для cactus09
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
03.06.2012, 17:06     Прокомментируйте пожалуйста #2
ВЕСЬ КОД КОМЕНТИРОВАТЬ!!!??? Да ты хоть чо нибудь понимаещ в этом коде - если нет иди книжки читать, а если и понимаещ то поконкретнее что тебе непонятно
Ilyawow
24 / 24 / 5
Регистрация: 18.11.2011
Сообщений: 266
03.06.2012, 17:09     Прокомментируйте пожалуйста #3
ДА и разделом ошибся тесюда надо -> C для начинающих
campina
0 / 0 / 0
Регистрация: 03.06.2012
Сообщений: 4
03.06.2012, 18:40  [ТС]     Прокомментируйте пожалуйста #4
для метода Якоби эта прога подходит? прост я хотел комментариями удостовериться,некоторые фрагменты слишком замудреные для моего понимания
cactus09
Чайник
 Аватар для cactus09
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
03.06.2012, 19:03     Прокомментируйте пожалуйста #5
campina, Какие маменты именно
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4925 / 2668 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
03.06.2012, 19:05     Прокомментируйте пожалуйста #6
Цитата Сообщение от campina Посмотреть сообщение
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include "iostream" // а-та-та <iostream>
#include <conio.h>
#include <math.h>
#include <stdio.h>
 
void Yacoby(int** m, int* s, int it); // прототип функции
 
int main(){
printf("Kirzaev. Yacobi.\n");
int i=0;
int j=0;
int e;
int** m = new int*[3]; // выделяем память под массив указателей на число типа int
m[0]=new int[3]; // выделяем память. у нас получается динамический двумерный массив 3*3
m[1]=new int[3];
m[2]=new int[3];
int s[3];
for(i=0; i<3; i++)
for(j=0; j<3; j++)
{
if(j==0)printf("\n"); // если новая строка - делаем перевод на новую
printf("a[%i, %i] = ", i, j); // просим заполнить элемент с индексами i,j
scanf("%d",&e); // считываем значение в переменную e
m[i][j]=e; // элемент массива с индексами i, j равен е. По-хорошему, эту и предыдущую строчку нужно заменить на: scanf("%d", &m[i][j]);
}
for(int i = 0; i<3; i++)
{
printf("\nf%i = ",i); // просим заполнить элемент с индексом i
scanf("%d",&e); // считываем значение в переменную е
s[i]=e; // тут надо заменить по аналогии с элементами двумерного массива на scanf("%d", &s[i]);
}
Yacoby(m,s,20); // вызываем функцию
getch(); // пауза
// тут надо бы освободить память
return 0;
}
 
 
void Yacoby(int** m, int* s, int it){ // функция якоби принимает двумерный массив, массив и число
float x[3]; // вводим локальную переменную - массив x 
x[0]=s[0]; // и делаем его идентичным s
x[1]=s[1];
x[2]=s[2];
for(int i=0; i<it; i++){ // в цикле от 0 до it
x[0]=(s[0]-m[0][1]*x[1]-m[0][2]*x[2])/m[0][0]; // производим какие-то операции
x[1]=(s[1]-m[1][0]*x[0]-m[1][2]*x[2])/m[1][1];
x[2]=(s[2]-m[1][0]*x[0]-m[2][1]*x[1])/m[2][2];
}
    printf("\nx0 = %f.\nx1 = %f\nx2 = %f.",x[0],x[1],x[2]); // выводим результаты на экран. 
}
что выполняет каждая строка программы прокомментируйте.буду очень признателен.
Кстати, надо либо выделять память в стиле С, либо переписывать ввод-вывод на С++. А гибриды смотрятся некрасиво.
Yandex
Объявления
03.06.2012, 19:05     Прокомментируйте пожалуйста
Ответ Создать тему
Опции темы

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