-
Notifications
You must be signed in to change notification settings - Fork 0
/
tipo_matriz.c
125 lines (101 loc) · 2.32 KB
/
tipo_matriz.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
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define MAX_COLUMNAS 500
#define MSJ_MATRIZ "La matriz es"
#define MSJ_POSITIVA "positiva"
#define MSJ_NOPOSITIVA "no positiva"
#define MSJ_NEGATIVA "negativa"
#define MSJ_NONEGATIVA "no negativa"
#define MSJ_NADA "no cumple ninguna de las condiciones"
typedef enum {positiva/*0*/,
nopositiva/*1*/,
negativa/*2*/,
nonegativa/*3*/,
cero/*4*/,
nocero/*5*/,
nada/*6*/
}tipo_t ;
tipo_t matriz_positiva (int M[][MAX_COLUMNAS], size_t filas, size_t columnas){
tipo_t a;
int i,j;
for (i = 0; i < columnas; ++i){
for ( j = 0; j < filas; ++j){
if (M[i][j] < 0){
return a = nopositiva;
}
}
}
return a = positiva;
}
tipo_t matriz_negativa (int M[][MAX_COLUMNAS], size_t filas, size_t columnas){
tipo_t a;
int i,j;
for ( i = 0; i < columnas; ++i){
for ( j = 0; j < filas; ++j){
if (M[i][j] > 0){
return a = nonegativa;
}
}
}
return a = negativa;
}
tipo_t matriz_cero (int M[][MAX_COLUMNAS], size_t filas, size_t columnas){
tipo_t a;
int i,j;
for (i = 0; i < columnas; ++i){
for ( j = 0; j < filas; ++j){
if (M[i][j] == 0){
return a = cero;
}
}
}
return a = nocero;
}
tipo_t tipo_matriz (int M[][MAX_COLUMNAS], size_t filas, size_t columnas){
tipo_t p,n,c,tipo;
p = matriz_positiva(M, filas, columnas);
n = matriz_negativa (M, filas, columnas);
c = matriz_cero (M, filas, columnas);
if (p == positiva && c == nocero && n == nonegativa ){
return tipo = positiva;
}
else if (p == positiva && c == cero && n == nonegativa ){
return tipo = nopositiva;
}
else if (n == negativa && c == nocero && p == nopositiva){
return tipo = negativa;
}
else if (n == negativa && c == cero && p == nopositiva){
return tipo = nopositiva;
}
else
return nada;
}
int main(void){
int M[3][3]={ {1,2,3},
{4,5,6},
{7,8,9}
};
tipo_t a;
a = tipo_matriz(M,3,3);
printf("%c\n", a);
switch (a){
case (positiva):
printf("%s %s\n", MSJ_MATRIZ, MSJ_POSITIVA );
break;
case (nopositiva):
printf("%s %s\n", MSJ_MATRIZ, MSJ_NOPOSITIVA );
break;
case (negativa):
printf("%s %s\n", MSJ_MATRIZ, MSJ_NEGATIVA );
break;
case (nonegativa):
printf("%s %s\n", MSJ_MATRIZ, MSJ_NONEGATIVA );
break;
default:
printf("%s %s\n", MSJ_MATRIZ, MSJ_NADA );
break;
}
return 0;
}