2017-10-17 7 views
-4

J'ai une matrice avec n * n dimensions. Pour un entier donné k Je dois imprimer des éléments à partir de diagonales.Tâche avec matrice et diagonales en c

enter image description here

de la photo: pour k = 0, il faut imprimer un vecteur: 1,12,23,34.

Comment faire?

+1

Quelle est votre question? pourriez-vous également ajouter le code de ce que vous avez essayé jusqu'ici? –

+1

Vous allez obtenir le droit de vote, sauf si vous avez réellement posé une question, et b) montrez-nous ce que vous avez déjà fait. – RPGillespie

+0

@TonyTannous ma question est comment puis-je faire ... –

Répondre

-1

code pseudo:

function(martrix, k){ 
    rowmax = matrix.length; 
    colmax = matrix[0].length; 
    output = [] 
    for i = 0 to max(rowmax, colmax): 
     if k > 0 : x = i + k 
     if k < 0 : y = i + k 
     if(x < rowmax and y < colmax): 
      output.append(matrix[x][y]) 

} 
1

Une approche directe peut regarder la façon suivante

#include <stdio.h> 

#define N 4 

int main(void) 
{ 
    int a[N][N] = 
    { 
     { 1, 2, 3, 4 }, 
     { 11, 12, 13, 14 }, 
     { 21, 22, 23, 24 }, 
     { 31, 32, 33, 34 } 
    }; 

    int k; 

    printf("Select a diagonal (%d, %d): ", -N, N); 

    scanf("%d", &k); 

    if (k < 0) 
    { 
     for (int i = -k, j = 0; i < N; i++, j++) 
     { 
      printf("%d ", a[i][j]); 
     } 
    } 
    else 
    { 
     for (int i = 0, j = k; j < N; i++, j++) 
     { 
      printf("%d ", a[i][j]); 
     } 
    } 

    putchar('\n'); 

    return 0; 
} 

La sortie du programme pourrait ressembler à

Select a diagonal (-4, 4): 2 
3 14 

ou

Select a diagonal (-4, 4): -2 
21 32 

ou au lieu de l'if-else avec des boucles séparées vous pouvez utiliser une boucle comme par exemple

int i = k < 0 ? -k : 0; 
int j = k > 0 ? k : 0; 

for (; i < N && j < N; i++, j++) 
{ 
    printf("%d ", a[i][j]); 
} 

putchar('\n'); 
+0

Pour un nouveau Comer, je dirai que SO n'est pas un Tutorial Site, mais comment puis-je vous dire ceci? :) – Michi

+0

@Michi Pourquoi n'est-ce pas un site de tutoriel? Je le considère comme un site de tutoriel. Répondre à des questions J'apprends la programmation. :) –

+0

Je pense que plus de 80% ici seront d'accord avec moi. Qui sait peut-être que je me trompe :). Ce genre de question n'est pas une question de SO de toute façon. – Michi