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

реализация гаусса - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Реагирования приложения на клавиши http://www.cyberforum.ru/cpp-beginners/thread68111.html
в общем нужно чтобы приложение при нажатии клавиши на клавиатуре выполняло какое либо действие тип приложения windows forms
C++ Цифры числа Есть задачка: ВВести натуральное число, сохранить все его цифры: А) В отсортированном массиве, массив распечатать б) Построить список частот цифр в числе, список распечатать В) Найти... http://www.cyberforum.ru/cpp-beginners/thread68109.html
C++ Ошибка в программе!
найти минимальное положительное целое число Q такое, что произведение цифр числа Q в точности равняется N. Выведите целое число Q. Если такого числа не существует, выведите −1. Прогу я написала,...
отсортировать массив по возрастанию C++
#include <iostream.h> #include <stdlib.h> #include <stdio.h> #define N 10 БУДУ ПРЕМНОГО БЛАГОДАРЕН ЕСЛИ ПОМОЖЕТЕ решить 3 ЗАДАЧКИ: 1.найти произведение чисел в массиве 2.отсортировать массив...
C++ Передача динамических матриц в функцию http://www.cyberforum.ru/cpp-beginners/thread68061.html
Здравствуйте, ребята! У меня очень простой вопрос. Я работаю с очень большими матрицами. Они создаются в куче: const N = 10000; int **MA = new int * ; for(int i = 0; i < N; i++){
C++ Cвязанные списки. Длинная арифметика. При помощи связанных списков необходимо написать процедуру возведения числа в большую степень (до 200 знаков) как это реализовать? можете написать алгоритм? или сам код с описаниями, если не... подробнее

Показать сообщение отдельно
Gravity
564 / 558 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
28.11.2009, 02:21
Немного подредактированный вариант, код работает, но все равно страшен)) getch'и я у себя убрал.
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
 
//-------------------------------------------------------------------------------------------------------------------
 
double **fMatrix;    //массив - сама матрица как бы=)
//-------------------------------------------------------------------------------------------------------------------
 
int enterMatrix(void);  //функция ввода матрицы (изначальной)
int matrixMemmory(int iSize);   //функция выделения памяти под матрицу динамически исходя из запроса юзера
int enter(int N);       //функция ввода чисел в матрицу
int gauss(int iSize);   //функция метода гаусса
 
//------------------------------------------------------------------------------------------------------------------------------
 
int main()
{
    int iErr; //переменая ошибки
    printf("Hellow! It's a programm for Gauss SLAU method\n\n");
    
    //вызов процедуры ввода расширенной матрицы с обработкой ошибок
    iErr = enterMatrix();
    if(iErr != 0)
    {
        printf("Error - Main: enter mstrih - falled\n");
        
        exit(1);
    }
    return 0;
}
//-------------------------------------------------------------------------------------------------------------------
 
int matrixMemmory(int iSize)    //выделяем под нашу матрицу динамически память N строк и N+1 столбов 
{                                   //она ведь должна быть расширенной для гаусса
    fMatrix = new double*[iSize];
    for(int i = 0; i < iSize; i++)
        fMatrix[i] = new double[iSize+1];
        
    if(!fMatrix)
    {
        printf("Error - Matrix Memmory: Error of allocation of memory\n");
        return(-1);
    }
    return(0);
}
 
//------------------------------------------------------------------------------------------------------------------------
 
int enter(int N)
{
    int i, j;
    char *pchTempBuf;       //временный буфер
 
    //создаем одномерныйm массив равный длинне строки матрицы
    pchTempBuf = (char *)calloc((N*N), sizeof(char));
    if(!pchTempBuf)
    {
        printf("Error - Enter: allocate memmory for TempBuf\n");
        
        exit(1);
    }
 
    //начинаем ввод коэффициентов в матрицу
    for(j=0; j < N; j++)
    {
        fgets(pchTempBuf, N*N, stdin);  //читаем с клавиатуры во временый буфер строку чтоб потом из нее выдрать коэфициенты
 
        char *end, *start = pchTempBuf;
        end = start;
        //выбираем из буфера числа, преобразуем в флоат и записываем в матрицу
        for(i=0; i < (N+1); i++)
        {
            fMatrix[j][i] = strtod(start, &end);
            start = end;
            //пропускаем символы не входящие в числа
            while( !isdigit (*start) && *start) start++;
 
        }
        
    }
        
 
    return(0);
}
 
 
 
//-----------------------------------------------------------------------------------------------------------------------------------
 
int enterMatrix(void)
{
    int iSizeCount = 0;
    int iErr; //переменая ошибки
    
    printf("Enter size of your matrix \n (The quantity the equation should be equal to quantity of unknown persons)");
    printf("\n Size of Matrix: ");
    scanf("%i",&iSizeCount);
    printf("\n");
 
    //выделяем память под матричку
    iErr = matrixMemmory(iSizeCount);
    if (iErr != 0)
    {
        printf("Error - Enter Matrix: Something with memory allocation\n");
        
        exit(1);
    }
    
    //шпаргалка как вводить матричку
    printf("We start to enter values of factors of their equations - \n i.e. we set a matrix in a kind: \n\n");
    printf("Any your equation looks like: \n\n");
    printf("\t A11*X1 + A12*X2+...+A1n*Xn = B1\n");
    printf("\t A21*X1 + A22*X2+...+A2n*Xn = B2\n");
    printf("\t --------------------------------\n");
    printf("\t Am1*X1 + Am2*X2+...+Amn*Xn = Bm\n\n");
    printf("You enter only factors at X i.e. all A and free factors, i.e. all B\n\n");
 
    //запускаем функцию ввода значений в матрицу
    iErr = enter(iSizeCount);
    if (iErr != 0)
    {
        printf("Error - Enter Matrix: Something with return from simple input\n\n");
        
        exit(1);
    }
 
    //контрольный вывод матрицы
    printf("Your matrix: \n");
 
    for(int j=0; j < iSizeCount; j++)
    {
        for(int i = 0; i < iSizeCount + 1; i++)
        {
            printf("%.2f ", fMatrix[j][i]);
        }
        printf("\n");
    }
    printf("Press ENTER to continue");
    
 
    return(0);
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.