Като се има предвид двуизмерен масив от реални числа. Примери за решаване на задачи с двумерни масиви, задачи за независимо решение Като се има предвид двуизмерен масив от цели числа

Още една порция задачи по компютърни науки за ученици пристигна навреме. Този път нека да разгледаме работата с двуизмерни масиви в C ++. Тези задачи са доста интересни. И повечето от тях ми харесаха.

Проблем номер 1

Намерете индексите за първото появяване на максималния елемент.
Формат за въвеждане на данни
Програмата получава като вход размерите на масива n и m, след това n редове с m числа във всеки. n и m не надвишават 100.
Формат на изходните данни
Отпечатайте две числа: номер на ред и номер на колона, съдържащ най-големия елемент в двуизмерния масив. Ако има няколко такива елемента, тогава се показва този с долния номер на ред, а ако номерата на редовете са равни, тогава този с долния номер на колоната.

Примерно въвеждане: 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 i = 0; i< n; i++) { for (int j = 0; j < m; j++) { if (a[i][j] >max) (max = a [i] [j]; max_i = i; max_j = j;))) cout<< max_i << " " << max_j; return 0; }

Проблем номер 2

Като се има предвид нечетно число n, което не надвишава 15. Създайте двуизмерен масив от n × n елементи, като го попълните с "." (всеки елемент от масива е низ от един символ). След това попълнете средния ред на масива, средната колона на масива, основния диагонал и страничния диагонал със знаци "*". В резултат на това "*" в масива трябва да образува изображение на звездичка. Отпечатайте получения масив на екрана, като разделите елементите на масива с интервали.

Примерно въвеждане: 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

Дадено ви е число n, което не надвишава 100. Създайте 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

Като се има предвид двуизмерен масив и две числа: i и j. Разменете колони с номера i и j в масива.
Формат за въвеждане на данни
Програмата получава като вход размер на масива n и m, не надвишаващ 100, след това елементите на масива, след това числата 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

Дадено ви е число n, което не надвишава 10, и n × n масив. Проверете дали този масив е симетричен спрямо главния диагонал. Отпечатайте думата „ДА“, ако масивът е симетричен, и думата „НЕ“ в противен случай.

Примерно въвеждане: 3 0 1 2 1 2 3 2 3 4 Примерна продукция:ДА

#включва #включва използване на пространство от имена std; int main () (int n; bool симетричен; cin >> n; int a; // попълване за (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { cin >> a [i] [j]; )) // обработка симетрична = вярно; за (int i = 0; i< 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. Отпечатайте елементите на k -тия диагонал под основния диагонал (тоест, ако k = 1, тогава трябва да отпечатате елементите на първия диагонал под основния, ако k = 2, тогава вторият диагонал и т.н.).
Стойността на k може да бъде отрицателна, например, ако k = −1, тогава трябва да изведете стойността на първия диагонал, лежащ над основния. Ако k = 0, тогава трябва да покажете елементите на основния диагонал.
Програмата получава като вход число n не повече от 10, след това 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; // обработка и изход за (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 (n и m не надвишават 1000). Симетричен към него масив по отношение на главния диагонал се нарича транспониран към дадения. Той има размери 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

Киното има n реда с m места всеки (n и m не надвишават 20). Информацията за продадените билети се съхранява в двуизмерен масив, числото 1 означава, че билетът за тази седалка вече е продаден, числото 0 означава, че мястото е свободно. Има искане за продажба на k билета за съседни места в същия ред. Определете дали такова искане може да бъде изпълнено.
Формат за въвеждане на данни
Програмата получава числа n и m като вход. Следват n реда, съдържащи m числа (0 или 1), разделени с интервали. Тогава се дава числото 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 масив.
Формат за въвеждане на данни
Въведете две числа n и m, не повече от 100, след това масив с размер 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, попълнете двуизмерен масив с размер n × m с числа от 1 до n × m със „змия“, както е показано в примера.
Формат за въвеждане на данни
Въведете две числа n и m, всяко от които не надвишава 20.
Формат на изходните данни

Примерно въвеждане: 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, попълнете n × m двуизмерния масив с числа от 1 до n × m с „диагонали“, както е показано в примера.
Формат за въвеждане на данни

