Дадено двуизмерно. Даден е двумерен масив от реални числа. Даден е двумерен масив от цели числа

Даден е двуизмерен масив 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 – .

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

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

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

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


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

№ 1: Даден е двуизмерен масив. Намерете минималната сума на елементите на низ. Решете задачата без да използвате допълнителен едномерен масив.

#включи #включи #включи int main() ( int *arr; int x, y, i, j, sum = 0, min = 0, minstr = 0; srand(time(NULL)); x = 2 + rand() % 10; y = 2 + rand() % 6; arr = (int*)malloc(x*y*sizeof(int)); printf("Масив %d x %d: \n", x, y);

№ 2: Определете координатите на елемента, който е най-близо до средната стойност на всички елементи на масива.

#включи #включи #включи #включи int main() ( int *arr; int x, y, i, j, minx = 0, miny = 0; float ssum = 0; srand(time(NULL)); x = 1 + rand() % 10; y = 1 + rand() % 7; arr = (int*)malloc(x*y*sizeof(int)); printf("Масив %d x %d: \n", x, y);

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

#включи #включи #включи int main() ( int *arr; int x, y, i, j, d; srand(time(NULL)); x = 1 + rand() % 10; y = 2 * (1 + rand() % 3 ); arr = (int*)malloc(x*y*sizeof(int)); printf("Масив %d x %d: \n", x, y);

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

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

№ 21: Даден е двумерен масив b. Разглеждайки го като матрица, транспонирайте b.

#включи #включи #включи int main() ( int *arr, *arrT, x, y, i, j; srand(time(NULL)); x = 1 + rand() % 7; y = 1 + rand() % 7; arr = (int*)malloc(x*y*sizeof(int)); printf("Матрица %d x %d: \n", x, y);

№ 1 (допълнително): Даден е двуизмерен масив. Сортирайте редовете му в ненамаляващ ред на първите им елементи.

#включи #включи #включи int main() ( int *arr, x, y, i, j, k, d, max = 0; srand(time(NULL)); x = 1 + rand() % 10; y = 1 + rand() % 7; arr = (int*)malloc(x*y*sizeof(int)); printf("Масив %d: \n", x, 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("Въведете елементите на матрицата %d x %d: \n", x, x);

№ 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("Масив %d x %d: \n", x, x);

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

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

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

Форми на организация: фронтална работа, самостоятелна работа.

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

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

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

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

2. Актуализиране на придобитите знания

