SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: juvelly en Miércoles 22 de Abril de 2009, 09:01

Título: Por favor ayudenme
Publicado por: juvelly en Miércoles 22 de Abril de 2009, 09:01
necesito hacer este programa:

Desarrollar un aplicativo en c que implemente una funsion que llene un arreglo de 10 x 10 entero desde teclado y luego de haberse llenado el arreglo se imprima los valores digitados en el arreglo de la siguiente manera: esta la imagen en el archivo adjunto (teniendo en cuenta que la impresion va hasta la diagonal secundaria)

La funcion tiene que retornar la sumatoria de los numeros que se imprimieron, el programa proncipal debe imprimir ese resultado.
Título: Re: Por favor ayudenme
Publicado por: Eternal Idol en Miércoles 22 de Abril de 2009, 09:07
Desde el vamos te aviso que NO vamos a hacerte el programa nosotros; si tenes dudas publica lo que ya hayas hecho y te ayudaremos.
Título: Re: Por favor ayudenme
Publicado por: juvelly en Miércoles 22 de Abril de 2009, 15:41
lo que he hecho es esto pero el problema es la impresion como muestra el dibujo me imprime la mitad de la matriz pero no en el orden que deseo

Código: Text
  1.  
  2. #include<stdio.h>
  3. #include<conio.h>
  4. main()
  5. {
  6.       int arr [4][4];
  7.       int i;
  8.       int u;
  9.       int k=1;
  10.       int j;
  11.       int l;
  12.       for(i=0;i<4;i++)
  13.       {
  14.           for(u=0;u<4;u++)
  15.           {
  16.              arr[i][u]=k;k++;
  17.              }
  18.              }
  19.       for(i=0;i<4;i++)
  20.       {
  21.           for(u=0;u<4;u++)
  22.           {
  23.              for(l=0;l<4;l++)
  24.              {
  25.                  if (i==l-u)
  26.                    {
  27.                       printf("%d", arr[i][u]);
  28.                    }
  29.                    }
  30.              }
  31.              }
  32.              getch();
  33. }
  34.  
Título: Re: Por favor ayudenme
Publicado por: m0skit0 en Miércoles 22 de Abril de 2009, 16:32
Si tomamos x e y como las coordenadas de alto y ancho de la matriz, fíjate que para todos los elementos que componen una diagonal:

1ª diagonal: x + y = 2
2ª diagonal: x + y = 3
3ª diagonal: x + y = 4 etc...

Por tanto, para una matriz cuadrada de nxn sólo tienes que descomponer 2..n+1 en todos sus 2 sumandos, los cuales puedes usar luego como coordenadas de los elementos. Para las diagonales tal y como las muestras, hay que empezar con x>=y y acabar con y>=x. Para las inversas, al revés.

Ejemplo de 2ª diagonal:

3 = 2+1, 1+2 => los elementos de la 2ª diagonal son por tanto M(2,1) y M(1,2)

Esto seguramente tendrá alguna explicación matemática más formal, pero yo me acabo de dar cuenta de ello  :lol:

Salud