viernes, 20 de noviembre de 2009
1 #include <stdio.h>
2 #define T 20
3
4 void imprime_int(int a[T][T], int fil, int col)
5 {
6 int i, j;
7 for(i=0; i<fil;i++)
8 {
9 for(j=0;j<col;j++)
10 printf("%4d",a[i][j]);
11 printf("\n");
12 }
13 }
14
15 void simple(int a[T][T], int n)
16 {
17 int i, j, v=1;
18 for(i=0; i<n; i++)
19 for(j=0; j<n; j++)
20 a[i][j]=v++;
21 }
22
23 void escalera(int a[T][T], int n)
24 {
25 int i, j, v=1;
26 for(i=0; i<n; i++)
27 { v=i;
28 for(j=0; j<n; j++)
29 { a[i][j]=v+1;
30 v = (v+1)%n;
31 }
32 }
33 }
34
35 void reverso(int a[T][T], int n)
36 {
37 int i, j, v;
38 for(i=0; i<n; i++)
39 {
40 if(i%2)
41 v=1;
42 else
43 v=n;
44 for(j=0; j<n; j++)
45 { a[i][j]=v;
46 if(i%2)
47 v++;
48 else
49 v--;
50 }
51 }
52 }
53
54 void suma(int a[T][T], int n)
55 {
56 int i, j, v;
57 for(i=0; i<n; i++)
58 for(j=0; j<n; j++)
59 a[i][j]=i+j;
60
61 }
62
63 void suma2(int a[T][T], int n)
64 {
65 int i, j, v;
66 for(i=0; i<n; i++)
67 for(j=0; j<n; j++)
68 a[i][j]=2*n-2-i-j;
69
70 }
71
72
73 void serie00(int a[T][T], int n)
74 {
75 int i, j, v=1;
76 for(i=0; i<n; i++)
77 {
78 if(i%2==0)
79 for(j=0; j<n; j++)
80 a[i][j]=v++;
81 else
82 for(j=n-1; j>=0; j--)
83 a[i][j]=v++;
84
85 }
86 }
87
88 void serie01(int a[T][T], int n)
89 {
90 int i, j, v=1;
91 for(i=0; i<n; i++)
92 {
93 if(i%2==0)
94 for(j=0; j<n; j++)
95 a[j][i]=v++;
96 else
97 for(j=n-1; j>=0; j--)
98 a[j][i]=v++;
99
100 }
101 }
102
103 void serie(int a[T][T], int n)
104 {
105 int i, j, ini=1, prox, inc;
106 for(i=0; i<n; i++)
107 {
108 ini += i;
109 prox=ini;
110 inc=i+2;
111 for(j=0; j<n; j++)
112 {
113 a[i][j]=prox;
114 prox +=inc;
115 inc++;
116 }
117 }
118 }
119
120
121 void serie2(int a[T][T], int n)
122 {
123 int i, j, ini=1, prox, inc;
124 for(i=0; i<n; i++)
125 {
126 ini += i;
127 prox=ini;
128 inc=i+2;
129 for(j=0; j<n; j++)
130 {
131 a[i][j]=prox;
132 prox +=inc;
133 if(j+i<n-1)
134 inc++;
135 else if(j+i>=n-1)
136 inc--;
137
138 if(i+j>=n-1)
139 prox--;
140 }
141 }
142 }
143
144 void serie10(int a[T][T], int n)
145 {
146 int i, j, v=1;
147 for(i=n-1; i>=0; i--)
148 for(j=n-1; j>=0; j--)
149 a[i][j]=v++;
150
151 }
152
153 void serie11(int a[T][T], int n)
154 {
155 int i, j, v=1, c=0;
156 for(i=n-1; i>=0; i--, c++)
157 {
158 if(c%2==0)
159 for(j=n-1; j>=0; j--)
160 a[i][j]=v++;
161 else
162 for(j=0; j<n; j++)
163 a[i][j]=v++;
164 }
165 }
166
167 void fila(int a[T][T], int fil, int col)
168 {
169 int j;
170 for(j=0;j<col;j++)
171 printf("%4d",a[fil][j]);
172 printf("\n");
173 }
174
175 void columna(int a[T][T], int fil, int col)
176 {
177 int i;
178 for(i=0; i<fil;i++)
179 printf("%4d",a[i][col]);
180 printf("\n");
181 }
182
183
184 int main()
185 {
186 int tipo, n, tmp;
187 int a[T][T];
188
189 printf("\nTipo de serie (0=salir) ? ");
190
191 while(scanf("%d", &tipo)!=EOF)
192 {
193 if(tipo==0)
194 return 0;
195
196 printf("\ntamaƱo de la matriz? ");
197 scanf("%d", &n);
198
199 printf("\nSerie tipo %d (%d x %d)\n", tipo, n,n);
200 switch(tipo)
201 {
202 case 1: simple(a,n);
203 imprime_int(a,n,n);
204 break;
205
206 case 2: escalera(a,n);
207 imprime_int(a,n,n);
208 break;
209
210 case 3: reverso(a,n);
211 imprime_int(a,n,n);
212 break;
213
214
215 case 4: suma(a,n);
216 imprime_int(a,n,n);
217 break;
218
219 case 5: suma2(a,n);
220 imprime_int(a,n,n);
221 break;
222
223
224 case 6: serie00(a,n);
225 imprime_int(a,n,n);
226 break;
227
228
229 case 7: serie01(a,n);
230 imprime_int(a,n,n);
231 break;
232
233 case 8: serie(a,n);
234 imprime_int(a,n,n);
235 break;
236
237 case 9: serie2(a,n);
238 imprime_int(a,n,n);
239 break;
240
241 case 10: serie10(a,n);
242 imprime_int(a,n,n);
243 break;
244
245 case 11: serie11(a,n);
246 imprime_int(a,n,n);
247 break;
248
249 case 12:printf("Fila a imprimir: ");
250 scanf("%d", &tmp);
251 fila(a, tmp, n);
252 break;
253
254 case 13:printf("Columna a imprimir: ");
255 scanf("%d", &tmp);
256 columna(a, n, tmp);
257 break;
258
259
260
261 case 0: return 0;
262 }
263
264 printf("\nTipo de serie (0=salir)? ");
265 }
266 }
267
268
Suscribirse a:
Entradas (Atom)