주어진 실수의 2차원 배열. 2차원 배열로 문제를 해결하는 예, 독립 솔루션에 대한 문제 주어진 정수의 2차원 배열

학생들을 위한 또 다른 컴퓨터 공학 과제가 제 시간에 도착했습니다. 이번에는 C++에서 2차원 배열로 작업하는 방법을 살펴보겠습니다. 이러한 작업은 매우 흥미 롭습니다. 그리고 나는 그들 중 대부분을 좋아했습니다.

문제 번호 1

최대 요소가 처음 나타나는 인덱스를 찾습니다.
입력 데이터 형식
프로그램은 배열 n과 m의 차원을 입력으로 받은 다음 각각에 m개의 숫자가 있는 n줄을 받습니다. n과 m은 100을 초과하지 않습니다.
출력 데이터 형식
2차원 배열에서 가장 큰 요소를 포함하는 행 번호와 열 번호의 두 숫자를 인쇄합니다. 이러한 요소가 여러 개 있으면 행 번호가 낮은 항목이 표시되고 행 번호가 같으면 열 번호가 낮은 항목이 표시됩니다.

샘플 입력: 3 4 0 3 2 4 2 3 5 5 5 1 2 3 샘플 출력: 1 2

#포함하다 네임스페이스 std 사용 int main () (int n, m; cin >> n >> m; int a; // 읽기 (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { cin >> a [i] [j]; )) int max = a, max_i = 0, max_j = 0; (int 나는 = 0; 나는< n; i++) { for (int j = 0; j < m; j++) { if (a[i][j] >최대) (최대 = a [i] [j]; max_i = i; max_j = j;))) cout<< max_i << " " << max_j; return 0; }

문제 번호 2

주어진 홀수 n이 15를 초과하지 않습니다. n × n 요소의 2차원 배열을 만들고 "."로 채웁니다. (배열의 각 요소는 단일 문자열입니다). 그런 다음 배열의 중간 행, 배열의 중간 열, 주 대각선 및 측면 대각선을 "*" 문자로 채웁니다. 결과적으로 배열의 "*"는 별표 이미지를 형성해야 합니다. 결과 배열을 화면에 인쇄하고 배열 요소를 공백으로 구분합니다.

샘플 입력: 5 샘플 출력: * . * . * . * * * . * * * * * . * * * . * . * . *

#포함하다 네임스페이스 std 사용 int main() (int n; cin >>< n; i++) { for (int j = 0; j < n; j++) { if (i == j || i == n - 1 - j || i == n / 2 || j == n / 2) a[i][j] = 1; else a[i][j] = 0; } } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (a[i][j] == 0) cout << "." << " "; else cout << "*" << " "; } cout << endl; } return 0; }

문제 번호 3

100을 초과하지 않는 숫자 n이 주어집니다. n × n 배열을 만들고 다음 규칙에 따라 채우십시오. 주 대각선에는 숫자 0이 포함되어야 합니다. 주 대각선에 인접한 두 대각선에는 숫자 1이 표시됩니다. 다음 두 대각선에는 숫자 2가 표시되는 방식입니다.

샘플 입력: 5 샘플 출력: 0 1 2 3 4 1 0 1 2 3 2 1 0 1 2 3 2 1 0 1 4 3 2 1 0

#포함하다 #포함하다 네임스페이스 std 사용 int main () (int n; cin >> n; int a; // (int i = 0; i에 대한 처리)< n; i++) { for (int j = 0; j < n; j++) { a[i][j] = (int) abs(i - j); } } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cout << a[i][j] << " "; } cout << endl; } return 0; }

문제 번호 4

주어진 2차원 배열과 두 개의 숫자: i와 j. 배열에서 i와 j로 번호가 매겨진 열을 바꿉니다.
입력 데이터 형식
프로그램은 100을 초과하지 않는 배열 n과 m의 크기를 입력으로 받은 다음 배열의 요소를 입력한 다음 숫자 i와 j를 받습니다.
출력 데이터 형식
결과를 출력합니다.

샘플 입력: 0 1 샘플 출력: 12 11 13 14 22 21 23 24 32 31 33 34

#포함하다 #포함하다 네임스페이스 std 사용 int main() (int n, m, x, y, temp; cin >> n >>< n; i++) { for (int j = 0; j < m; j++) { cin >> a [i] [j]; )) cin >> x >> y; // 처리 (int i = 0; i< n; i++) { temp = a[i][x]; a[i][x] = a[i][y]; a[i][y] = temp; } // вывод for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cout << a[i][j] << " "; } cout << endl; } return 0; }

문제 번호 5

10을 초과하지 않는 숫자 n과 n × n 배열이 제공됩니다. 이 배열이 주 대각선에 대해 대칭인지 확인하십시오. 배열이 대칭이면 "YES"라는 단어를 인쇄하고 그렇지 않으면 단어 "NO"를 인쇄합니다.

샘플 입력: 3 0 1 2 1 2 3 2 3 4 샘플 출력:

