Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ „ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Кафедра ІСМ
Лабораторна робота №7
на тему:
Використання вказівників для роботи з масивами даних.
Збереження
масивів даних у динамічній пам’яті.
Львів-2008р.
Назва роботи:
Використання вказівників для роботи з масивами даних. Збереження масивів даних у динамічній пам’яті.
Мета роботи:
Освоїти способи звернення до елементів масивів за допомогою вказівників. Навчитись виділяти та використовувати динамічну пам’ять для розміщення масивів даних.
Завдання лабораторної роботи:
У завданнях першої частини необхідно:
Визначити кількість елементів масиву за допомогою макроконстанти директиви #define;
Для введення, опрацювання та виведення елементів масивів використати попередньо оголошені вказівники;
Введення вхідних даних та виведення результатів супроводжувати відповідними до умови задачі текстовими повідомленнями;
Після введення вхідних даних виконувати ехо-виведення їх значень на екран.
У завданнях другої частини необхідно:
Кількість елементів масиву ввести з клавіатури, після чого виділити необхідний об’єм динамічної пам’яті для розміщення масиву (див. табл. 14);
Занести у динамічну пам’ять введені з клавіатури дані; для звернення до елементів масиву перевагу надати використанню вказівників замість індексів;
Перед виходом з програми звільнити зайняту динамічну пам’ять.
Текст програми:
Програма 1
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define n 8
int sis( int z1, int *z2, int w)
{ int d,f;
for(d=0; d<w; d++)
if (z1!=*(z2+d)) f=1; else {f=0; break;}
return f;
}
void main()
{
int *a,*b,i,j,k=0;
a=(int *)malloc(n*sizeof(int));
b=(int *)malloc(n*sizeof(int));
clrscr();
printf("Введiть масив з %d елементiв\n",n);
for(i=0; i<n; i++)
scanf("%d",&*(a+i));
for(i=0; i<n; i++)
for(j=0; j<n; j++)
if(*(a+i)==*(a+j)&&i!=j&&sis(*(a+i),b,k)!=0)
{
*(b+k)=*(a+i);
k++;
}
printf("Елементи, якi повторються:\n");
for(i=0; i<k; i++)
printf("%d ",*(b+i));
getch();
}
Програма 2
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define n 3
#define m 3
void main()
{
int **a,i,j,x,k;
a=(int **)malloc(n*m* sizeof(int));
clrscr();
for(i=0; i<n; i++)
for(j=0; j<m; j++)
{
printf("a(%d,%d): ",i+1,j+1); scanf("%d",&*(*(a+i)+j));
}
for(x=0;x<n+m; x++)
{
for(i=0; i<n; i++)
for(j=0; j<m-1; j++)
if( *(*(a+i)+j)>(*(*(a+i)+(j+1))))
{
k=(*(*(a+i)+(j+1)));
(*(*(a+i)+(j+1)))=(*(*(a+i)+j));
(*(*(a+i)+j))=k;
}}
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
printf("%3d",*(*(a+i)+j));
printf("\n");
}
getch();
}
Висновки:
Я освоїв способи звернення до елементів масивів за допомогою вказівників. Навчився виділяти та використовувати динамічну пам’ять для розміщення масивів даних.