1. основы алгоритмизации
Вид материала | Документы |
Содержание4.6. Многомерные массивы Лабораторная работа 2. Одномерные массивы Лабораторная работа 3. Двумерные массивы |
- В. А. Давыденко программирование и основы алгоритмизации лабораторный практикум, 1951.1kb.
- В курсе информатики основной школы, 96.17kb.
- Задачи по теме «Основы алгоритмизации и программирования» для 8 класса Г. В. Кирись, 347.32kb.
- «Основы алгоритмизации и объектно-ориентированного программирования на языке Gambas», 318.06kb.
- Конспект лекций по курсу основы алгоритмизации и программирования для студентов всех, 3059.86kb.
- Курс: 2 Саранск 2007 а рассмотрено и одобрено на заседании предметной (цикловой) комиссии, 168.43kb.
- Программы: «Основы алгоритмизации и программирования» Урок №21 (11) в 7 классе Дата, 79.71kb.
- Рабочая программа дисциплины Программирование и основы алгоритмизации (Наименование, 216.94kb.
- Рабочая программа дисциплины Программирование и основы алгоритмизации (Наименование, 175.45kb.
- Теоретические основы алгоритмизации и программирования алгоритмизация, 89.69kb.
4.6. Многомерные массивы
Многомерный массив – это массив, элементами которого служат массивы. Например, массив с описанием int a[4][5] – это массив из 4 указателей типа int*, которые содержат адреса одномерных массивов из 5 целых элементов.
int **a;
Инициализация многомерных массивов выполняется аналогично одномерным массивам. Примеры:
int a[3][4] = {{11,22,33,44},{55,66,77,88},{99,110,120,130}};
//проинициализированы все элементы массива
int b[3][4] = {{1},{2},{3}};
//проинициализированы первые элементы каждой строки
int c[3][2]={1,2,3,4,5,6};
//проинициализированы все элементы массива
Доступ к элементам многомерных массивов возможен и с помощью индексированных переменных и с помощью указателей:
a[1][1] – доступ с помощью индексированных переменных,
*(*(a+1)+1) – доступ к этому же элементу с помощью указателей.
Лабораторная работа 2.
Одномерные массивы
Вариант 1
- Дана последовательность чисел а1, а2, ... а10. Вычислить, сколько чисел в этой последовательности стоит после 2-го нуля.
- Задать произвольную последовательность целых чисел. Вычислить среднее арифметическое всех положительных чисел.
Вариант 2
- Дана последовательность чисел а1, а2, ... а10. Вычислить, сколько в этой последовательности стоит чисел до 3-го нуля.
- Задать произвольную последовательность целых чисел. Вычислить сумму всех отрицательных чисел.
Вариант 3
- Дана последовательность чисел а1, а2, ... а10. Вычислить, сколько в этой последовательности стоит чисел между 1-м и 3-м нулями.
- Задать произвольную последовательность целых чисел. Вычислить порядковый номер 2-го отрицательного числа.
Вариант 4
- Дана последовательность чисел а1, а2, ... а10. Вычислить, сколько в этой последовательности чисел стоит после 3-го нуля.
- Задать произвольную последовательность целых чисел. Вычислить, сколько в этой последовательности положительных чисел, имеющих значение < +10.
Вариант 5
- Дана последовательность чисел а1, а2, ... а10. Вычислить, сколько в этой последовательности чисел стоит между 2-м и 3-м нулями.
- Задать произвольную последовательность целых чисел. Вычислить сумму всех положительных чисел.
Вариант 6
- Дана последовательность чисел а1, а2, ... а10. Вычислить, сколько положительных чисел в этой последовательности стоит после 1-го нуля.
- Задать произвольную последовательность целых чисел. Вычислить сумму всех положительных чисел.
Вариант 7
- Дана последовательность чисел а1, а2, ... а10. Вычислить, сколько отрицательных чисел в этой последовательности стоит после 2-го нуля.
- Задать произвольную последовательность целых чисел. Вычислить, сколько в этой последовательности положительных чисел, имеющих значение, меньшее +5.
Вариант 8
- Дана последовательность чисел а1, а2, ... а10. Вычислить, сколько в этой последовательности стоит положительных чисел между 1-м и 3-м нулями.
- Задать произвольную последовательность целых чисел. Вычислить порядковый номер 2-го отрицательного числа.
Пример
- Дана последовательность чисел а1, а2, ... а10. Вычислить, сколько чисел в этой последовательности стоит после 1-го нуля.
# include
# include
void main(void)
{ float a[10];
int i=0, j;
clrscr();
for (j=0; j<=9; j++)
{cout<<"a["<
cin>>a[j];}
while ((a[i]!=0) && (i<9)) i++;
if (a[i]==0) cout<<9-i;
else cout<<"в последовательности нет нулей";
getche();
}
- Задать произвольную последовательность целых чисел. Вычислить, сколько чисел в этой последовательности имеют значения от –10 до +10.
# include
# include
void main(void)
{ int *p, size, i, s=0;
clrscr();
cout<<"Введите размер массива: ";
cin>>size;
p=new int[size];
if (!p) cout<<"Недостаточно памяти";
else
{for (i=0; i
{cout<<"p["<
cin>>p[i];
if ((p[i]>=-10) && (p[i]<=10)) s++;}
cout<
getche();}
Лабораторная работа 3.
Двумерные массивы
Вариант 1
- Заполнить матрицу произведениями соответствующих порядковых номеров ее элементов.
- Найти разность между суммами элементов, лежащих на главной и побочной диагоналях матрицы М (3x3).
Вариант 2
- Из матрицы Q (4x3) сформировать одномерный массив отрицательных чисел (просмотр по строкам).
- Дана матрица А (4x4). Расставить строки таким образом, чтобы элементы в первом столбце были упорядочены по убыванию.
Вариант 3
- Дан целочисленный массив В (3x5). Определить, сколько в нем пар соседних одинаковых элементов. Элементы считаются соседними, если их индексы в столбцах и/или в строках различаются не более, чем на единицу.
- Определить среднее арифметическое значение элементов матрицы А (3x3), лежащих на главной диагонали.
Вариант 4
- Дана вещественная матрица М (5x4). Преобразовать матрицу: поэлементно вычесть последнюю строку из всех строк, кроме последней.
- Дана целочисленная матрица В (5x3). Найти номера столбцов, элементы каждого из которых образуют возрастающую последовательность
Вариант 5
- Дана вещественная матрица А (4x3). Преобразовать матрицу: поэлементно вычесть последнюю строку из всех столбцов, кроме последнего.
- В данной целочисленной квадратной матрице размера n х n (n – некоторая константа) указать индексы всех элементов, имеющих наибольшее значение.
Вариант 6
- Транспонированием квадратной матрицы называется такое ее преобразование, при котором строки и столбцы меняются ролями. Дана квадратная матрица размера n х n. Получить транспонированную матрицу.
- Вычислить сумму элементов матрицы М (5x5), лежащих справа от побочной диагонали.
Вариант 7
- Определить, является ли данная квадратная матрица симметричной относительно своей главной диагонали.
- Последний отрицательный элемент каждого столбца матрицы заменить нулем.
Вариант 8
- Найти количество элементов в каждой строке матрицы А (4х5), больших среднего арифметического элементов данной строки.
- В каждом столбце матрицы В (5х4) сменить знак максимального по модулю элемента на противоположный.
Пример
- Вычислить сумму элементов матрицы М (3x3), лежащих справа от главной диагонали.
# include
# include
void main(void)
{ float a[3][3];
int i,j;
float s=0;
clrscr();
for (i=0; i<=2; i++)
for (j=0; j<=2; j++)
{cout<<"a["<
cin>>a[i][j];
if (j>i) s+=a[i][j];}
cout<
getche();
}
- Подсчитать число элементов матрицы Q (3x4), кратных трем.
# include
# include
void main(void)
{ int a[3][4];
int i,j;
int s=0;
clrscr();
for (i=0; i<=2; i++)
for (j=0; j<=3; j++)
{cout<<"a["<
cin>>a[i][j];
if ((a[i][j]%3)==0) s++;}
cout<
getche(); }