#포함하다 #포함하다 네임스페이스 std 사용 int main () (int n; bool symmetric; cin >> n; int a; // 채우기 (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { cin >> a [i] [j]; )) // 대칭 처리 = true; (int 나는 = 0; 나는< n; i++) { for (int j = 0; j < n; j++) { if (a[i][j] != a[j][i]) symmetric = false; } } // вывод if (symmetric) cout << "YES"; else cout << "NO"; return 0; }

문제 번호 6

크기가 n × n이고 숫자가 k인 정사각형 2차원 배열이 제공됩니다. 주 대각선 아래에 k번째 대각선의 요소를 인쇄합니다(즉, k = 1이면 주 대각선 아래에 첫 번째 대각선의 요소를 인쇄해야 하고, k = 2이면 두 번째 대각선 등).
k 값은 음수일 수 있습니다. 예를 들어 k = −1이면 주 대각선 위에 있는 첫 번째 대각선 값을 출력해야 합니다. k = 0이면 주대각선의 요소를 표시해야 합니다.
프로그램은 10을 초과하지 않는 숫자 n을 입력으로 받은 다음 크기가 n × n인 배열을 받은 다음 숫자 k를 받습니다.

샘플 입력 1: 4 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 1 샘플 출력 1: 5 1 6 샘플 입력 2: 4 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 -2 샘플 출력 2: 3 8

#포함하다 네임스페이스 std 사용 int main () (int n, k; cin >> n; int a [n] [n]; // 채우기 (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { cin >> a [i] [j]; )) cin >> k; // 처리 및 출력 for (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { if (i - j - k == 0) cout << a[i][j] << " "; } } return 0; }

문제 번호 7

n × m 2차원 배열이 주어집니다(n과 m은 1000을 초과하지 않음). 주대각선에 대해 대칭인 배열을 주어진 배열로 전치(transposed)라고 합니다. 차원은 m × n입니다. 원래 배열의 행은 전치된 배열의 열이 되고 원래 배열의 열은 전치된 배열의 행이 됩니다.
주어진 배열에 대해 전치된 배열을 만들고 표시합니다.

샘플 입력: 3 4 11 12 13 14 21 22 23 24 31 32 33 34 샘플 출력: 11 21 31 12 22 32 13 23 33 14 24 34

#포함하다 네임스페이스 std 사용 int main() (int n, m, x, y, temp; cin >> n >>< n; i++) { for (int j = 0; j < m; j++) { cin >> < n; i++) { for (int j = 0; j < m; j++) { b[j][i] = a[i][j]; } } // вывод for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { cout << b[i][j] << " "; } cout << endl; } return 0; }

문제 번호 8

영화관에는 각각 m개의 좌석이 있는 n개의 행이 있습니다(n과 m은 20을 초과하지 않음). 판매된 티켓에 대한 정보는 2차원 배열로 저장되며 숫자 1은 해당 좌석의 티켓이 이미 판매되었음을 의미하고 숫자 0은 좌석이 비어 있음을 의미합니다. 같은 행의 인접한 좌석에 대해 k개의 티켓을 판매하라는 요청이 있습니다. 그러한 요청이 이행될 수 있는지 확인하십시오.
입력 데이터 형식
프로그램은 숫자 n과 m을 입력으로 받습니다. 그런 다음 공백으로 구분된 m개의 숫자(0 또는 1)를 포함하는 n개의 줄이 이어집니다. 그런 다음 숫자 k가 제공됩니다.
출력 데이터 형식
프로그램은 k개의 연속적인 여유 공간이 있는 행의 번호를 인쇄해야 합니다. 이러한 행이 여러 개 있는 경우 가장 작은 적합한 행의 번호를 출력합니다. 적절한 시리즈가 없으면 숫자 0을 인쇄하십시오.

샘플 입력: 3 4 0 1 0 1 1 0 0 1 1 1 1 1 2 샘플 출력: 2

#포함하다 네임스페이스 std 사용 int main () (int n, m, k, r = 0; cin >> n >> m; int a [n] [m]; // 채우기 (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { cin >> a [i] [j]; )) cin >> k; // 처리 (int i = 0; i< n; i++) { int near_free = 0; for (int j = 0; j < m; j++) { if (a[i][j] == 0) { near_free++; if (near_free == k) { r = i + 1; break; } } else near_free = 0; } if (near_free == k) break; } // вывод cout << r; return 0; }

문제 번호 9

n × m 직사각형 배열이 주어집니다. 시계 방향으로 90도 회전하여 결과를 새로운 m × n 배열에 씁니다.
입력 데이터 형식
100을 초과하지 않는 두 개의 숫자 n과 m을 입력한 다음 크기가 n × m인 배열을 입력합니다.
출력 데이터 형식
결과 배열을 인쇄합니다. 출력의 숫자를 공백 하나로 구분합니다.

샘플 입력: 3 4 11 12 13 14 21 22 23 24 31 32 33 34 샘플 출력: 31 21 11 32 22 12 33 23 13 34 24 14

#포함하다 네임스페이스 std 사용 int main () (int n, m; cin >> n >> m; int a [n] [m]; int b [m] [n]; // 채우기 (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { cin >> a [i] [j]; )) // 처리 (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { b[j] = a[i][j]; } } // вывод for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { cout << b[i][j] << " "; } cout << endl; } return 0; }

문제 번호 10

숫자 n과 m이 주어지면 예제와 같이 "뱀"으로 1에서 n × m 사이의 숫자로 n × m 크기의 2차원 배열을 채웁니다.
입력 데이터 형식
각각 20을 초과하지 않는 두 개의 숫자 n과 m을 입력합니다.
출력 데이터 형식

샘플 입력: 3 5 샘플 출력: 1 2 3 4 5 10 9 8 7 6 11 12 13 14 15

#포함하다 네임스페이스 std 사용 int main () (int n, m, c = 0; cin >> n >> m; int a [n] [m]; // 처리 (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { c++; if (i%2 == 0) a[i][j] = c; else a[i] = c; } } // вывод for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (a[i][j] % 10 == a[i][j]) cout << " "; else if (a[i][j] % 100 == a[i][j]) cout << " "; else if (a[i][j] % 1000 == a[i][j]) cout << " "; cout << a[i][j]; } cout << endl; } return 0; }

문제 번호 11

숫자 n과 m이 주어지면 예제와 같이 "대각선"으로 1에서 n × m까지의 숫자로 n × m 2차원 배열을 채웁니다.
입력 데이터 형식

출력 데이터 형식
결과 배열을 출력하고 각 요소의 출력에 정확히 4자를 할당합니다.

샘플 입력: 3 5 샘플 출력: 1 2 4 7 10 3 5 8 11 13 6 9 12 14 15

#포함하다 네임스페이스 std 사용 int main () (int n, m, pos = 0, row = 0; cin >> n >> m; int a [n] [m]; // 처리 int start_row = 0; int number = 1; for( int 최소 행 = 0, 최소 행< n; min_row++) { if (min_row >0) 시작 행 = 위치 - 1; 그렇지 않으면 start_row = 0; for (pos = start_row; pos< m; pos++) { row = min_row; for (int col = pos; col >= 0; col--) (if(행< n) { a = number; number++; row++; } else break; } } } // вывод for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (a[i][j] % 10 == a[i][j]) cout << " "; else if (a[i][j] % 100 == a[i][j]) cout << " "; else if (a[i][j] % 1000 == a[i][j]) cout << " "; cout << a[i][j]; } cout << endl; } return 0; }

문제 번호 12

주어진 숫자 n과 m. 바둑판 패턴으로 n × m 배열을 채우십시오. 한 색상의 셀은 0으로 채워지고 다른 색상의 셀은 왼쪽에서 오른쪽으로 위에서 아래로 자연수로 채워집니다. 숫자 1은 왼쪽 상단 모서리에 기록됩니다.
입력 데이터 형식
100을 넘지 않는 두 개의 숫자 n과 m을 입력합니다.
출력 데이터 형식
결과 배열을 출력하고 각 요소의 출력에 정확히 4자를 할당합니다.

샘플 입력: 3 5 샘플 출력: 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8

#포함하다 네임스페이스 std 사용 int main () (int n, m, sm; cin >> n >> m; int a [n] [m]; // 처리 int number = 1; for (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { a[i][j] = 0; } } for (int i = 0; i < n; i++) { if (i % 2 == 1) sm = 1; else sm = 0; for (int j = sm; j < m; j++) { a[i][j] = number; number++; j++; } } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (a[i][j] % 10 == a[i][j]) cout << " "; else if (a[i][j] % 100 == a[i][j]) cout << " "; else if (a[i][j] % 1000 == a[i][j]) cout << " "; cout << a[i][j]; } cout << endl; } return 0; }

문제 번호 13

숫자 n과 m이 주어지면 예제와 같이 왼쪽 상단 모서리에서 시작하여 시계 방향으로 꼬인 나선형으로 n × m 2차원 배열을 1에서 n × m까지의 숫자로 채웁니다.
입력 데이터 형식
100을 넘지 않는 두 개의 숫자 n과 m을 입력합니다.
출력 데이터 형식
결과 배열을 출력하고 각 요소의 출력에 정확히 4자를 할당합니다.

샘플 입력: 4 5 샘플 출력: 1 2 3 4 5 14 15 16 17 6 13 20 19 18 7 12 11 10 9 8

#포함하다 네임스페이스 std 사용 int main() (int n, m, cin >> n >> m, int a, for (int i = 0, i<= n + 1; i++) { for (int j = 0; j <= m + 1; j++) { a[i][j] = -1; } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { a[i][j] = 0; } } int num = 0, row = 1, col = 0; while (num < n * m) { while (a == 0) { col++; num++; a = num; } while (a == 0) { row++; num++; a = num; } while (a == 0) { col--; num++; a = num; } while (a == 0) { row--; num++; a = num; } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { if (a[i][j] % 10 == a[i][j]) cout << " "; else if (a[i][j] % 100 == a[i][j]) cout << " "; else if (a[i][j] % 1000 == a[i][j]) cout << " "; cout << a[i][j]; } cout << endl; } return 0; }

