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

No hay comentarios: