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

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

Войти
Регистрация
Восстановить пароль
 
tomsoier
0 / 0 / 0
Регистрация: 24.03.2010
Сообщений: 9
#1

Печать матрицы - C++

21.05.2010, 08:39. Просмотров 698. Ответов 0
Метки нет (Все метки)

Есть разреженная матрица, которая считывается из файла в цепочку ненулевых элементов и вектор указывающий на индекс начало новой строки в цепочке. Считать я считал без проблем, а с печатью проблемы.
Помогите пожалуйста, вот код


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
171
172
173
174
175
176
#include <stdio.h>
#include <stdlib.h>
 
char data[50];
int input_matrix[10][10];
int A_matrix[30];
int *ptr;
int M_matrix[10];
int i,j,u,p,q,f=0,k=0,n,c=0,z,l=0;
int s[10];
 
 
read_matrix(){
    FILE *p;
    printf("Input filename:\n");
    scanf("%s",data);
    p=fopen(data,"r+");
    for (i=0;i<10;i++)
    {
        for(j=0;j<10;j++)
        {
            /////////////////////////////////////
           fscanf(p,"%d",&input_matrix[i][j]);
            /////////////////////////////////////
            if ((input_matrix[i][j])!= 0)   {
                    A_matrix[l]=j;
                    A_matrix[l+1]=input_matrix[i][j];
                    A_matrix[l+2]=l+4;
                    if ((input_matrix[i][j])!= 0) {
                        s[c]=l+1;
                        c++;
                    }
                    l=l+3;
                    }
                }
               //printf("%d  ",s[0]);
                M_matrix[u]=s[0];
                u++;
                c=0;
                s[c]=0;
    }
   for (i=0;i<l;i++){
        if ((A_matrix[i+1]==0)&&(A_matrix[i+2]==0)){
            A_matrix[i]=0;
        }
   }
    }
 
Saint_Peterburg(int *qtr,int *ptr){
int m;
f=0;
i=2;
while (*(qtr+i)!=0){
 for(m=0;m<u;m++){
    //printf("qtr = %d  ptr = %d m=%d\n",*qtr,*(ptr+m),m);
        if (*qtr==*(ptr+m))
            f=1;
            else
            f+=0;
 
}
i+=3;
}
if (f == 0)
    return 0;
        else return 1;
}
 
 
print_matrix() {
        for (i=0;i<10;i++)
    {
        for(j=0;j<10;j++)
        {
            printf("%d ",input_matrix[i][j]);
        }
        puts("");
    }
}
 
/*get_A_matrix(){
        for (i=0;i<10;i++)
                {
                    for(j=0;j<10;j++)
                        {
                            if ((input_matrix[i][j])!= 0) {
                               printf("element=%d\tl=%d\n",input_matrix[i][j],l);
                                A_matrix[l]=j;
                                printf("A[l]=%d\n", A_matrix[l]);
                                A_matrix[l+1]=input_matrix[i][j];
                                printf("A[l+1]=%d\n", A_matrix[l+1]);
                                A_matrix[l+2]=l+3;
                                printf("A[l+2]=%d\n", A_matrix[l+2]);
                                l=l+3;
                                }
 
                            }
                }
}
*/
 
print_A_matrix(){
    puts("\nMatrix A:\t");
    for (i=0;i<l;i++){
        if ((A_matrix[i+1]==0)&&(A_matrix[i+2]==0)){
            A_matrix[i]=0;
        }
        printf("%d  ",A_matrix[i]);
    }
print_M_matrix();
printf("\n\n");
main();
}
 
print_M_matrix(){
    puts("\nMatrix M:\t");
    for (i=0;i<u;i++){
        printf("%d  ",M_matrix[i]);
    };
}
 
void print_Grand(){
    int *ptr,m;
    int *qtr;
    qtr=&A_matrix[0];
    ptr=&M_matrix[0];
n=2;
for (i=0;i<u;i++){
puts("");
    if ((*(ptr+i))==0){
        for (n=0;n<u;n++)
            printf("0 ");
    }
    else
        {
           for (m=0;m<A_matrix[*(ptr+i)];m++)
            printf ("xer ");
        }
 
 
}
}
   /* while((*(qtr+n))!=0){
    //printf("\n");
            for (z=0;z<*(qtr+n-2);z++)
                printf("0 ");
                     if (Saint_Peterburg((qtr+n),ptr)== 0){
                        printf("%d ",*(qtr+n-1));
                        for (j=0;j<*(qtr+n+1);j++)
                            printf("0 ");
                            printf("%d ",*(qtr+n+2));
                    }
                    else {
                        printf("%d ",*(qtr+n-1));
                        for (j=0;j<(10-*(qtr+n-2)-1);j++)
                            printf("0 ");
                 }
printf("\n");
n+=3;
}*/
 
 
 
int main()
{
    //printf("1.Open matrix\t3.Transform\n2.Print matrix\t4.Exit\n\n");
    read_matrix();
   // puts("\n\nInput matrix\n\n\n");
    //print_matrix();
    //get_A_matrix();
    //print_A_matrix();
    //print_M_matrix();
    //puts("");
    print_Grand();
    puts("");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2010, 08:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Печать матрицы (C++):

Максимальный элемени матрицы заменить на нуль и вывести на печать угол матрицы, в котором расположен этот максимальный элемент - C++
собственно сабж. буду очень благодарен тому кто поможет,а то я на грани отчисления,а уроки по c++ пролежал дома с переломом ноги =(

Максимальный элемент матрицы заменить на нуль и вывести на печать угол матрицы, в котором расположен этот максимальный элемент - C++
Помогите, пожалуйста, добить программу: -Максимальный элемент матрицы заменить на нуль и вывести на печать угол матрицы, в котором...

Даны матрицы А(5,5), B(5,5). Вывести на печать матрицу 2*А-3*B. - C++
Даны матрицы А(5,5), B(5,5). Вывести на печать матрицу 2*А-3*B. Запрещено создавать темы с бессмысленными названиями вроде &quot;Помогите!&quot;,...

Транспонировать матрицу. Вывести на печать начальный и конечный вариант матрицы - C++
Дана квадратная матрица натуральных чисел, (получаемая через rand()). Транспонировать матрицу. Вывести на печать начальный и конечный...

Вывести на печать элементы матрицы, которые встречаются дважды в каждой строке и являются четными - C++
Помогите пожалуйста написать програму в Dev-C++ Задана квадратная матрица М*N. Вывести на печать элементы, которые встречаются дважды в...

Даны три квадратные матрицы А, В, С n-го порядка. Вывести на печать ту из них, норма которой наименьшая - C++
Даны три квадратные матрицы А, В, С n-го порядка. Вывести на печать ту из них, норма которой наименьшая. Нормой матрицы назовем максимум из...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2010, 08:39
Привет! Вот еще темы с ответами:

Написать 4 функции для матриц(Создание матрицы, печать, поиск минимального элемента, удаление столбцов) - C++
Написать функции: 1. создания матрицы размерности A , элементы матрицы А – вещественные числа. Параметры функции – сама матрица, ее...

Найти в каждом столбце матрицы максимальный и минимальный элементы и вывести на печать в виде двух строк - C++
Найти в каждом столбце матрицы максимальный и минимальный элементы и вывести на печать в виде двух строк. Условия и ограничения:z={i}_{j} -...

Найти и вывести на печать все нулевые элементы матрицы и указать в каких строках и столбцах они находятся - C++
Парни, помогите с этим заданием.. &quot;Написать программу, задающую матрицу А размером 4x4 с вещественными элементами, вводимыми с клавиатуры...

Что такое "эхо печать"? И как через такую печать сделать калькулятор? - C++
Само задание такое: Создать программу-калькулятор, обеспечивающую ввод с клавиатуры в режиме эхо-печати только цифр, а также...


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

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

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