0 0

보려면 JavaScript를 활성화하십시오
  • 교육적: 2차원 배열의 아이디어와 정사각형 행렬의 기본 속성 형성에 기여합니다. 행렬에 대해 수행할 수 있는 작업을 고려합니다. Pascal 언어로 행렬을 처리하기 위한 일반적인 알고리즘에 대해 알아봅니다. 2차원 배열로 알고리즘을 풀 수 있는 능력을 형성하기 위한 조건을 만듭니다.
  • 개발 중:
  • 제한된 시간에 작업할 수 있는 기술 개발, 독립적인 작업을 위한 기술 개발, 메모 작업을 위한 기술 개발을 위한 조건을 만듭니다.
  • 교육적인:
  • 교실에서의 업무에 대한 심리적 안정감 조성, 평정심, 업무에 대한 책임감 함양, 교육 활동에 대한 동기 부여에 기여합니다.

수업 유형: 결합.

교육 방법 : 강의, 독립적 인 작업.

조직 형태: 정면 작업, 개별 작업.

장비: 교실에서의 작업을 위한 과제(개별 카드, 컴퓨터 과제), 칠판에 적힌 메모.

수업 중:

1. 조직적 순간.

인사말.
주제가 보고됩니다.
수업과 작업의 목표를 설정합니다.

2. 습득한 지식의 실현

이전 주제의 요점은 "1차원 배열"로 구두로 설명됩니다. 기본 정의에 대한 정면 미니 설문 조사.

