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

Соединить код и заставить работать программу - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программа с лексемами через указатели http://www.cyberforum.ru/cpp-beginners/thread660420.html
Вопросы в комментариях к коду. Не понятка в 2-х местах кода #include <iostream> #include <cstring> using namespace std; int main() { char str; char token; char *p, *q;
C++ Изменить программу Даны натуральные числа n, a(1), a(2),...,a(n). Определить сумму членов последовательности a(i), которые при делении на 7 дают остаток 1, 2, или 5 Есть исходник, как из него сделать задачу, как в задании?Спасибо! int main() { setlocale(LC_ALL,""); int n,a1,a2; // начальное присвоение yesVozr=1 int yesVozr=1; // признак стр.возр.посл. http://www.cyberforum.ru/cpp-beginners/thread660412.html
Определить, сколько точек с целочисленными координатами попадают в круг заданного радиуса с центром в начале координат C++
Вводится радиус круга R. Определить, сколько точек с целочисленными координатами попадают в круг заданного радиуса с центром в начале координат.
Блок-схема C++
Вот есть задание, нужно составить блок-схему Составить схему алгоритма решения следующей задачи. Вводится N (N>5) пар чисел, представляющих собой декартовые координаты точек на плоскости. Необходимо отобрать из них такое подмножество точек, соединение которых замкнутой ломаной линией образует выпуклый многоугольник, охватывающий все остальные точки. Необходимо предусмотреть обработку ошибок...
C++ Не выходит из цикла while http://www.cyberforum.ru/cpp-beginners/thread660396.html
почему при нажатии (-1) не выходит из цикла? #include "stdafx.h" #include <iostream> #include <locale> #include <iomanip> using namespace std
C++ error C2064: результатом вычисления фрагмента не является функция Здравствуйте. Недавно начала программировать и столкнулась с такой проблемой, помогите, пожалуйста: error C2064: результатом вычисления фрагмента не является функция, принимающая 1 аргументов ругается на это выражение: y=cos(((x-a)(x-a))/(x-2*a))-3.5/sqrt(x*b); все переменные в нем типа double среда Microsoft Visual Studio (pow не использую, т.к. тоже ругается, хотя библиотека math.h... подробнее

Показать сообщение отдельно
SlashX6
15 / 15 / 1
Регистрация: 16.03.2012
Сообщений: 427
29.09.2012, 21:08     Соединить код и заставить работать программу
Добрый вечер!
Изучаю C++ пару дней и столкнулся с проблемой, что никак не могу заставить работать программу. На бумаге решить получилось, а на С++ нет.
На форуме нашёл код для решения СЛАУ методом Гаусса. И не могу заставить работать. Программа в которой пытаюсь сделать это всё - Microsoft Visual C++ 2008 Express Edition.
Вот этот пример который надо решить с 4-мя знаками после запятой и добавит проверку:

0,40x1 + 0,11x2 + 0,18x3 = 0,47
0,28x1 - 0,59x2 + 0,02x3 = 0,01
0,02x1 + 0,24x2 + 0,10x3 = 0,22

Вот код который нашёл. Автор ( McRowan )
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <math.h>
#include <cstdlib>
#include <cstdlib>
using namespace std;
 
bool CProg()
 {
cout << "\n" << "Продолжим? (1-да) "<<"\t";
char c;
 cin >> c;
return c=='1';
}
 
 int main ()
 {
setlocale (0,"");
do
 {
int i(0), j(0);
 cout << "Введите число неизвестных" << endl;
cin >> n;
int MassivA[20][20], MassivC[20], MassivItog[20][20];
double x[20];
cout << "Введите коэффициенты" << endl;
for ( i = 0; i < n; ++i)
{
for (j = 0; j < n; ++j)
 cin >> MassivA [i][j];
 cout << endl;
 }
cout << "Введите солбец свободных членов" << endl;
for ( i = 0; i < n; ++i)
 {
cin >> MassivC [i];
 cout << endl;
 } 
//заполняем окончательный массив 
for ( i = 0; i < n; ++i)
 {
for ( j = 0; j < n; ++j)
 MassivItog[i][j] = MassivA [i][j];
for ( j = n; j < n+1; ++j)
 MassivItog[i][j] = MassivC [i];
 }
cout <<"Полная система" << endl;
for ( i = 0; i < n; ++i)
{
for (j = 0; j < n +1; ++j)
{
 cout.setf(ios::left);
 cout.width (7);
 cout << MassivItog [i][j] << '\t';
 }
 cout << endl;
 }
cout << "------------------------------------------------" << endl;
// сортировка на диагональных местах не должно быть "0", нужно соединить с прямым ходом
for (i = 0; i < n - 1 ; ++i)
for (j = 0; j < n+1 ; ++j)
if (MassivItog[i][j] == 0)
if (MassivItog[i+1][j] != 0)
 {
int t = MassivItog[i][j];
 MassivItog[i][j] = MassivItog[i+1][j];
 MassivItog[i+1][j] = t;
 }
//прямой ход
for (i = 0; i < n ; ++i) 
{
int a = MassivItog[i][i];
for (j = i + 1; j < n; ++j)
 {
int b = MassivItog[j][i];
for ( int k = 0; k < n+1; ++k)
MassivItog[j][k] = a * MassivItog[j][k] - b * MassivItog[i][k];
 }
 }
cout << "-------------------------------" << endl;
for ( j = 0; j < n; ++j)
{
for (int k = 0; k < n + 1 ; ++k)
{
 cout.setf(ios::left);
 cout.width (7);
 cout << MassivItog [j][k] << '\t';
 }
 cout << endl;
 }
 
 //вывод матрицы треугольного вида
 cout <<"Матрица приведенная к треугольному виду:"<< endl;
for (j = 0; j < Sys.n; j++)
 {
for (i = 0; i < Sys.n + 1; i++)
{
 cout.setf(ios::left);
 cout.width (7);
 cout << MassivItog[j][i] << '\t';
 }
 cout << endl;
 }
 
//обратный ход еще не осуществлен
 
 
 }
while (CProg());
}
Ответы автора ( UFO94 )
1) Массивы обьявляем так:
C++
1
2
3
4
5
6
7
8
int* *MassivA=new int*[n];
int* MassivC=new int[n];
int* *MassivItog=new int*[n];
for(int i=0; i<n; i++)
{
MassivA[i]=new int[n];
MassivItog[i]=new int[n+1];
}
2) Прямой проход:
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
for(int i=0; i<n; i++)
{
if(MassivItog[i][i]!=0)
{
int a = MassivItog[i][i];
for (j = i + 1; j < n; ++j)
 {
int b = MassivItog[j][i];
for ( int k = 0; k < n+1; ++k)
MassivItog[j][k] = a * MassivItog[j][k] - b * MassivItog[i][k];
 }
}
else
{
bool flag=false;//Этот флаг нам говорит, есть ли строки с не 0 в этом столбце
for(int j=i+1; j<n; j++)
if(MassivItog[j][i]!=0)
{
flag=true;
for(int k=0; k<n+1; k++)
{
int tmp=0;
tmp=MassivItog[i][k];
MassivItog[i][k]=MassivItog[j][k];
MassivItog[j][k]=tmp;
}
break;
}
if(flag==flase)
{
printf("System has no solunions, or it has infinity solutions\n");
system("PAUSE");
return 0;
}
else
i--;
}
}
На обратном проходе у нас уже не могут быть 0 на главной диагонали.
C++
1
2
3
4
5
6
7
8
9
10
for(int i=n-1; i>0; i--)
{
int a=MassivItog[i][i];
for(int j=i-1; j>=0; j++)
{
int b=MassivItog[j][i];
MassivItog[j][n]=a*MassivItog[j][n]-b*MassivItog[i][n];
MassivItog[j][i]=0;
}
}
Помогите пожалуйста соединить и заставить работать этот код, а то познаний в С++ мало, а взялся за задание ради интереса и теперь не получается справится...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru