C에서 배열로 표시된 행렬의 뒤로 열을 인쇄하는 방법은 무엇입니까?

3HK

나는 이와 같은 입력 파일에서 행렬을 가져 오는 프로그램을 작업 중입니다. 여기서 첫 번째 행은 행렬의 매개 변수를 나타냅니다. 행, 열, 0은 홀수 열을 변경하고 1은 짝수 열을 변경합니다.

5 5 0
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25

이제 이상한 clomuns (예 : 7 4 1)를 가져 와서 거꾸로 인쇄해야합니다. 3x3 행렬이 있으면 다음과 같이 보일 것입니다 (1 4 7).

1 2 3
4 5 6
7 8 9

홀수 열이 거꾸로 인쇄 된 출력 행렬

7 2 9
4 5 6
1 8 3

그리고 이것은 내가 지금까지 가지고있는 코드입니다.

int r = 0, c = 0, odds = 0,n = 0,i,j;
FILE *fp,*fp2;
fp = fopen(argv[1],"r");
fp2 = fopen(argv[2],"w");
if(!fp){
    printf("file doesnt exist\n");
}
if(!fp2){
    printf("file doesnt exist\n");
}
fscanf(fp,"%d %d %d", &r, &c, &odds);
n = r *c;
int* matrix= (int*)malloc(r*c* sizeof(int));

for(int i = 0; i < n; i++)
{
    fscanf(fp,"%d",&matrix[i]);
}

if(odds == 0){
for(int i = 0; i < n; i++){

    if(i%2==0){
    matrix[i] = i;
    }
}
}else if(odds == 1){
   for(int i = 0; i < n; i++){

    if(i%2!=0){
    matrix[i] =  ;
    }
} 
}




for(i = 0;i < n; i++)
{    
        if(i % s == 0 ){
        fprintf(fp2,"\n");
        }
        fprintf(fp2,"%d ",matrix[i]);



}
    fclose(fp);
    fclose(fp2);
return 0;

}

그리고 내 문제는 여기에서 발생하는 cols를 뒤로하는 것입니다.

if(odds == 0){
for(int i = 0; i < n; i++){

    if(i%2==0){
    matrix[i] = i;
    }
}
}else if(odds == 1){
   for(int i = 0; i < n; i++){

    if(i%2!=0){
    matrix[i] =  ;
    }
} 
}

첫 번째는 짝수 열을 거꾸로 인쇄하는 것이고 두 번째는 홀수 열을위한 것이고 여러분이 볼 수 있듯이 매트릭스는 내 생각이 아닌 일반 배열로 표현되는 내 프로그램에 있지만 교사이므로 이렇게 작동해야합니다

1 2 3|4 5 6|7 8 9  ----> 7 2 9|4 5 6|1 8 3

좋아, 방금지도 인덱싱에 대해 알아 냈으므로 이제 배열의 각 위치는 matrix [j + (i * r)]로 표시됩니다. 예를 들어 위의 3x3 행렬에서 첫 번째 위치는 다음과 같습니다. matrix [1+ (0 * 3)], 4 번째 위치는 행렬 [1+ (1 * 3)] 등이됩니다.

이제 내 질문은 열의 반대 위치를 인덱싱하는 방법입니다.

코드 업데이트 :

for(int i = 0; i < r; i++){

    for(int j = 1; j < c; j++){
        if(i%2!=0){
            matrix[j+i*r] = ....;
    }

}
}
pxl9588

두 경우 모두 matrix [i]를 행렬에서 더 위쪽에있는 요소로 대체하려고합니다.

n n
1 2 3
4 5 6
7 8 9

홀수 값을 대체하는이 예에서는 1과 7을 전환해야합니다. 인덱스의 차이는 6입니다. 그러나 이것은 행렬 차원에 따라 다릅니다. 일반 공식은 다음과 같습니다.

n^2 - n - r*(2n) + i

여기서 r은 현재 행입니다. 행렬을 뒤집기 때문에 (nn % 2) / 2까지만 행을 수행하면됩니다.

여기에 몇 가지 파이썬 코드가 있습니다.

for i in range(0,int((matrixdim-matrixdim%2)/2)*matrixdim):     
    if ((i-r)%2) == 0:
        temp = matrix[i]
        matrix[i] = matrix[matrixdim*matrixdim - matrixdim - r*2*matrixdim + i]
        matrix[matrixdim*matrixdim - matrixdim - r*2*matrixdim + i] = temp

    if ((i+1)%matrixdim) == 0:
        r += 1

i, j 표기법 사용

for i in range(0,int((matrixdim-matrixdim%2)/2)):
    for j in range(0, matrixdim):
        pos = j + matrixdim*i
        temp = matrix[pos]

        if j%2 == even:
            matrix[pos] = matrix[matrixdim*matrixdim - matrixdim - i*2*matrixdim + pos]
            matrix[matrixdim*matrixdim - matrixdim - i*2*matrixdim + pos] = temp 

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

nd numpy 배열을 2d 행렬로 인쇄 (시각화)하는 방법은 무엇입니까?

분류에서Dev

DataFrame의 열을 인덱싱 된 이진 행렬로 재배 열하는 방법은 무엇입니까?

분류에서Dev

awk로 열을 인쇄하고 동시에 하나의 열만 편집하는 방법은 무엇입니까?

분류에서Dev

Django 템플릿에서 특정 형식으로 행렬의 numpy 배열을 표시하는 방법은 무엇입니까?

분류에서Dev

줄리아에서 행렬을 문자열로 예쁘게 인쇄하는 방법은 무엇입니까?

분류에서Dev

소수점 뒤에 다른 자릿수로 배열을 인쇄하는 방법은 무엇입니까?

분류에서Dev

정렬 된 배열을 PHP에서 regulrar 배열로 바꾸는 방법은 무엇입니까?

분류에서Dev

직렬화 된 데이터로 구성된 배열을 표시하는 방법은 무엇입니까?

분류에서Dev

Big-O (N) 시간에 3 개의 정렬 된 배열을 1 개의 정렬 된 배열로 병합하는 방법은 무엇입니까?

분류에서Dev

모든 배열 값을 한 번에 임의의 순서로 표시하는 방법은 무엇입니까?

분류에서Dev

Common Lisp에서 구조의 평면화 된 배열을 C로 할당하는 방법은 무엇입니까?

분류에서Dev

행렬에서 열을 행으로 재배 열하는 방법은 무엇입니까?

분류에서Dev

C #에서 short [] 배열의 숫자에서 쉼표로 구분 된 문자열을 만드는 가장 좋은 방법은 무엇입니까?

분류에서Dev

OpenCV 2D 행렬을 C ++에서 1D 배열로 변환하는 방법은 무엇입니까?

분류에서Dev

Javascript에서 배열을 쉼표로 구분 된 값과 일치시키는 방법은 무엇입니까?

분류에서Dev

배열 배열을 행렬로 변환하는 방법은 무엇입니까?

분류에서Dev

쉼표로 구분 된 문자열에서 배열을 만들고 낮은 순서로 정렬 한 다음 다시 쉼표로 구분 된 문자열로 결합하는 방법은 무엇입니까?

분류에서Dev

처음에 기사 (a, an, the)를 무시하고 PHP로 배열을 정렬하는 방법은 무엇입니까?

분류에서Dev

C ++에서 배열의 할당 된 요소 만 인쇄하는 방법은 무엇입니까?

분류에서Dev

두 열의 값으로 cpp에서 2D 배열을 정렬하는 방법은 무엇입니까?

분류에서Dev

그래픽 창에 표시된 순서대로 Mac 터미널의 폴더에 파일 이름을 인쇄하는 방법은 무엇입니까?

분류에서Dev

행렬의 값을 열 / 행 이름에 따라 다른 행렬로 바꾸는 방법은 무엇입니까?

분류에서Dev

PHP의 배열을 쉼표로 구분 된 문자열로 변환하는 방법은 무엇입니까?

분류에서Dev

각 배열의 값을 더 큰 배열로 표시하는 방법은 무엇입니까?

분류에서Dev

0 3D 배열을 2D 행렬에 지정된 임의의 수로 채우는 방법은 무엇입니까?

분류에서Dev

Bash에서 TAB으로 구분 된 문자열을 인쇄하는 방법은 무엇입니까?