3. 목표 설정, 목표 설정:

  • 2차원 배열의 개념을 정의합니다.
  • 2차원 배열의 표기법을 고려하십시오.
  • 정사각형 행렬의 기본 속성을 고려하십시오.
  • 행렬에 대해 수행할 수 있는 작업을 고려합니다.
  • Pascal 언어로 행렬을 처리하기 위한 일반적인 알고리즘에 익숙해집니다.
  • 2차원 배열로 알고리즘을 풀 수 있는 능력을 형성하기 위한 조건을 만듭니다.
  • 4. 강의

    정의.

    2차원 배열은 데이터 모음이며, 각 값은 행렬의 열 인덱스로 생각할 수 있는 두 개의 숫자에 의존합니다.

    녹음 형식

    <имя>: 정렬[n_index_1..in_index_1, n_index_2 ..in_index_2] NS <тип>

    A: 정수 배열;

    배열의 요소를 사용하려면 배열의 이름과 요소의 인덱스를 지정해야 합니다. 첫 번째 인덱스는 행 번호에 해당하고 두 번째 인덱스는 열 번호에 해당합니다. 예를 들어:

    i에 대해: = 1에서 n까지
    j에 대해: = 1에서 n까지
    a: = 무작위(100);

    2차원 배열을 초기화할 때 각 줄은 추가 괄호 쌍으로 묶입니다.

    const a: mas = ((2,3,1,0),
    (1,9,1,3),
    (3,5,7,0));

    행렬은 수학의 파스칼 배열과 유사합니다. 행의 수가 열의 수와 같은 행렬을 정사각형이라고 합니다. A (n, n) - 정방 행렬

    정사각형 행렬의 기본 속성:

    1. 정사각형 행렬에는 주대각선과 측면 대각선이 있습니다. 예를 들어, 행렬 A의 경우 주대각선은 요소 1,5, 9를 포함하고 보조 대각선은 3, 5 및 7을 포함합니다.

    i = j - 요소는 주 대각선에 위치합니다.
    i> j - 요소는 주 대각선 아래에 있습니다.
    NS 나는?j - 요소는 주 대각선 아래에 위치합니다.
    i + j = n + 1– 요소는 측면 대각선에 위치합니다.
    나는 + 제< n+1– элементы расположены над побочной диагональю;
    i + j> n + 1– 요소는 측면 대각선 아래에 있습니다.

    2. 주대각선의 요소를 제외한 모든 요소가 0인 정사각형 행렬을 대각 행렬

    3. 주대각선의 모든 요소가 1인 대각 행렬을 단위 행렬

    4. 행렬 A(m, n)의 행과 열이 서로 바뀌면 행렬 A t(m, n)이 얻어지며 이를 전치 행렬이라고 합니다.

    행렬에 대해 수행할 수 있는 기본 작업

    • 요약하다;
    • 차이점을 찾으십시오.
    • 어떤 수에 의한 행렬의 곱;
    • 두 행렬의 곱.

    Pascal 언어로 행렬을 처리하기 위한 일반적인 알고리즘

    1. 테이블 형식의 행렬 출력:
    2. i에 대해: = 1에서 n까지
      시작하다
      j에 대해: = 1에서 m까지
      쓰기 (a: 4);
      쓰기
      끝;

    3. 난수 생성기 사용:
    4. 무작위화하다;
      i에 대해: = 1 ~ m do
      시작하다
      j에 대해: = 1에서 n까지
      시작하다
      a: = 무작위 (100) -10;
      쓰기 (a: 4);
      끝;
      쓰기;
      끝;

    5. 행렬을 테이블 형태로 출력하는 두 번째 방법:
    6. i에 대해: = 1에서 n까지
      j에 대해: = 1에서 m까지
      j> m이면 (a:4)
      그렇지 않으면 writeln (a: 4);

    7. 행렬 요약:
    8. i에 대해: = 1에서 n까지
      시작하다
      j에 대해: = 1에서 m까지
      c: = a + b
      끝;

    9. 행렬 전치는 주 대각선을 기준으로 요소의 거울 이미지입니다. 이것은 새 배열을 도입하여 수행할 수 있습니다.

    i에 대해: = 1에서 n까지
    j에 대해: = 1에서 n까지
    b = 에이;

    5. 1차 통제

    "등고선 지도" 2 옵션

    옵션 1

    1. 2차원 배열에 대한 설명의 부정확성을 수정합니다.
    2. 바르
      A = 정수 배열;

      ... ... 2차원 배열의 경우 각 줄은 추가 괄호 쌍으로 묶입니다.

      const a: mas = ((2,3,1,0),
      (1,9,1,3),
      (3,5,7,0));

    3. 누락된 정의 삽입:
    4. 행렬에 대해 수행할 수 있는 주요 작업: 합산, 두 행렬의 곱,….,…

    5. 누락된 정의 삽입:
    6. 행의 수가 열의 수와 같은 행렬을 …이라고 합니다. ... ...

    7. 알고리즘에서 오류 찾기:

    i에 대해: = 1에서 n까지
    시작하다
    j에 대해: = 1에서 m까지
    c: = a + a
    끝;

    옵션 2

    1. 어레이 설명의 부정확성을 수정합니다.

    상수
    n = 4; m = 3;
    유형
    mas: 정수 배열;

    1. 누락된 정의 삽입:
    2. …… 데이터 모음이며, 각 값은 두 개의 숫자에 의존하며, 행렬의 열 인덱스로 간주될 수 있습니다.

    3. 누락된 정의 삽입:
    4. 주대각선의 모든 요소가 ...와 같은 대각 행렬을 호출합니다. 단위 행렬

    5. 누락된 정의 삽입:
    6. 주대각선의 요소를 제외한 모든 요소가 0인 정사각형 행렬을 … … .

    7. 알고리즘에서 오류 찾기:

    무작위화하다;
    i에 대해: = 1 ~ m do
    시작하다
    j에 대해: = 1에서 n까지
    시작하다
    a: = 무작위 (100) -10;
    끝;
    끝;

    알고리즘이 수행하는 일반적인 작업은 무엇입니까?

    파스칼 알고리즘

    1. 3x4 정수 행렬에 대해 해당 요소의 산술 평균과 각 행의 양수 요소 수를 결정하는 프로그램을 작성하십시오. 부록 2
    2. 프로그램 sred_n;
      상수 m = 3;
      n = 4;
      var

      i, j, n_pos_el: 정수;
      sred: 진짜;
      시작하다
      i에 대해: = 1 ~ m do
      j에 대해: = 1에서 n은 (a)를 읽습니다.
      sred: = 0;
      for i: = 1부터 m까지 시작
      n_pos_el: = 0;
      j: = 1 ~ n 시작
      sred: = sred + a;
      a> 0이면 inc(n_pos_el);
      끝;
      writeln("V", i, "-oi 스트로크", n_pos_el, "polozitelnix elementov");
      끝;
      sred: = sred / m / n;
      writeln("Srednee arifmeticheskoe:", sred: 6:2);
      끝.

    3. 직사각형 3x4 정수 행렬에 대해 양수 요소만 포함하는 가장 왼쪽 열의 수를 결정하는 프로그램을 작성하십시오. 해당 열이 없으면 메시지가 표시됩니다. 부록 3

    프로그램 num_posit;
    상수 m = 3;
    n = 4;
    var
    a: 정수 배열;
    i, j, num: 정수;
    all_posit: 부울;
    시작하다
    무작위화하다;
    i에 대해: = 1 ~ m do
    시작하다
    j에 대해: = 1에서 n까지
    시작하다
    a: = 무작위 (100) -10;
    쓰기 (a: 4);
    끝;
    쓰기;
    끝;
    숫자: = 0;
    j: = 1 ~ n 시작
    all_posit: = 참;
    i에 대해: = 1 ~ m do
    만약< 0 then
    시작하다
    all_posit: = 거짓;
    부서지다; 끝;
    all_posit 경우 시작
    숫자: = j; 부서지다; 끝;
    끝;
    숫자 = 0이면
    writeln("Takix stolbcov net")
    또 다른
    writeln("Nomer stolbca:", num);
    끝.

    학생들은 Pascal로 파일을 업로드하고, 주어진 알고리즘을 분석하고, 프로그램 실행 결과를 보고, 추가 질문에 답합니다.

    1. 2차원 배열은 어떻게 구성되어 있습니까?
    2. Inc 절차는 무엇을 의미합니까?
    3. 중단 절차는 무엇을 의미합니까?
    4. 난수 생성기는 어떻게 사용됩니까?

    6. 문제 해결 능력의 형성.

    알고리즘 환경에서 개별 카드의 문제를 독립적으로 해결합니다.

    작업의 예:

    1. 임의의 요소를 포함하는 5x5 행렬 A가 제공됩니다. 행렬의 모든 요소의 합을 찾습니다.
    2. 피타고라스 표를 표시합니다.
    3. 행렬 A 5x5 정수의 지정된 열에 있는 양수 요소의 합을 찾습니다.

    7. 수업 요약, 숙제 설정.

    요약. 동화 수준 평가.

    D / Z 개요, 작업:

    모든:

    1. 2차원 정사각형 배열이 제공됩니다. 모든 요소가 0인 줄 번호를 찾습니다.
    2. 2차원 정사각형 배열이 제공됩니다. 각각의 요소가 동일한 행 번호를 찾으십시오.
    3. 2차원 배열의 최소 요소를 결정합니다. 최소 요소의 최대 수를 포함하는 행 번호를 인쇄합니다(있는 경우).
    4. 주어진 2차원 배열. 항목의 합이 가장 큰 행과 가장 작은 행을 찾습니다. 찾은 선과 해당 요소의 합을 표시합니다.

    2차원 배열에 대한 이해와 해결 방법을 알고 있는 학생:

    강의 대신 - 복잡성 증가 문제 해결.

    작업의 예:

    1. 주어진 2차원 배열. 다음 규칙에 따라 변환합니다. 숫자 N이 있는 행을 숫자 N이 있는 열로, 행이 있는 열을 만듭니다.
    2. 2차원 배열 X에서 모든 숫자는 고유합니다. 각 줄에서 최소 요소를 선택한 다음 이 숫자 중에서 최대 요소를 선택합니다. 선택한 숫자가 있는 배열 X의 줄 번호를 인쇄합니다.
    3. 주어진 2차원 배열. 첫 번째 행과 마지막 행의 요소 값 중 가장 큰 값을 찾으십시오.
    4. 키보드에서 2차원 배열을 한 줄씩 인쇄하고 열별로 요소의 합을 계산하는 프로그램을 작성하십시오.
    5. 정방 행렬의 대각선 요소의 합을 계산하는 프로그램을 작성하십시오.

    C(C) 언어로 2차원 배열을 처리하는 문제를 해결하기 위한 학교 및 대학의 실험실 작업. 실험실 작업 목록(링크를 클릭하면 문제 해결 방법으로 연결됨):

    추가 작업:

    모든 프로그램의 성능은 CodeBlocks 16.01(MinGW, Windows 10)에서 테스트되었습니다. 페이지 하단의 의견에서 해결되지 않은 프로그램에 대한 솔루션과 기존 프로그램을 개선하기 위한 제안을 제공할 수 있습니다.

    아카이브에서 실험실 파일과 프로그램의 모든 소스 코드를 다운로드하십시오.


    C ++ 및 기타 여러 분야에서 실험실 작업에 대한 솔루션을 주문할 수도 있습니다.

    # 1: 주어진 2차원 배열. 문자열 요소의 최소 합을 찾습니다. 추가 1차원 배열을 사용하지 않고 문제를 풉니다.

    #포함하다 #포함하다 #포함하다 int main() (int * arr; int x, y, i, j, sum = 0, min = 0, minstr = 0; srand(시간(NULL)), x = 2 + rand()% 10, y = 2 + 랜드()% 6; arr = (int *) malloc(x * y * sizeof(int)); printf("배열% dx% d: \n", x, y); for (i = 0; NS

    # 2: 배열에 있는 모든 요소의 평균에 가장 가까운 요소의 좌표를 결정합니다.

    #포함하다 #포함하다 #포함하다 #포함하다 int main() (int * arr; int x, y, i, j, minx = 0, miny = 0, float ssum = 0, srand(시간(NULL)), x = 1 + rand()% 10, y = 1 + 랜드()% 7; arr = (int *) malloc(x * y * sizeof(int)); printf("배열% dx% d: \n", x, y); for (i = 0 ; NS

    # 9: 짝수 열의 2차원 배열이 주어집니다. 배열의 왼쪽 절반의 열은 오른쪽 절반의 열과 교환됩니다.

    #포함하다 #포함하다 #포함하다 int main() (int * arr; int x, y, i, j, d; srand(시간(NULL)), x = 1 + 랜드()% 10, y = 2 * (1 + 랜드()% 3 ); arr = (int *) malloc (x * y * sizeof (int)); printf ("배열% dx% d: \n", x, y); for (i = 0; i

    №14: 2차원 배열의 각 행에 대해 마지막 자릿수가 a와 같은 요소의 수를 찾습니다.

    #포함하다 #포함하다 #포함하다 int main() (int * arr; int x, y, i, j, a, count; srand(시간(NULL)), printf("입력 a:"), scanf("% d", & a); x = 1 + 랜드()% 10, y = 1 + 랜드()% 7, arr = (int *) malloc(x * y * sizeof(int)), printf("대량% dx% d: \n" , x, y), (i = 0, 나는

    # 21: 주어진 2차원 배열 b. 행렬로 간주하여 전치 b.

    #포함하다 #포함하다 #포함하다 int main() (int * arr, * arrT, x, y, i, j; srand(시간(NULL)), x = 1 + rand()% 7, y = 1 + rand()% 7, arr = (int *) malloc (x * y * sizeof (int)), printf("Matrix% dx% d: \ n", x, y), for (i = 0, i

    # 1 (추가): 주어진 2차원 배열. 첫 번째 요소의 내림차순으로 줄을 정렬합니다.

    #포함하다 #포함하다 #포함하다 int main() (int * arr, x, y, i, j, k, d, 최대 = 0; srand(시간(NULL)), x = 1 + rand()% 10, y = 1 + rand() % 7; arr = (int *) malloc(x * y * sizeof(int)); printf("배열% dx% d: \n", x, y); for (i = 0; i * (arr + 최대 * y)) 최대 = j, (k = 0, k에 대해)

    # 2(추가): 주어진 정사각 행렬이 직교인지 결정합니다. 즉, 개별 문자열의 각 쌍의 내적은 0이고 각 문자열 자체의 내적은 1입니다.

    #포함하다 #포함하다 int main () (int * arr; int x, i, j, k, sum = 0; printf ("정사각 행렬의 크기를 입력하십시오:"); scanf ("% d", & x); arr = ( int *) malloc(x * x * sizeof(int)); printf("행렬의 요소를 입력하세요% dx% d: \n", x, x); for (i = 0; i

    # 3 (추가): 정사각형 2차원 배열이 주어집니다. 한 변에 평행한 각 대각선의 요소의 합을 찾으십시오.

    #포함하다 #포함하다 #포함하다 int main() (int * arr; int x, y, i, j, sum; srand(시간(NULL)); x = 2 + rand()% 6; arr = (int *) malloc(x * y * sizeof(int)); printf("배열% dx% d: \n", x, x); for (i = 0; i

    2D 어레이 작업

    1) 정수의 2차원 배열이 주어집니다. 프로그램 만들기:

    a) 배열의 오른쪽 상단에 위치한 요소를 표시하는 단계;

    b) 배열의 왼쪽 하단 모서리에 위치한 요소를 표시하는 단계;

    c) 배열의 두 번째 줄에 있는 임의의 요소를 표시하는 단계;

    d) 배열의 세 번째 열에 있는 임의의 요소를 표시하는 단계;

    e) 배열의 모든 요소를 ​​표시합니다.

    2) 2차원 정수 배열이 주어집니다. 교환:

    a) 오른쪽 상단 및 왼쪽 하단 모서리에 위치한 요소

    b) 오른쪽 하단 및 왼쪽 상단 모서리에 위치한 요소

    3) 2차원 정수 배열의 주대각선 요소가 위치한 선의 번호를 알고 있습니다. 이 요소의 값을 표시합니다.

    4) 표시(한 줄에):

    a) 배열의 주 대각선의 모든 요소

    b) 오른쪽 하단 모서리에 있는 요소부터 시작하여 배열의 주 대각선의 모든 요소.

    5) 정수 배열의 주대각선의 모든 요소 값을 0으로 바꿉니다.

    6) 정수 배열의 측면 대각선의 모든 요소 값을 100과 같은 값으로 바꿉니다.

    7) 결정:

    a) 배열의 주 대각선 요소의 합

    b) 배열의 측면 대각선 요소의 합;

    c) 배열의 주 대각선 요소의 산술 평균;

    d) 배열의 측면 대각선 요소의 산술 평균;

    e) 배열의 주 대각선의 최소(최대) 요소

    f) 실수 배열의 측면 대각선의 최대(최소) 요소

    g) 주 대각선의 첫 번째 최대 요소의 좌표

    h) 주 대각선의 첫 번째 최소 요소의 좌표.

    a) 배열의 다섯 번째 줄에 있는 모든 요소를 ​​표시합니다.

    b) 이 줄의 마지막 요소부터 시작하여 배열의 세 번째 줄에 있는 모든 요소를 ​​표시합니다.

    c) 배열의 s번째 열의 모든 요소를 ​​표시합니다.

    d) 배열의 두 번째 행에 있는 모든 요소의 값을 숫자 5로 바꿉니다.

    e) 다섯 번째 열의 모든 요소 값을 숫자 10으로 바꿉니다.

    f) 세 번째 열의 최대(최소) 요소를 결정합니다.

    9) 정수의 2차원 배열이 주어집니다. 프로그램 만들기:

    a) 배열의 임의의 행에 있는 두 요소의 곱 계산

    b) 배열의 모든 행에 있는 모든 요소의 합

    10) 정수의 2차원 배열이 주어집니다. 정의하다:

    a) a) 배열의 열에서 요소의 합이 첫 번째 또는 마지막에서 더 작습니다.

    b) b) 두 번째 또는 세 번째 라인에서 요소의 곱이 더 큰 라인.

    11) 10 x 10의 2차원 정수 배열이 주어지면 배열의 일부를 표시합니다.

    a) 주 대각선 위에 위치



    b) 주 대각선 아래에 위치;

    c) 측면 대각선 위에 위치

    d) 측면 대각선 아래에 위치;

    12) 정수의 2차원 배열이 주어졌을 때:

    a) 각 열에서 최대(최소) 요소를 찾습니다.

    b) 최대(최소) 요소의 좌표

    c) 각 열(행)에 있는 홀수 요소의 합

    d) A 또는 B의 배수인 요소의 수.

    e) 요소의 최대 합이 있는 선을 찾습니다.

    f) 요소의 최소 합이 있는 열을 찾습니다.

    주어진 2차원 배열 5x5. 요소의 입력을 구성하고 결과의 출력을 창 형식으로 구성합니다. 일시 중지 후 조건에 따라 지정된 요소가 저장되는 창의 색상을 변경합니다.

    작업 옵션:

    1.

    2.

    3.

    4.

    5.

    6.

    7.

    8.

    9.

    10.

    11. 주 대각선 위에 있는 요소의 곱을 찾습니다. 모든 홀수 요소를 찾은 숫자로 바꿉니다.

    12. 홀수 위치에 있는 요소의 합을 찾습니다(X ij 에 대한 인덱스(i + j)의 합은 홀수임). 모든 음수 요소를 찾은 숫자로 바꿉니다.

    13. 주 대각선에 있는 모든 요소의 곱을 찾으십시오. 다섯 번째 행과 두 번째 열의 모든 요소를 ​​찾은 숫자로 바꿉니다.

    14. 주 대각선에서 요소의 산술 평균과 측면 대각선에서 산술 평균을 찾으십시오. 대각선의 요소를 바꿉니다.

    15. 주 대각선 위에 있는 양수 요소의 산술 평균을 찾습니다. 모든 음수 요소를 찾은 숫자로 바꿉니다.

    16. 홀수 요소의 합을 찾습니다. 측면 대각선 위에 있는 모든 요소를 ​​찾은 숫자로 바꿉니다.

    17. i-행 및 j-열 요소의 곱을 찾습니다(i, j - 키보드에서 사전 입력). 보조 대각선 아래의 모든 요소를 ​​찾은 숫자로 바꿉니다.

    18. 짝수 위치에 있는 요소의 곱을 찾습니다(X ij에 대한 인덱스(i + j)의 합은 홀수임). 주 대각선의 모든 요소를 ​​찾은 숫자로 바꿉니다.

    19. 홀수 요소의 산술 평균을 찾으십시오. 측면 대각선의 모든 요소를 ​​찾은 숫자로 바꿉니다.

    20. 측면 대각선 위에 있는 모든 짝수 요소의 합을 찾습니다. 네 번째 줄의 모든 요소를 ​​찾은 숫자로 바꿉니다.

    21. 주 대각선 위에 있는 요소의 곱을 찾습니다. 모든 홀수 요소를 찾은 숫자로 바꿉니다.

    22. 홀수 위치에 있는 요소의 합을 찾습니다(X ij 에 대한 인덱스(i + j)의 합은 홀수임). 모든 음수 요소를 찾은 숫자로 바꿉니다.

    23. 주 대각선에 있는 모든 요소의 곱을 찾으십시오. 다섯 번째 행과 두 번째 열의 모든 요소를 ​​찾은 숫자로 바꿉니다.

    24. 주 대각선에서 요소의 산술 평균과 측면 대각선에서 산술 평균을 찾으십시오. 대각선의 요소를 바꿉니다.

    25. 주 대각선 위에 있는 양수 요소의 산술 평균을 찾습니다. 모든 음수 요소를 찾은 숫자로 바꿉니다.

    예: 주 대각선에 있는 요소의 산술 평균 찾기

    일시 중지 후:

    통제 질문

    1. 텍스트 모드란 무엇이며, 일반 모드와 어떻게 다른가요?

    2. 창이란 무엇입니까?

    3. 커서를 창의 지정된 좌표로 이동하는 방법은 무엇입니까?

    4. 글꼴/배경색은 어떻게 변경하나요?

    소개

    제어 및 자동화를 위한 최신 기술 장치는 이진 체계와 이진수 시스템을 널리 사용합니다. 논리 대수 이론은 조합 및 순차 스위칭 회로의 분석 및 합성에 사용됩니다.

    강의 자료는 3장으로 구성되어 있습니다. 첫 번째 장에서는 논리 대수학 이론의 기본 개념을 제시하고 다양한 부울 함수 표현 형식을 고려합니다. 두 번째 장은 이산 장치의 추상 합성의 기초가 되는 부울 함수의 표현을 최소화하는 문제에 전념합니다. 세 번째 장은 이산 소자의 구조적 합성의 기초가 되는 스위칭 회로를 기반으로 불리언 함수를 구현하는 방법에 대한 정보를 포함합니다.

    강의 노트를 작성할 때 다음 문헌이 사용되었습니다: for section 1.1 -; 섹션 1.2 -; 섹션 1.3 -; 섹션 2.1의 경우 -; 섹션 2.2의 경우 -; 섹션 3.1, 3.2 -.



    관련 기사: