Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Funcion Diagonal

Estas en el tema de Funcion Diagonal en el foro de C/C++ en Foros del Web. Hola vengo a pedirles un favor, hice un programa pero el profesor me dice que hay otro metodo y pues no se cual es le ...
  #1 (permalink)  
Antiguo 08/10/2011, 18:16
Avatar de WizKnight  
Fecha de Ingreso: noviembre-2010
Ubicación: Maracaibo, Venezuela, Venezuela
Mensajes: 19
Antigüedad: 14 años
Puntos: 1
Información Funcion Diagonal

Hola vengo a pedirles un favor, hice un programa pero el profesor me dice que hay otro metodo y pues no se cual es le pregunte pero no me quiere decir.. La funcion lo que debe hacer es guardar los numeros de un arreglo, en un arreglo de forma diagonal
este es el programa que hice:

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <conio.h>
  3. # define t 30
  4. # define r 30
  5.  
  6. void leer(int n,int a[])
  7. {
  8. int i;
  9. printf("\n");
  10. for(i=0;i<n;i++)
  11. {
  12. printf("Escriba un numero: ");
  13. scanf("%d",&a[i]);
  14. }
  15. printf("\n");
  16. }
  17.  
  18. //--------------------------
  19.  
  20. void diagonal(int n,int a[],int m[][t])
  21. {
  22. int d=0;
  23. int i,g;
  24. printf("\nIniciando arreglo\n\n");
  25. for(i=0;i<n;i++)
  26. {
  27. for(g=0;g<n;g++)
  28. {
  29. m[i][g]=0;
  30. printf("%d",m[i][g]);
  31. }
  32. printf("\n");
  33. }
  34. for(g=0,i=0;g<n;g++,i++)
  35. {
  36. m[i][g]=a[d];
  37. d++;
  38. }
  39. }
  40.  
  41. // -----------------------------
  42. void imprimir(int n,int m[][t])
  43. {
  44. int i,g;
  45. printf("\nDiagonal: \n");
  46. for(i=0;i<n;i++)
  47. {
  48. for(g=0;g<n;g++)
  49. {
  50. printf("%d",m[i][g]);
  51. }
  52. printf("\n");
  53. }
  54. }
  55. //-------------------------------
  56.  
  57. main()
  58. {
  59. int n;
  60. printf("Un arreglo de cuantos numeros? :");
  61. scanf("%d",&n);
  62.  
  63. int a[n];
  64. int m[r][t];
  65. leer(n,a);
  66. diagonal(n,a,m);
  67. imprimir(n,m);
  68. }

Ejemplo:
Entrada: 6
Salida: Diagonal:
500000
060000
004000
000700
000080
000009
  #2 (permalink)  
Antiguo 08/10/2011, 19:23
 
Fecha de Ingreso: septiembre-2011
Mensajes: 20
Antigüedad: 13 años, 1 mes
Puntos: 2
Respuesta: Funcion Diagonal

Para grabar datos en una matriz de forma diagonal, el método más simple es usar un simple bucle for...
Código C:
Ver original
  1. for(i=0;i<N;i++){ // donde N es el numero de columnas de la matriz.
  2.     arreglo[i][i]=Valor_en_la_diagonal;
  3.      }
  #3 (permalink)  
Antiguo 28/10/2011, 21:20
 
Fecha de Ingreso: enero-2011
Ubicación: Venezuela, Táchira
Mensajes: 96
Antigüedad: 13 años, 10 meses
Puntos: 10
Respuesta: Funcion Diagonal

no estoy seguro de entender bien a que te refieres , pero lo dire asi y cualquier cosa me corriges. quieres poner un numero que introduzca el usuario x pantalla en una diagonal de la matriz y el resto en ceros?

Código C++:
Ver original
  1. printf("\nDiga un numero: ");
  2. scanf("%d",&n);
  3.  
  4. int k = 0;
  5. for(i=0;i<tamanhomatriz;i++){
  6.    for(j=0; j<tamanhomatriz; j++){
  7.        if(i == j)//si esta en una poscicion de diagonal
  8.           matriz[i][j] = array[k];
  9.           k++
  10.        else
  11.           matriz[i][j]=0;
  12.    }
  13. }

algo asi esa es la logica de lo que tienes que hacer , ojo valida que el tamanho del vector que quieres meter en la diagonal no sea mas grande que la diagonal de la matriz

Etiquetas: diagonal, funcion, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:55.