Примери за решаване на задачи с двумерни масиви, задачи за самостоятелно решаване. Даден е двумерен масив от реални числа Даден е двумерен масив
Даден е двуизмерен масив 5x5. Организирайте въвеждането на елементи, изхода на резултата под формата на прозорци. След пауза сменете цвета на прозорците, в които се съхраняват зададените според условието елементи.
Варианти на задачите:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11. Намерете произведението на елементи, които са над главния диагонал. Заменете всички нечетни елементи с намереното число.
12. Намерете сумата от елементи, които са на нечетни позиции (сумата от индексите (i + j) за Х ij е нечетно число). Заменете всички отрицателни елементи с намереното число.
13. Намерете произведението на всички елементи, които са на главния диагонал. Заменете всички елементи от петия ред и втората колона с намереното число.
14. Намерете средноаритметичната стойност на елементите на главния диагонал и средната аритметична стойност на страничния диагонал. Разменете елементите по диагоналите.
15. Намерете средноаритметичното на положителните елементи, които са над главния диагонал. Заменете всички отрицателни елементи с намереното число.
16. Намерете сбора на нечетните елементи. Заменете с намереното число всички елементи, които са над второстепенния диагонал.
17. Намерете произведението на елементите на i-ред и j-колона (i, j- предварително въвеждане от клавиатурата). Заменете с намереното число всички елементи под второстепенния диагонал.
18. Намерете произведението на елементи, които са на четни позиции (сумата от индексите (i + j) за Х ij е нечетно число). Заменете всички елементи по главния диагонал с намереното число.
19. Намерете средноаритметичното на нечетните елементи. Заменете всички елементи на страничния диагонал с намереното число.
20. Намерете сумата от всички четни елементи, които са над второстепенния диагонал. Заменете всички елементи на четвъртия ред с намереното число.
21. Намерете произведението на елементи, които са над главния диагонал. Заменете всички нечетни елементи с намереното число.
22. Намерете сумата от елементи, които са на нечетни позиции (сумата от индексите (i + j) за Х ij е нечетно число). Заменете всички отрицателни елементи с намереното число.
23. Намерете произведението на всички елементи, които са на главния диагонал. Заменете всички елементи от петия ред и втората колона с намереното число.
24. Намерете средноаритметичната стойност на елементите на главния диагонал и средната аритметична стойност на страничния диагонал. Разменете елементите по диагоналите.
25. Намерете средноаритметичното на положителните елементи, които са над главния диагонал. Заменете всички отрицателни елементи с намереното число.
Например: Намерете средноаритметичното на елементите на главния диагонал
След пауза:
тестови въпроси
1. Какво е текстов режим и как се различава от обикновения режим?
2. Какво е прозорец?
3. Как да преместя курсора до зададените координати на прозореца?
4. Как да променя цвета на шрифта/фона?
Въведение
Модерен технически средства, предназначени за контрол и автоматизация, широко използват двоични схеми и двоична системаразчитане. Теорията на логическата алгебра се използва за анализ и синтез на комбинационни и последователни превключващи вериги.
Лекционният материал е представен в три глави. В първата глава са дадени основните понятия на теорията на алгебрата на логиката, разгледани са различни форми на представяне на булеви функции. Втората глава е посветена на въпросите за минимизиране на представянето на булеви функции, което е в основата на абстрактния синтез на дискретни устройства. Третата глава съдържа информация за това как да се реализират булеви функции, базирани на превключващи вериги, което е основата за структурния синтез на дискретни устройства.
При написването на лекционните записки е използвана следната литература: за раздел 1.1 -; за раздел 1.2 - ; за раздел 1.3 - ; за раздел 2.1 - ; за раздел 2.2 - ; за раздели 3.1, 3.2 - .
Поредната порция задачи по информатика за ученици пристигна навреме. Този път нека разгледаме работата с двумерни масиви в C++. Тези задачи са доста интересни. И повечето ми харесаха.
Задача №1
Намерете индексите на първото появяване на максималния елемент.
Формат на входните данни
Програмата получава масиви с размери n и m като вход, след това n реда с m числа всеки. n и m не надвишават 100.
Изходен формат
Отпечатайте две числа: номера на реда и номера на колоната, съдържаща най-големия елемент двумерен масив. Ако има няколко такива елемента, тогава се показва този с по-малък номер на ред, а ако номерата на редовете са еднакви, тогава този с по-малък номер на колона.
#включи
Задача №2
Дадено е нечетно число n, не по-голямо от 15. Създайте двумерен масив от n×n елемента, като го запълните с "." (всеки елемент от масива е низ от един знак). След това попълнете със знаци "*" средния ред на масива, средната колона на масива, главния диагонал и второстепенния диагонал. В резултат на това "*" в масива трябва да образува изображение със звездичка. Изведете получения масив на екрана, като разделяте елементите на масива с интервали.
примерен вход: 5 примерен резултат: * . * . * . * * * . * * * * * . * * * . * . * . *#включи
Задача №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#включи
Задача №4
Даден е двумерен масив и две числа: i и j. Разменете колоните с числата i и j в масива.
Формат на входните данни
Програмата получава като вход размерите на масива n и m, не повече от 100, след това елементите на масива, след това числата i и j.
Изходен формат
Изведете резултата.
#включи
Задача №5
Дадено ви е число n, което не надвишава 10, и масив с размер n × n. Проверете дали този масив е симетричен спрямо главния диагонал. Отпечатайте думата "YES", ако масивът е симетричен, и думата "NO" в противен случай.
примерен вход: 3 0 1 2 1 2 3 2 3 4 примерен резултат:ДА#включи
Задача №6
Даден е квадратен двумерен масив с размер n × n и число k. Отпечатайте елементите на k-тия диагонал под основния диагонал (т.е. ако k = 1, тогава трябва да отпечатате елементите на първия диагонал под основния, ако k = 2, тогава втория диагонал и т.н.).
Стойността на k може да бъде отрицателна, например, ако k = −1, тогава трябва да отпечатате стойността на първия диагонал, разположен над основния. Ако k = 0, тогава трябва да отпечатате елементите на главния диагонал.
Програмата приема като вход число n, което не надвишава 10, след това масив n × n, след това число k.
#включи
Задача №7
Даден е двуизмерен масив с размер n×m (n и m не надвишават 1000). Масив, който му е симетричен спрямо главния диагонал, се нарича транспониран спрямо дадения. Той има размери m×n: редовете на оригиналния масив стават колони на транспонирания, колоните на оригиналния масив стават редове на транспонирания.
За дадения масив конструирайте транспонирания масив и го покажете на екрана.
#включи
Задача №8
Киното разполага с n реда от по m места (n и m не надвишават 20). Двумерният масив съхранява информация за продадените билети, като числото 1 означава, че билетът за това място вече е продаден, числото 0 означава, че мястото е свободно. Получена е заявка за продажба на k билета за съседни места на същия ред. Определете дали такава заявка може да бъде изпълнена.
Формат на входните данни
Програмата получава като вход числата n и m. След това има n реда, съдържащи m числа (0 или 1), разделени с интервали. Тогава е дадено числото k.
Изходен формат
Програмата трябва да изведе номера на ред, който има k последователни празни места. Ако има няколко такива реда, отпечатайте номера на най-малкия подходящ ред. Ако няма подходящ ред, отпечатайте числото 0.
#включи
Задача №9
Даден е правоъгълен масив с размер n×m. Завъртете го на 90 градуса по часовниковата стрелка, записвайки резултата в нов масив m×n.
Формат на входните данни
Въвеждат се две числа n и m, не по-големи от 100, след което масив с размер n×m.
Изходен формат
Изведете получения масив. Разделете числата с един интервал.
#включи
Задача №10
Дадени са числата n и m, попълнете двумерен масив с размер n×m с числа от 1 до n×m със „змия“, както е показано в примера.
Формат на входните данни
Въведени са две числа n и m, всяко от които не надвишава 20.
Изходен формат
#включи
Задача №11
Дадени са числата n и m, попълнете n×m двуизмерен масив с числа от 1 до n×m „диагонали“, както е показано в примера.
Формат на входните данни
Изходен формат
Изведете получения масив, оставяйки точно 4 знака за всеки елемент.
#включи
Задача №12
Дадени са числата n и m. Попълнете n × m масив в шахматен ред: клетките от един цвят се запълват с нули, а клетките от другия цвят се запълват с естествени числа отгоре надолу, отляво надясно. Цифрата 1 е изписана в горния ляв ъгъл.
Формат на входните данни
Въвеждат се две числа n и m, не по-големи от 100.
Изходен формат
Изведете получения масив, оставяйки точно 4 знака за всеки елемент.
#включи
Задача №13
Дадени са числата n и m, попълнете двуизмерен масив с размер n×m с числа от 1 до n×m в спирала, започваща от горния ляв ъгъл и завъртена по посока на часовниковата стрелка, както е показано в примера.
Формат на входните данни
Въвеждат се две числа n и m, не по-големи от 100.
Изходен формат
Изведете получения масив, оставяйки точно 4 знака за всеки елемент.
#включи
0 0 |
Моля, активирайте JavaScript, за да видите
Лабораторна работа за училища и университети по решаване на задачи за обработка на двумерни масиви в C (C). Списък на задачите от лабораторната работа (щракнете върху връзката, която води до решението на задачата, ако има такава):
Допълнителни задачи:Всички програми са тествани в CodeBlocks 16.01 (MinGW, Windows 10). Можете да дадете своите решения за неразрешени програми и предложения за подобряване на съществуващите в коментарите в долната част на страницата.
Изтеглете лабораторния файл и всички изходни кодове на програмите в архива:
Можете също да поръчате решения за вашите лаборатории на C++ и много други:
#1: Даден е двуизмерен масив. Намерете минималната сума на елементите на низ. Решете задачата без да използвате допълнителен едномерен масив.
#включи#2: Определете координатите на елемента, който е най-близо до средната стойност на всички елементи на масива.
#включи#9: Даден е двуизмерен масив с четен брой колони. Разменете колоните от лявата половина на масива с колоните от дясната половина.
#включи#14: За всеки ред от двуизмерен масив открийте броя на елементите, чиято последна цифра е равна на a.
#включи#21: Даден е двуизмерен масив b. Разглеждайки го като матрица, транспонирайте b.
#включи№ 1 (Допълнително): Даден е двумерен масив. Сортирайте неговите низове в ненамаляващ ред на първите им елементи.
#включи#2 (Допълнително): Определете дали дадената квадратна матрица е ортонормална, т.е. такъв, в който скаларното произведение на всяка двойка отделни низове е 0, а скаларното произведение на всеки низ със себе си е 1.
#включи№ 3 (Допълнително): Даден е квадратен двуизмерен масив. Намерете сумата от елементите на всеки от неговите диагонали, успоредни на второстепенния.
#включиЗадачи върху двумерни масиви
1) Даден е двумерен масив от цели числа. Съставете програма:
а) показване на елемента, разположен в горния десен ъгъл на масива;
б) показване на елемента, разположен в долния ляв ъгъл на масива;
в) показване на всеки елемент от втория ред на масива на екрана;
г) показване на всеки елемент от третата колона на масива;
д) показване на произволен елемент от масива на екрана.
2) Даден е двумерен масив от цели числа. Размяна:
а) елементи, разположени в горния десен и долния ляв ъгъл;
б) елементи, разположени в долния десен и горния ляв ъгъл;
3) Известен е номерът на реда, на който е разположен елементът от главния диагонал на двумерен масив от цели числа. Показване на стойността на този елемент.
4) Дисплей (в един ред):
а) всички елементи от главния диагонал на масива
б) всички елементи от главния диагонал на масива, като се започне от елемента, разположен в долния десен ъгъл.
5) Заменете стойностите на всички елементи на главния диагонал на целочислен масив с нула.
6) Заменете стойностите на всички елементи на вторичния диагонал на целочислен масив със стойности, равни на 100.
7) Определете:
а) сумата от елементите на главния диагонал на масива;
б) сумата от елементите на вторичния диагонал на масива;
в) средноаритметичното на елементите на главния диагонал на масива;
г) средноаритметичното на елементите на вторичния диагонал на масива;
д) минималният (максималния) елемент на главния диагонал на масива;
е) максималният (минималният) елемент от вторичния диагонал на реален масив;
ж) координати на първия максимален елемент на главния диагонал;
з) координати на първия минимален елемент от главния диагонал.
а) показване на всички елементи от петия ред на масива;
б) показване на всички елементи от третия ред на масива, като се започне от последния елемент на този ред;
в) изведе всички елементи от s-тата колона на масива;
г) заменете стойностите на всички елементи от втория ред на масива с числото 5;
д) заменете стойностите на всички елементи от петата колона с числото 10.
е) определя максималния (минималния) елемент на третата колона;
9) Даден е двумерен масив от цели числа. Съставете програма:
а) изчисляване на произведението на всеки два елемента от всеки низ от масив
б) сумата от всички елементи на всеки низ от масив;
10) Даден е двумерен масив от цели числа. Определете:
а) а) в коя колона от масива сумата от елементите е по-малка, в първата или в последната;
б) б) в кой ред произведението на елементите е по-голямо, във втория или в третия.
11) Даден е двумерен масив с цели числа с размер 10 x 10. Покажете част от масива на екрана:
а) разположен над главния диагонал;
б) разположени под главния диагонал;
в) разположен над второстепенния диагонал;
г) разположен под второстепенния диагонал;
12) Даден е двумерен масив от цели числа:
а) във всяка от колоните му намерете максималния (минималния) елемент;
б) координати на максималния (минималния) елемент;
в) сумата на нечетните елементи във всяка колона (ред);
г) броя на елементите, кратни на A или B.
д) намиране на реда с максимален сбор от елементи;
е) намерете колоната с минимална сума от елементи.
- образователни: да допринесат за формирането на идея за двуизмерен масив и основните свойства на квадратните матрици; обмислете действия, които могат да бъдат извършени върху матрици; въведе типични алгоритми за обработка на матрици в Pascal; създават условия за формиране на способност за решаване на алгоритми с двумерни масиви;
- развитие: създаване на условия за развитие на умения за работа за ограничен период от време, развитие на умения за самостоятелна работа, развитие на умения за работа с бележки.
- образователен: да насърчава създаването на психологически комфорт за работа в урока, възпитанието на спокойствие, отговорно отношение към работата и повишаване на мотивацията за образователни дейности.
Тип урок: комбиниран.
Методи на обучение: лекция, самостоятелна работа.
Форми на организация: фронтална работа, самостоятелна работа.
Оборудване: задачи за работа в клас (индивидуални карти, задача на компютър), бележки на дъската.
По време на часовете:
1. Организационен момент.
Поздравления.
Темата е докладвана.
Поставете целта на урока и задачите.
2. Актуализиране на усвоените знания
Устно се изказват основните моменти от предходната тема: „Едномерни масиви”. Фронтална мини анкета за основните определения.
3. Поставяне на цели, поставяне на задачи:
4. Лекция
Определение.
Двумерният масив е колекция от данни, всяка стойност на които зависи от две числа, които могат да се разглеждат като индекс на колона в матрица.
Формат на запис
<имя>: масив[n_index_1..to_index_1, n_index_2 ..to_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));
Аналог на масивите на Pascal в математиката са матриците. Матрица, в която броят на редовете е равен на броя на колоните, се нарича квадратна матрица. A(n,n) – квадратна матрица
Основни свойства на квадратните матрици:
1. Квадратните матрици имат главни и странични диагонали. Например за матрица А елементи 1.5 и 9 лежат на главния диагонал, а 3, 5 и 7 лежат на страничния диагонал.
i=j – елементите са разположени на главния диагонал;
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
- Изходът на матрицата под формата на таблица:
- Използване на генератор на произволни числа:
- 2-ри начин за показване на матрицата под формата на таблица:
- Сумиране на матрицата:
- Транспонирането на матрица е огледален образ на нейните елементи по отношение на главния диагонал. Можете да направите това, като въведете нов масив:
за i:= 1 до n направи
започвам
за j:= 1 до m направи
запис (a:4);
writeln
край;
рандомизирам;
за i:=1 до m направи
започвам
за j:=1 до n направи
започвам
a:=random(100)-10;
запис (a:4);
край;
writeln;
край;
за i:= 1 до n направи
за j:= 1 до m направи
ако j>m тогава напишете (a:4)
else writeln(a:4);
за i:= 1 до n направи
започвам
за j:= 1 до m направи
c:=a+b
край;
за i:= 1 до n направи
за j:= 1 до n направи
b=a;
5. Първичен контрол
„Контурна карта“ 2 опции
1 вариант
- Коригирайте неточностите в описанието на двумерен масив:
- Въведете липсващи определения:
- Въведете липсващи определения:
- Намерете грешки в алгоритъма:
вар
A= масив от цели числа;
... ... двумерни масиви, всеки ред е ограден в допълнителна двойка скоби:
const a:mas= ((2,3,1,0),
(1,9,1,3),
(3,5,7,0));
Основни операции, които могат да се извършват върху матрици: сумиране, произведение на две матрици,….,….
Матрица, в която броят на редовете е равен на броя на колоните, се нарича .... ….. .
за i:= 1 до n направи
започвам
за j:= 1 до m направи
c:=a+a
край;
Вариант 2
- Коригирайте неточностите в описанието на масива:
конст
n=4; m=3;
Тип
mas:масив от цяло число;
- Въведете липсващи определения:
- Въведете липсващи определения:
- Въведете липсващи определения:
- Намерете грешки в алгоритъма:
…… е набор от данни, всяка стойност на които зависи от две числа, които могат да се разглеждат като индекс на колона в матрица.
Диагонална матрица, в която всички елементи на главния диагонал са равни на ... се нарича матрица на идентичността
Квадратна матрица, в която всички елементи, с изключение на елементите на главния диагонал, са равни на нула, се нарича … … .
рандомизирам;
за i:=1 до m направи
започвам
за j:=1 до n направи
започвам
a:=random(100)-10;
край;
край;
Каква е типичната задача на алгоритъма?
Алгоритми в Паскал
- Напишете програма, която за целочислена матрица 3x4 определя средноаритметичното на нейните елементи и броя на положителните елементи във всеки ред. Приложение 2
- Напишете програма, която при дадена правоъгълна целочислена матрица 3x4 определя номера на най-лявата колона, съдържаща само положителни елементи. Ако няма такава колона, се показва съобщение. Приложение 3
програма среда_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;
ако a>0 тогава inc(n_pos_el);
край;
writeln("V",i,"-oi stroke",n_pos_el,"полозителни елементи");
край;
sred:=сред/m/n;
writeln("Srednee arithmeticheskoe:",sred:6:2);
край.
програма 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, анализират този алгоритъм, преглеждат резултатите от изпълнението на програмата, отговарят на допълнителни въпроси:
- Как е организиран двумерен масив?
- Какво означава inc процедура?
- Какво означава процедурата за прекъсване?
- Как се използва генераторът на произволни числа?
6. Формиране на умения за решаване на проблеми.
Самостоятелно решаване на задачи върху индивидуални карти, в алгоритмична среда.
Примерни задачи:
- Дадена е 5x5 матрица A, съдържаща произволни елементи. Намерете сумата от всички елементи на матрицата.
- Покажете таблицата на Питагор.
- Намерете сумата от положителните елементи на посочената колона на матрицата A 5x5 цели числа.
7. Резултатите от урока, поставяне на домашна работа.
Обобщаване. Оценка на нивото на асимилация.
D / Z резюме, задачи:
За всички:
- Даден е двуизмерен квадратен масив. Намерете номерата на редовете, всички елементи на които са равни на нула.
- Даден е двуизмерен квадратен масив. Намерете номерата на редовете, елементите на всеки от които са еднакви.
- Определете минималния елемент на двумерен масив. Отпечатайте номера на реда, съдържащ максималния брой минимални елементи, ако има такива.
- Даден е двумерен масив. Намерете линията с най-голям сбор от елементи и най-малък. Покажете намерените низове и сумите на техните елементи.
За студенти, които имат представа за двумерни масиви и как да ги решават:
Вместо лекция - решаване на задачи с повишена сложност.
Примерни задачи:
- Даден е двумерен масив. Трансформирайте го според следното правило: направете реда с номер N колона с номер N, а колоната ред.
- В двумерен масив X всички числа са различни. Във всеки ред се избира минималният елемент, след което сред тези числа се избира максималният. Отпечатайте номера на реда от масива X, съдържащ избраното число.
- Даден е двумерен масив. Намерете най-голямата от стойностите на елементите на първия и последния ред.
- Напишете програма, която отпечатва от клавиатурата двуизмерен масив ред по ред и изчислява сбора на елементите му по колони.
- Напишете програма, която изчислява сумата от диагоналните елементи на квадратна матрица.