Основните моменти от предходната тема се изговарят устно: „Едномерни масиви“. Фронтална мини анкета върху основните определения.

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

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

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

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

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

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

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

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

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

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

    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 – елементите са разположени под главния диагонал;
    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 направи
      започвам
      за j:= 1 до m направи
      запис (a:4);
      writeln
      край;

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

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

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

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

    за i:= 1 до n направи
    за j:= 1 до n направи
    b=a;

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

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

    1 вариант

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

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

      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. Квадратна матрица, в която всички елементи, с изключение на елементите на главния диагонал, са равни на нула, се нарича … … .

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

    рандомизирам;
    за i:=1 до m направи
    започвам
    за j:=1 до n направи
    започвам
    a:=random(100)-10;
    край;
    край;

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

    Алгоритми на езика Pascal

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

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

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

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

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

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

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

    Самостоятелно решаване на задачи върху индивидуални карти, в алгоритмична среда.

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

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

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

    Обобщаване. Оценка на нивото на усвояване.

    D/Z обобщение, задачи:

    За всички:

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

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

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

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

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

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

    Задача No1

    Намерете индексите на първото появяване на максималния елемент.
    Формат на въвеждане
    Програмата получава масиви с размери 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; }

    Задача No2

    Дадено е нечетно число 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; }

    Задача No3

    Дадено е число 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; }

    Задача No4

    Даден е двумерен масив и две числа: 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 symmetric; 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; }

    Проблем No7

    Даден е двуизмерен масив с размер 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; }

    Проблем No8

    Има 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; }

    Проблем No9

    Даден е правоъгълен масив с размер 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; }

    Задача No10

    Дадени са числата 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; }

    Задача No11

    Дадени са числата 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 number = 1; for ( int min_row = 0; min_row< n; min_row++) { if (min_row >0) начален_ред = поз - 1; иначе начален_ред = 0; за (поз. = начален_ред; поз< 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; }

    Задача No12

    Дадени са числата 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 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; }

    Задача No13

    Дадени са числата 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, за да видите

    Пример 3

    Даден е двумерен масив от цели числа с размери n x m,намиране на най-малкия елемент от масива и номера на реда, в който се намира.

    Блокова диаграма:
    Програмен код:
    Var a: масив от цели числа;
    i, j, m, n, min, k: цяло число;
    Започнете
    Write(‘колко реда?’); Readln(n);
    Write(‘колко колони?’); Readln(m);
    За i:=1 до n направете
    За j:=1 до m направи
    започвам
    write(‘a[‘,i,’,’,j,’]=’); readln(a); (2D въвеждане на масив)
    край;
    min:=a; (минимален елемент)
    k:=1; (номер на ред)
    За i:=1 до n направете
    За j:=1 до m направи
    Ако< min then
    започвам
    min:=a; k:=i; (потърсете минимума и „запомнете“ номера на реда)
    край;
    Writeln('най-малкото число ',min,' е в ', k, 'ред');
    Край.

    Задачи

    1. . Намерете сумата и произведението на всички елементи на масива.
    2. Даден е двумерен масив с цели числа с размери n x m. Намерете сумата и произведението на четните елементи.
    3. Даден е двумерен масив с цели числа с размери n x m. Намерете сбора и произведението на елементи, кратни на 3 и 5.
    4. Даден е двумерен масив с цели числа с размери n x m. Намерете броя на отрицателните елементи, по-големи от -9.
    5. Даден е двумерен масив с цели числа с размери n x m.
    6. Даден е двумерен масив с цели числа с размери n x m
    7. Даден е двумерен масив с цели числа с размери n x m
    8. Даден е двумерен масив с цели числа с размери n x m. Намерете средноаритметичната стойност на всички елементи на масива.
    9. Даден е двумерен масив с цели числа с размери n x m. Разберете кое число в кой ред се появява първо - положително или отрицателно.
    10. Даден е двумерен масив с цели числа с размери n x m. Разберете кой ред има възходяща или низходяща последователност.
    11. Даден е двумерен масив с цели числа с размери n x m. Оттегляненеговите елементи, чиито индекси са степени на две (1, 2, 4, 8, 16, ...).
    12. Даден е двумерен масив с цели числа с размери n x m. Намерете броя на елементите, кратни на 7.
    13. Даден е двумерен масив с цели числа с размери n x m. Показване на елементи, които са квадрати на число.
    14. Даден е двумерен масив с цели числа с размери n x m. Намерете броя на нечетните елементи на четни места.
    15. Даден е двумерен масив с цели числа с размери n x m. Намерете максимума и минимума. Разменете ги.
    16. Даден е двумерен масив с цели числа с размери n x m. Заменете всички елементи с техните квадратчета.
    17. Даден е двумерен масив с цели числа с размери n x m. Заменете всички елементи с техните противоположни стойности.
    18. Даден е двумерен масив с цели числа с размери n x m. Разменете първия и последния елемент.
    19. Даден е двумерен масив с цели числа с размери n x m. Формирайте нов масив, състоящ се от противоположни съответни елементи.
    20. Даден е двумерен масив с цели числа с размери n x m. Покажете онези елементи, чийто остатък, разделен на m, е равен на k.
    21. Вписани са резултатите от теста на 10 ученици. Определете броя на незадоволителни, задоволителни, добри и отлични оценки. Показване на средната оценка, получена от студентите на теста.
    22. Въведете оценки на N ученици по K предмета. Определете и покажете броя на учениците, които не са получили нито една „5“.
    23. В групата има N ученика, учениците са получили четири точки на изпита. Определете броя на неуспелите ученици и средния резултат на групата.
    24. Даден е двумерен масив с цели числа с размери n x m. Изчислете сбора на числата, чиито поредни номера са числа на Фибоначи.
    25. Даден е двумерен масив с цели числа с размери n x m. Добавете съответните елементи.