Пример1.
Сформировать таблицу Пифагора (таблица умножения) и вывести её на экран. #include
#include int main(void)
{ int p[9][9]; int i, j; for (i=0; i<=8; i++) //Цикл по строкам
for (j=0; j<=8; j++) //Цикл по столбцам p[i][j]= (i+1)*(j+1);
for (i=0; i<=8; i++)
{ for (j=0; j<=8; j++) cout << p[i][j] << "\t"; cout << endl; //Перевод курсора на сл. строку }
}
Пример2.
Задан двумерный массив b[10][10] целых чисел, заполненный случайными числами из отрезка [-10,10]. Найти и вывести на экран те элементы массива, которые больше заданного числа k.
#include
#include
#include #include int main(void)
{ int b[10][10]; int i, j, k;
srand(time(NULL)); for (i=0; i<=9; i++)
{ for (j=0; j<=9; j++) { b [i][j]=rand()%21-10; cout << b[i][j] << " ";
}; cout << endl;
}; cout << "Введите число k"; cin >> k; for (i=0; i<=9; i++)
for (j=0; j<=9; j++)
if (b[i][j]>k) cout << b[i][j] << "\t";
cout << endl; } //.
Пример3.
Задать и распечатать вещественный массив 10 на 10, состоящий из целых случайных чисел в интервале [1,100]. Найти сумму элементов, лежащих выше главной диагонали.
Главной является диагональ, проведённая из левого верхнего угла массива в правый нижний. При этом получается, что элементы, лежащие на главной диагонали будут иметь одинаковые индексы, а для элементов выше главной диагонали номер столбца будет всегда превышать номер строки.
#include
#include
#include #include int main(void)
{ float A[10][10]; int i, k;
float S; S=0; srand(time(NULL)); for (i=0; i<=9; i++)
{ for (k=0; k<=9; k++)
{
A[i][k]=(99.0*rand()/RAND_MAX)+1.0; cout << A[i][k] << " "; if (k>i) S=S+A[i][k];
}; cout << endl;
}; cout << "Сумма элементов выше главной диагонали равна" << S; } //.
2.9. Массивы указателей
Указатели как и переменные любого другого типа, могут объединяться в массивы. Объявление массива указателей из 10 элементов имеет вид int *x[10];. Каждому из элементов массива можно присвоить адрес. Например, пятому элементу этого массива присвоим адрес целой и ранее объявленной переменной у: х[4]=&у;. Если затем необходимо найти значение переменной у, это можно сделать, используя конструкцию *х[4].
C помощью массива указателей несложно запрограммировать динамическое создание двумерных массивов. Объявим массив 10 указтелей p:
int *p[10];
C каждым из них можно связать динамически созданный одномерный массив и интерпретировать его как строку матрицы:
for (i=0; i<=8; i++) //Цикл по строкам {p[i]=new int[20];} // Создание строки.
В результате получили следующую замысловатую конструкцию. Идентификатор p является именем массива указателей, которые содержат адреса первых элементов других массивов — строк матрицы. Выражение p[k] или равносильное ему *(p+k) представляют собой адрес первого элемента строки с номером k. Выражение *(p[k]+m) или *(*(p+k)+m) — элемент с номером m строки с номером k, то есть элемент двумерного массива, расположенный в строке k и столбце m. Заметим также, что динамически созданные «строки матрицы» не обязательно должны иметь одинаковый размер, а само понятие «матрица» в данном контексте уместно заменить выражением «массив массивов».
2.10. Практическое задание
При выполнении практического задания придерживайтесь следующей последовательности действий.
Обязательно изучите описание, предлагаемое выше.
Разберите примеры, приводимые в описании.
Осмыслите задачу, предлагаемую в вашем варианте.
Составьте словесный алгоритм решения задачи.
Представьте алгоритм решения в виде блок-схемы.
Переведите алгоритм на язык программирования.
2.10.1. Варианты заданий
Do'stlaringiz bilan baham: |