분류에서Dev

문자열 배열로 구성된 배열 목록을 정렬하는 방법은 무엇입니까?

분류에서Dev

PHP에서 "배열 형식의 문자열"을 배열로 변환하는 방법은 무엇입니까?

분류에서Dev

PHP 배열을 소스 코드에 표시된 배열과 똑같은 문자열로 변환하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    nd numpy 배열을 2d 행렬로 인쇄 (시각화)하는 방법은 무엇입니까?

  2. 2

    DataFrame의 열을 인덱싱 된 이진 행렬로 재배 열하는 방법은 무엇입니까?

  3. 3

    awk로 열을 인쇄하고 동시에 하나의 열만 편집하는 방법은 무엇입니까?

  4. 4

    Django 템플릿에서 특정 형식으로 행렬의 numpy 배열을 표시하는 방법은 무엇입니까?

  5. 5

    줄리아에서 행렬을 문자열로 예쁘게 인쇄하는 방법은 무엇입니까?

  6. 6

    소수점 뒤에 다른 자릿수로 배열을 인쇄하는 방법은 무엇입니까?

  7. 7

    정렬 된 배열을 PHP에서 regulrar 배열로 바꾸는 방법은 무엇입니까?

  8. 8

    직렬화 된 데이터로 구성된 배열을 표시하는 방법은 무엇입니까?

  9. 9

    Big-O (N) 시간에 3 개의 정렬 된 배열을 1 개의 정렬 된 배열로 병합하는 방법은 무엇입니까?

  10. 10

    모든 배열 값을 한 번에 임의의 순서로 표시하는 방법은 무엇입니까?

  11. 11

    Common Lisp에서 구조의 평면화 된 배열을 C로 할당하는 방법은 무엇입니까?

  12. 12

    행렬에서 열을 행으로 재배 열하는 방법은 무엇입니까?

  13. 13

    C #에서 short [] 배열의 숫자에서 쉼표로 구분 된 문자열을 만드는 가장 좋은 방법은 무엇입니까?

  14. 14

    OpenCV 2D 행렬을 C ++에서 1D 배열로 변환하는 방법은 무엇입니까?

  15. 15

    Javascript에서 배열을 쉼표로 구분 된 값과 일치시키는 방법은 무엇입니까?

  16. 16

    배열 배열을 행렬로 변환하는 방법은 무엇입니까?

  17. 17

    쉼표로 구분 된 문자열에서 배열을 만들고 낮은 순서로 정렬 한 다음 다시 쉼표로 구분 된 문자열로 결합하는 방법은 무엇입니까?

  18. 18

    처음에 기사 (a, an, the)를 무시하고 PHP로 배열을 정렬하는 방법은 무엇입니까?

  19. 19

    C ++에서 배열의 할당 된 요소 만 인쇄하는 방법은 무엇입니까?

  20. 20

    두 열의 값으로 cpp에서 2D 배열을 정렬하는 방법은 무엇입니까?

  21. 21

    그래픽 창에 표시된 순서대로 Mac 터미널의 폴더에 파일 이름을 인쇄하는 방법은 무엇입니까?

  22. 22

    행렬의 값을 열 / 행 이름에 따라 다른 행렬로 바꾸는 방법은 무엇입니까?

  23. 23

    PHP의 배열을 쉼표로 구분 된 문자열로 변환하는 방법은 무엇입니까?

  24. 24

    각 배열의 값을 더 큰 배열로 표시하는 방법은 무엇입니까?

  25. 25

    0 3D 배열을 2D 행렬에 지정된 임의의 수로 채우는 방법은 무엇입니까?

  26. 26

    Bash에서 TAB으로 구분 된 문자열을 인쇄하는 방법은 무엇입니까?

  27. 27

    문자열 배열로 구성된 배열 목록을 정렬하는 방법은 무엇입니까?

  28. 28

    PHP에서 "배열 형식의 문자열"을 배열로 변환하는 방법은 무엇입니까?

  29. 29

    PHP 배열을 소스 코드에 표시된 배열과 똑같은 문자열로 변환하는 방법은 무엇입니까?

뜨겁다태그

보관