Формат на изходните данни
Изведете получения масив, като разпределите точно 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 номер = 1; for ( int min_row = 0; min_row< n; min_row++) { if (min_row >0) start_row = pos - 1; иначе start_row = 0; for (pos = start_row; pos< m; pos++) { row = min_row; for (int col = pos; col >= 0; col--) (ако (ред< 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 масив в шахматна дъска: клетки от един цвят са запълнени с нули, а клетки от друг цвят са запълнени с естествени числа отгоре надолу, отляво надясно. Числото 1 е написано в горния ляв ъгъл.
Формат за въвеждане на данни
Въвеждат се две числа n и m, които не надвишават 100.
Формат на изходните данни
Изведете получения масив, като разпределите точно 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 номер = 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 двуизмерния масив с числа от 1 до n × m по спирала, започваща от горния ляв ъгъл и усукана по часовниковата стрелка, както е показано в примера.
Формат за въвеждане на данни
Въвеждат се две числа n и m, които не надвишават 100.
Формат на изходните данни
Изведете получения масив, като разпределите точно 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, за да видите
  • образователни: да допринесат за формирането на представа за двуизмерен масив и основните свойства на квадратните матрици; помислете за действията, които могат да се извършват върху матрици; да се запознаят с типични алгоритми за обработка на матрици на езика Pascal; създават условия за формиране на способността за решаване на алгоритми с двуизмерни масиви;
  • развитие:
  • създават условия за развитие на умения за работа в ограничен период от време, развитие на умения за самостоятелна работа, развитие на умения за работа с бележки.
  • образователни:
  • да насърчава създаването на психологически комфорт за работа в класната стая, насърчаване на спокойствие, отговорно отношение към работата си и повишаване на мотивацията за образователни дейности.

Тип на урока: комбиниран.

Методи на преподаване: лекция, самостоятелна работа.

Форми на организация: фронтална работа, индивидуална работа.

Оборудване: задания за работа в класната стая (индивидуални карти, задача на компютъра), бележки на дъската.

По време на часовете:

1. Организационен момент.

Поздравления.
Темата е докладвана.
Поставете целта на урока и задачите.

2. Актуализиране на усвоените знания

Основните моменти от предишната тема се говорят устно: „Едномерни масиви“. Фронтално мини проучване за основните дефиниции.

3. Поставяне на цели, поставяне на цели:

  • дефинира концепцията за двуизмерен масив;
  • помислете за формата на нотация на двуизмерен масив
  • разгледайте основните свойства на квадратните матрици;
  • помислете за действията, които могат да се извършват върху матрици;
  • запознайте се с типични алгоритми за обработка на матрици на езика Pascal;
  • създават условия за формиране на способността за решаване на алгоритми с двуизмерни масиви;
  • 4. Лекция

    Определение.

    Двуизмерният масив е съвкупност от данни, всяка стойност на които зависи от две числа, които могат да се разглеждат като индекс на колона в матрица.

    Формат на запис

    <имя>: масив[n_index_1..in_index_1, n_index_2 ..in_index_2] на <тип>

    A: масив от цяло число;

    За да използвате елемент от масив, трябва да посочите името на масива и индекса на елемента. Първият индекс съответства на номера на реда, вторият на номера на колоната. Например:

    за i: = 1 до n do
    за j: = 1 до n do
    a: = случаен (100);

    При инициализиране на двуизмерни масиви всеки ред е затворен в допълнителна двойка скоби:

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

    Матриците са аналогични на масивите Pascal в математиката. Матрица, чийто брой редове е равен на броя на колоните, се нарича квадрат. A (n, n) - квадратна матрица

    Основни свойства на квадратните матрици:

    1. Квадратните матрици имат основен и страничен диагонал. Например, за матрица А, основният диагонал съдържа елементи 1,5 и 9, а вторичният диагонал съдържа 3, 5 и 7.

    i = j - елементите са разположени по главния диагонал;
    i> j - елементите са разположени под основния диагонал;
    i i? j - елементите са разположени по главния диагонал и отдолу;
    i + j = n + 1– елементите са разположени по страничния диагонал;
    i + j< n+1– элементы расположены над побочной диагональю;
    i + j> n + 1– елементите са разположени под страничния диагонал;

    2. Квадратна матрица, в която всички елементи, с изключение на елементите на главния диагонал, са равни на нула, се нарича диагонална матрица

    3. Извиква се диагонална матрица, в която всички елементи на главния диагонал са равни на 1 единична матрица

    4. Ако редовете и колоните в матрицата A (m, n) бъдат разменени, тогава ще се получи матрицата A t (m, n), която се нарича транспонирана матрица.

    Основни действия, които могат да се извършват върху матрици

    • обобщавам;
    • открийте разликата;
    • произведение на матрица от някакво число;
    • произведение на две матрици.

    Типични алгоритми за обработка на матрици на езика Pascal

    1. Матричен изход под формата на таблица:
    2. за i: = 1 до n do
      започнете
      за j: = 1 до m do
      пиши (a: 4);
      writeln
      край;

    3. Използване на генератор на случайни числа:
    4. рандомизирайте;
      за i: = 1 до m do
      започнете
      за j: = 1 до n do
      започнете
      a: = случаен (100) -10;
      пиши (a: 4);
      край;
      writeln;
      край;

    5. 2 -ри начин за извеждане на матрица под формата на таблица:
    6. за i: = 1 до n do
      за j: = 1 до m do
      ако j> m, тогава напишете (a: 4)
      else writeln (a: 4);

    7. Обобщение на матрици:
    8. за i: = 1 до n do
      започнете
      за j: = 1 до m do
      c: = a + b
      край;

    9. Матричното транспониране е огледален образ на неговите елементи спрямо основния диагонал. Това може да стане чрез въвеждане на нов масив:

    за i: = 1 до n do
    за j: = 1 до n do
    b = a;

    5. Първичен контрол

    "Контурна карта" 2 опции

    Опция 1

    1. Коригирайте неточностите в описанието на двуизмерния масив:
    2. Var
      A = масив от цели числа;

      ... ... от двуизмерни масиви, всеки ред е затворен в допълнителна двойка скоби:

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

    3. Вмъкнете липсващите дефиниции:
    4. Основните действия, които могат да се извършват върху матрици: сумиране, произведение на две матрици,….,….

    5. Вмъкнете липсващите дефиниции:
    6. Матрица, чийто брой редове е равен на броя на колоните, се нарича…. ... ...

    7. Намерете грешки в алгоритъма:

    за i: = 1 до n do
    започнете
    за j: = 1 до m do
    c: = a + a
    край;

    Вариант 2

    1. Коригирайте неточностите в описанието на масива:

    const
    n = 4; m = 3;
    Тип
    mas: масив от цяло число;

    1. Вмъкнете липсващите дефиниции:
    2. …… е съвкупност от данни, всяка стойност на която зависи от две числа, които могат да се разглеждат като индекс на колона в матрица.

    3. Вмъкнете липсващите дефиниции:
    4. Извиква се диагонална матрица, в която всички елементи на главния диагонал са равни ... единична матрица

    5. Вмъкнете липсващите дефиниции:
    6. Извиква се квадратна матрица, в която всички елементи, с изключение на елементите на главния диагонал, са равни на нула … … .

    7. Намерете грешки в алгоритъма:

    рандомизирайте;
    за i: = 1 до m do
    започнете
    за j: = 1 до n do
    започнете
    a: = случаен (100) -10;
    край;
    край;

    Каква типична задача изпълнява алгоритъмът?

    Алгоритми на Pascal

    1. Напишете програма, която за 3x4 целочислена матрица определя средната аритметична стойност на нейните елементи и броя на положителните елементи във всеки ред. Приложение 2
    2. програма sred_n;
      const m = 3;
      n = 4;
      вар

      i, j, n_pos_el: цяло число;
      sred: истински;
      започнете
      за i: = 1 до m do
      за j: = 1 до n прочетете (а);
      sred: = 0;
      за i: = 1 до m започвам
      n_pos_el: = 0;
      за j: = 1 до n започва
      sred: = sred + a;
      ако a> 0, тогава inc (n_pos_el);
      край;
      writeln ("V", i, "- oi stroke", n_pos_el, "polozitelnix elementov");
      край;
      sred: = sred / m / n;
      writeln ("Srednee arifmeticheskoe:", sred: 6: 2);
      край.

    3. Напишете програма, която за правоъгълна 3x4 целочислена матрица определя броя на най -лявата колона, съдържаща само положителни елементи. Ако няма такава колона, се показва съобщение. Приложение 3

    програма num_posit;
    const m = 3;
    n = 4;
    вар
    а: масив от цяло число;
    i, j, num: цяло число;
    all_posit: булев;
    започнете
    рандомизирайте;
    за i: = 1 до m do
    започнете
    за j: = 1 до n do
    започнете
    a: = случаен (100) -10;
    пиши (a: 4);
    край;
    writeln;
    край;
    номер: = 0;
    за j: = 1 до n започва
    all_posit: = вярно;
    за i: = 1 до m do
    ако< 0 then
    започнете
    all_posit: = false;
    прекъсване; край;
    ако all_posit тогава започва
    номер: = j; прекъсване; край;
    край;
    ако num = 0 тогава
    writeln ("Takix stolbcov net")
    иначе
    writeln ("Nomer stolbca:", num);
    край.

    Учениците качват файлове в Pascal, анализират дадените алгоритми, преглеждат резултатите от изпълнението на програмата, отговарят на допълнителни въпроси:

    1. Как е организиран двуизмерен масив?
    2. Какво означава inc процедура?
    3. Какво означава процедурата за почивка?
    4. Как се използва генераторът на случайни числа?

    6. Формиране на умения за решаване на проблеми.

    Решаване на задачи на отделни карти независимо, в алгоритмична среда.

    Примери за задачи:

    1. Вие получавате 5x5 матрица А, съдържаща случайни елементи. Намерете сумата от всички елементи на матрицата.
    2. Покажете таблицата на Питагор.
    3. Намерете сумата от положителни елементи от посочената колона от матрицата A 5x5 цели числа.

    7. Обобщение на урока, настройка на домашната работа.

    Обобщавайки. Оценка на нивото на асимилация.

    D / Z резюме, задачи:

    За всички:

    1. Получавате двуизмерен квадратен масив. Намерете номера на редове с всички елементи, равни на нула.
    2. Получавате двуизмерен квадратен масив. Намерете номера на редове, елементите във всеки от които са еднакви.
    3. Определете минималния елемент на двуизмерен масив. Отпечатайте номера на реда, съдържащ максималния брой минимални елементи, ако има такива.
    4. Като се има предвид двуизмерен масив. Намерете реда с най -голямата и най -малката сума от елементи. Покажете намерените редове и сумите на техните елементи.

    За студенти, които разбират двумерните масиви и как да ги решават:

    Вместо лекция - решаване на проблеми с повишена сложност.

    Примери за задачи:

    1. Като се има предвид двуизмерен масив. Преобразувайте го съгласно следното правило: направете реда с номер N колоната с числото N и колоната с реда.
    2. В двуизмерен масив X всички числа са различни. Във всеки ред се избира минималният елемент, след това се избира максималният сред тези числа. Отпечатайте номера на реда на масива X, където се намира избраният номер.
    3. Като се има предвид двуизмерен масив. Намерете най -голямата от стойностите на елементите на първия и последния ред.
    4. Напишете програма, която отпечатва двуизмерен масив ред по ред от клавиатурата и изчислява сумата от нейните елементи по колони.
    5. Напишете програма, която изчислява сумата от диагоналните елементи на квадратна матрица.

    Лабораторна работа за училища и университети по решаване на проблеми с обработката на двуизмерни масиви на език C (C). Списък на лабораторните задачи (щракването върху връзката води до решението на проблема, ако има такъв):

    Допълнителни задачи:

    Работата на всички програми е тествана в CodeBlocks 16.01 (MinGW, Windows 10). Можете да дадете своите решения на нерешени програми и предложения за подобряване на съществуващите в коментарите в долната част на страницата.

    Изтеглете лабораторния файл и всички изходни кодове на програмите в архива:


    Можете също така да поръчате решение за вашата лабораторна работа в C ++ и много други:

    # 1: Като се има предвид двуизмерен масив. Намерете минималната сума на елементите на низ. Решете проблема, без да използвате допълнителен едноизмерен масив.

    #включва #включва #включва int main () (int * arr; int x, y, i, j, сума = 0, min = 0, minstr = 0; srand (време (NULL)); x = 2 + rand ()% 10; y = 2 + rand ()% 6; arr = (int *) malloc (x * y * sizeof (int)); printf ("Array% dx% d: \ n", x, y); for (i = 0; i

    # 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 + rand ()% 7; arr = (int *) malloc (x * y * sizeof (int)); printf ("Array% dx% d: \ n", x, y); for (i = 0 ; i

    # 9: Като се има предвид двуизмерен масив от четен брой колони. Колоните от лявата половина на масива се разменят с колоните от дясната половина.

    #включва #включва #включва int main () (int * arr; int x, y, i, j, d; srand (време (NULL)); x = 1 + rand ()% 10; y = 2 * (1 + rand ()% 3 ); arr = (int *) malloc (x * y * sizeof (int)); printf ("Array% dx% d: \ n", x, y); for (i = 0; i

    №14: За всеки ред от двуизмерен масив разберете броя на елементите, чиято последна цифра е равна на a.

    #включва #включва #включва int main () (int * arr; int x, y, i, j, a, count; srand (time (NULL)); printf ("Въведете a:"); scanf ("% d", & a); x = 1 + rand ()% 10; y = 1 + rand ()% 7; arr = (int *) malloc (x * y * sizeof (int)); printf ("Massiv% dx% d: \ n" , x, y); за (i = 0; i

    # 21: Даден двуизмерен масив 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 ("Матрица% dx% d: \ n", x, y); за (i = 0; i

    # 1 (Екстра): Като се има предвид двуизмерен масив. Подредете неговите редове в неспадащ ред на първите им елементи.

    #включва #включва #включва int main () (int * arr, x, y, i, j, k, d, max = 0; srand (време (NULL)); x = 1 + rand ()% 10; y = 1 + rand () % 7; arr = (int *) malloc (x * y * sizeof (int)); printf ("Масив% dx% d: \ n", x, y); за (i = 0; i * (arr + max * y)) max = 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 (Екстра): Като се има предвид квадратен двуизмерен масив. Намерете сумата от елементите на всеки диагонал, успореден на страната.

    #включва #включва #включва int main () (int * arr; int x, y, i, j, sum; srand (time (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) Като се има предвид двуизмерен масив от цели числа. Размяна:

    а) елементи, разположени в горния десен и долния ляв ъгъл;

    б) елементи, разположени в долния десен и горния ляв ъгъл;

    3) Номерът на линията, на която е разположен елементът от главния диагонал на двуизмерния масив от цели числа, е известен. Показва стойността на този елемент.

    4) Дисплей (в един ред):

    а) всички елементи на основния диагонал на масива

    б) всички елементи на основния диагонал на масива, като се започне с елемента, разположен в долния десен ъгъл.

    5) Заменете стойностите на всички елементи на основния диагонал на целочисления масив с нула.

    6) Заменете стойностите на всички елементи на страничния диагонал на целочисления масив със стойности, равни на 100.

    7) Определете:

    а) сумата от елементите на основния диагонал на масива;

    б) сумата от елементите на страничния диагонал на масива;

    в) средната аритметична стойност на елементите на основния диагонал на масива;

    г) средната аритметична стойност на елементите на страничния диагонал на масива;

    д) минималният (максималният) елемент на основния диагонал на масива;

    е) максималният (минимален) елемент на страничния диагонал на реалния масив;

    ж) координати на първия максимален елемент на главния диагонал;

    з) координати на първия минимален елемент от главния диагонал.

    а) показва всички елементи от петия ред на масива;

    б) показва всички елементи от третия ред на масива, започвайки от последния елемент на този ред;

    в) показване на всички елементи от s-та колона на масива;

    г) заменете стойностите на всички елементи от втория ред на масива с число 5;

    д) заменете стойностите на всички елементи от петата колона с числото 10.

    е) определя максималния (минималния) елемент на третата колона;

    9) Като се има предвид двуизмерен масив от цели числа. Направете програма:

    а) изчисляване на произведението на всеки два елемента от всеки ред от масива

    б) сумата от всички елементи на всеки ред от масива;

    10) Като се има предвид двуизмерен масив от цели числа. Определете:

    а) а) в коя колона на масива сумата от елементите е по -малка, в първата или в последната;

    б) б) в коя линия произведението на елементите е по -голямо, във втората или в третата.

    11) Като се има предвид двуизмерен масив от цели 10 x 10. Покажете част от масива:

    а) разположени над главния диагонал;



    б) разположени под основния диагонал;

    в) разположени над страничния диагонал;

    г) разположени под страничния диагонал;

    12) Като се има предвид двуизмерен масив от цели числа:

    а) намерете максималния (минималния) елемент във всяка негова колона;

    б) координати на максималния (минималния) елемент;

    в) сумата от нечетни елементи във всяка колона (ред);

    г) броя на елементите, кратни на A или B.

    д) намерете линията с максималната сума от елементи;

    е) намерете колоната с минималната сума от елементи.

    Като се има предвид двуизмерен масив 5x5. Организирайте въвеждането на елементи, извеждането на резултата под формата на прозорци. Променете, след пауза, цвета на прозорците, в които се съхраняват елементите, посочени според условието.

    Опции за работа:

    1.

    2.

    3.

    4.

    5.

    6.

    7.

    8.

    9.

    10.

    11. Намерете произведението на елементите, които са над главния диагонал. Заменете всички нечетни елементи с намерения номер.

    12. Намерете сумата от елементи, които са в нечетни позиции (сумата от индекси (i + j) за X ij е нечетно число). Заменете всички отрицателни елементи с намереното число.

    13. Намерете произведението на всички елементи, които са на основния диагонал. Заменете всички елементи от петия ред и втората колона с намерения номер.

    14. Намерете средната аритметична стойност на елементите по главния диагонал и средната аритметична по страничния диагонал. Разменете елементите по диагоналите.

    15. Намерете средната аритметична стойност на положителните елементи, които са над главния диагонал. Заменете всички отрицателни елементи с намереното число.

    16. Намерете сумата от нечетни елементи. Заменете с намереното число всички елементи, които са над страничния диагонал.

    17. Намерете произведението на елементите на i-ред и j-колона (i, j-въведете предварително от клавиатурата). Заменете всички елементи под вторичния диагонал с намереното число.

    18. Намерете произведението на елементи, които са в четни позиции (сумата от индекси (i + j) за X ij е нечетно число). Заменете всички елементи по главния диагонал с намереното число.

    19. Намерете средната аритметична стойност на нечетни елементи. Заменете всички елементи на страничния диагонал с намереното число.

    20. Намерете сумата от всички четни елементи, които са над страничния диагонал. Заменете всички елементи от четвъртия ред с намерения номер.

    21. Намерете произведението на елементите, които са над главния диагонал. Заменете всички нечетни елементи с намерения номер.

    22. Намерете сумата от елементи, които са в нечетни позиции (сумата от индекси (i + j) за X ij е нечетно число). Заменете всички отрицателни елементи с намереното число.

    23. Намерете произведението на всички елементи, които са на основния диагонал. Заменете всички елементи от петия ред и втората колона с намерения номер.

    24. Намерете средната аритметична стойност на елементите по главния диагонал и средната аритметична по страничния диагонал. Разменете елементите по диагоналите.

    25. Намерете средната аритметична стойност на положителните елементи, които са над главния диагонал. Заменете всички отрицателни елементи с намереното число.

    Например: Намерете средната аритметична стойност на елементите по главния диагонал

    След пауза:

    Контролни въпроси

    1. Какво е текстов режим и как се различава от нормалния?

    2. Какво е прозорец?

    3. Как да преместите курсора към посочените координати на прозореца?

    4. Как да променя цвета на шрифта / фона?

    Въведение

    Съвременните технически устройства за управление и автоматизация широко използват двоични схеми и двоична бройна система. Теорията на логическата алгебра се използва за анализ и синтез на комбинационни и последователни комутационни схеми.

    Лекционният материал е представен в три глави. В първата глава са дадени основните понятия от теорията на алгебрата на логиката, разгледани са различни форми на представяне на булеви функции. Втората глава е посветена на въпросите за минимизиране на представянията на булеви функции, което е в основата на абстрактния синтез на дискретни устройства. Третата глава съдържа информация за методите за изпълнение на булеви функции, базирани на комутационни схеми, което е основата за структурния синтез на дискретни устройства.

    При писането на бележките от лекцията беше използвана следната литература: за раздел 1.1 -; за раздел 1.2 -; за раздел 1.3 -; за раздел 2.1 -; за раздел 2.2 -; за раздели 3.1, 3.2 -.



    Свързани статии: