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

Подключение библиотек - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Лабиринт http://www.cyberforum.ru/cpp-beginners/thread41773.html
Народ помогите! есть задание: Лабиринт представляет собой квадрат, состоящий из NxN сегментов. Каждый из сегментов может быть либо пустым, либо заполненным камнем. Гарантируется, что левый верхний и правый нижний сегменты пусты. Лабиринт обнесен сверху, снизу, слева и справа стенами, оставляющими свободными только левый верхний и правый нижний углы. Требуется покрасить стены лабиринта, ВИДИМЫЕ...
C++ Логарифмическая спираль Задание на картинке, есть аналогичный код, который строит УЛИТКУ ПАСКАЛЯ. подскажите как переделать его. #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <math.h> #include <graphics.h> #include <dos.h> int main(){ int y0,x0,ymax,xmax; http://www.cyberforum.ru/cpp-beginners/thread41709.html
Литература по Win API C++
Посоветуйте пожалуйсто книгу где изложены основы программирования с win API доступным языком с использованием C++
Реализация суммы автоматом фон неймана C++
Ребят, эту не сложную прогу мне дали на практику к курсовой, если у кого завалялась, киньте под visual, или codeblocks, буду весьма признателен!! заранее спасибо __
C++ Исправьте програму формирования эл-тов массивов http://www.cyberforum.ru/cpp-beginners/thread41441.html
исправьте програму формирования эл-тов массивовX,Y,Z и их упорядочение в порядке возрастания значений элементов и вывода минимальных элементов, если: ошибка в программе - она не так как то считает. :( помогите пожалуйста:) условие такое: составить программу формирования элементов массивов X, Y, Z и их упорядочение в порядке возрастания значений элементов и вывода минимальных элементов,...
C++ Создать класс треугольник Экзаменационная задача...помогите, пожалуйста!! Создать класс треугольник.Обеспечить ввод треугольников, их вывод на экран и контроль существования. подробнее

Показать сообщение отдельно
DiegoGonzalez
 Аватар для DiegoGonzalez
0 / 0 / 0
Регистрация: 09.04.2009
Сообщений: 22
24.06.2009, 19:35  [ТС]     Подключение библиотек
Эм...я конечно не совсем крутой программер,но я пробовал даже пересобрать проект....
Могу выложить код,только там порядка 300 строк кода и разделено на 3 файла,один из которых заголовочный...

Добавлено через 7 минут 30 секунд
compressed_matrix.h
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
//#include <stdafx.h>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
 
//базовый абстрактный класс
class matrix {
public:
    int number_of_rows; //число строк (равно n)
  //  virtual int print_to_file(FILE *stream, int flag)=0;//виртуальная функция вывода матриц
 }
 
 
//класс полной матрицы
class Cfull_matrix : public matrix
{
    //friend int print_to_file(FILE *stream, int flag);
    //переменные
public:
    full_matrix(int number_of_rows); //в конструкторе производится обнуление всех переменных и указателей
    ~full_matrix(); //в деструкторе производится удаление выделенной памяти и обнуление всех переменных и указателей
    int number_of_rows; //число строк (равно n)
    double init_full(); //инициализация матрицы
    double sum_full(full_matrix &mf1, full_matrix &mf2); //суммирование матриц
 
protected:
    //полный формат хранения
     double **mf; //указатель на двумерный массив размерностью nxn      
}
 
 
//класс сжатой матрицы
class compressed_matrix : public matrix
{
        //friend int print_to_file(FILE *stream, int flag);
//переменные
public:
    compressed_matrix(int number_of_rows); //в конструкторе производится обнуление всех переменных и указателей
    ~compressed_matrix(); //в деструкторе производится удаление выделенной памяти и обнуление всех переменных и указателей
    int number_of_elements; //число ненулевых элементов матрицы
    int number_of_rows; //число строк (равно n)
    double init_compres(); //инициализация матрицы
    double *get_values_ptr(); //возвращает указатель на массив values
    int *get_columns_ptr(); //возвращает указатель на массив columns
    int *get_rows_ptr(); //возвращает указатель на массив rows
    double sum_compress(compressed_matrix &mc1, compressed_matrix &mc2); //суммирование матриц
 
protected:
    //сжатый формат хранения
     int *rows; //массив из n+1 элемента; rows[i] хранит номера элементов массивов values и
                //columns, с которых начинается i-я строка матрицы (rows[0]=0,
                //rows[n+1]=number_of_elements+1)
     int *columns; //массив, хранящий номера столбцов ненулевых элементов
     double *values; //массив значений ненулевых элементов
     int size_of_columns; //длина массива columns
     int size_of_values; //длина массива values
}
compressed_matrix.cpp
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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#include "stdlib.h"    // для функций работы с числами    
#include <iostream> // для работы   cin
//#include <stdafx.h>
#include <stdio.h>    // для printf
 
#ifndef COMPRESSED_MATRIX__H        // заголовочный для класса
#define COMPRESSED_MATRIX
     
using namespace std;
 
Ccompressed_matrix::Ccompressed_matrix(int number_of_rows)
{
        //присвоим внутренним переменным переданные параметры
        int size_of_columns = number_of_rows*number_of_rows;
        int size_of_values = number_of_rows*number_of_rows;
 
        //Для хранения собственно данных матрицы сначала выделим память для массивов
        int *rows = NULL;
        rows = new int[number_of_rows];
        int *columns = NULL;
        columns = new int[size_of_columns];
        double *values = NULL;
        values = new double[size_of_values];
}
 
Ccompressed_matrix::~Ccompressed_matrix()
{   //освобождение памяти
    delete []*rows;
    delete []*columns;
    delete []*values;
}
 
Cfull_matrix::full_matrix(int number_of_rows)
{
    //number_of_rows// присвоим внутренним переменным переданные параметры
 
    //Для хранения собственно данных матрицы сначала выделим память
     double **mf = NULL;
     mf1 = new double*[number_of_rows];
     for (int i = 0; i < number_of_rows; i++) {
     mf1[i] = new double[number_of_rows];
     }
}
 
Cfull_matrix::~Ccompressed_full_matrix()
{   //освобождение памяти
    delete []**mf
}
 
//инициализация сжатой матрицы
 double Ccompressed_matrix::init_compres(int number_of_rows){
        int number_of_elements=0,j,i;
        double r,a1,a2;
        //ввод диапазона значений
        printf("vvedite a1:\n");
        scanf_s("%lf", &a1);
        printf("vvedite a2:\n");
        scanf_s("%lf", &a2);
 
        srand(unsigned(time(NULL)));
        //обнуление массивов
        for (i=0;i<size_of_columns;i++){
            columns[i]=0;
            values[i]=0;
        };
        //заполнение значениями
         for (i=0;i<number_of_rows;i++)
             {
                 for (j=0;j<number_of_rows;j++){
                     r=rand()& 1;
                    if (r!= 0) { r =(double)((double)rand()/(double)RAND_MAX*(a2-a1)+a1);
                                        values[number_of_elements] = r;
                                        columns[number_of_elements]=j;
                                        number_of_elements=number_of_elements+1;}
                        printf("%7.3lf", r);
                 };
            rows[i]=number_of_elements;
            printf("\n");
             };
 
                printf("\n");
            
             for (i=0;i<number_of_rows;i++){    printf("%3d", rows[i]);};
             printf("\n");
             for (i=0;i<number_of_elements;i++){printf("%3d", columns[i]);};
             printf("\n");
             for (i=0;i<number_of_elements;i++){printf("%7.3lf", values[i]);};
        return 0;
 }
 
//инициализация полной матрицы
 double Cfull_matrix::init_full(int number_of_rows){
        int i,j;
        double a1,a2;
        srand(unsigned(time(NULL)));
        //ввод диапазона значений
        printf("vvedite a1:\n");
        scanf_s("%lf", &a1);
        printf("vvedite a2:\n");
        scanf_s("%lf", &a2);
        //заполнение значениями
         for (i=0;i<number_of_rows;i++){
                 for (j=0;j<number_of_rows;j++){
                    mf[i][j]=rand()& 1;
                    if (mf[i][j]!=0) { mf[i][j]=(double)((double)rand()/(double)RAND_MAX*(a2-a1)+a1);}
                    printf("%8.3lf", mf[i][j]);
        }
        printf("\n");
         }
    return 0;
}   
 
 
//сложение сжатых матриц
double Ccompressed_matrix::sum_compress(compressed_matrix &mc1, compressed_matrix &mc2, int number_of_rows){
    
    int i,j1,j2,k;
    double Prod=1;
 
    for(i=0;i<number_of_rows;i++)
        {
            for(j1=row1[i];j1<rows[i+1];j1++)
                {
                    for(j2=rows2[i];columns2[j2]<=columns1[j1];j2++)
                    {
                        k=0;
                        if (columns1[j1]==columns2[j2])
                            {Prod=Prod*(values1[j1]+values2[j2]);
                             k=1;
                             break;
                            }
                        if (k==0) Prod=Prod*values1[j1];
                    }
                }
 
            for(j2=row2[i];j2<rows2[i+1];j2++)
                {
                    for(j1=rows1[i];columns1[j1]<=columns2[j2];j1++)
                        {
                        if (columns1[j1]==columns2[j2])
                            {
                             k=1;
                             break;
                            }
                        if (k==0) Prod=Prod*values2[j2];
                        }
                }
        }
    return Prod;
}
 
//сложение полных матриц
double Cfull_matrix::sum_full(full_matrix &mf1, full_matrix &mf2, int number_of_rows){
    
    double Prod=1;
    int i,j;     
         for (i=0;i<number_of_rows;i++)
                  {
                      for (j=0;j<number_of_rows;j++){
                        printf("%8.3lf", m1[i][j] + m2[i][j]);
                        if (m1[i][j] + m2[i][j]!= 0) Prod=Prod*(m1[i][j] + m2[i][j]);
 
                      }
                  printf("\n");
                }
    return Prod; 
}
 
//int print_to_file(FILE *stream, int flag){}
#endif
main.cpp
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
#include <iostream>
#include <stdio.h>
#include <stdlib.h> 
#include "stdafx.h"
 
 
#ifndef COMPRESSED_MATRIX__H
#define COMPRESSED_MATRIX
 
using namespace std;
 
void main()
{
    int i, punkt;
    char filename[20];
    
    // спросим сколько строк
    int number_of_rows;
    cout << "\n Number_of_rows ?:" ;
    cin >> number_of_rows ;
    
    
    while(1) {
    system("cls");
    printf("Vy hotite slozit polnie ili szatie matrici?\n");
    printf("1-Polnie\n");
    printf("2-Szatie\n");
    printf("3-Vyiti\n");
    scanf_s("%d", &punkt); 
    int flag=0; 
    //цикл до тех пор пока не выбран правильный пункт меню
    while(flag==0)
    { 
                //правильный ли выбран пункт
                if ((punkt<'1')&&(punkt>'3')) 
                {
                    cout <<"Takogo punkta net. Nagmite any key i povtorite vvod:\n";
                    _getch();
                    system ("cls"); 
                    printf("Vy hotite slozit polnie ili szatie matrici?\n");
                    printf("1-Polnie\n");
                    printf("2-Szatie\n");
                    printf("3-Vyiti\n");
                    scanf_s("%d", &punkt);
                }                               
                else flag=1;         
            }
    //если выбран пункт "полные"
    if (punkt == 1) {
        system("cls");
        printf("Vvedite imja fayla dlya zapisi: ");
        cin >> filename;
        ofstream out(filename, ios::out);  //создание потока
        //проверка создания файла
        if (!out)
        {
            cerr << "Oshibka sozdaniya faila!" << endl;
        }
        out.close();
 
    Cfull_matrix mf1(int number_of_rows);   // создадим матрицу 1
    mf1.init_compres(int number_of_rows);    // заполним значениями
 
    Cfull_matrix mf2(int number_of_rows);   // создадим матрицу 2
    mf2.init_compres(int number_of_rows);    // заполним значениями
        
    double sum_full(full_matrix &mf1, full_matrix &mf2); //суммирование
    }
 
        //если выбран пункт "сжатые"
    if (punkt == 2) {   
        system("cls");
        printf("Vvedite imja fayla dlya zapisi: ");
        cin >> filename;
        ofstream out(filename, ios::out);  //создание потока
        //проверка создания файла
        if (!out)
        {
            cerr << "Oshibka sozdaniya faila!" << endl;
        }
        out.close();
 
        Ccompressed_matrix mc1(int number_of_rows); // создадим матрицу 1
        mc1.init_compres(int number_of_rows);    // заполним значениями
 
        Ccompressed_matrix mc2(int number_of_rows); // создадим матрицу 2
        mc2.init_compres(int number_of_rows);    // заполним значениями
 
        //суммирование
        double Ccompressed_matrix::sum_compress(compressed_matrix &mc1, compressed_matrix &mc2, int number_of_rows);
        
    }
    if (punkt == 3){exit(0);}
    }
    return 0;
}
#endif
 
Текущее время: 16:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru