Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ „ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Кафедра ІСМ
Лабораторна робота №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();
}
Висновки:
Я освоїв способи звернення до елементів масивів за допомогою вказівників. Навчився виділяти та використовувати динамічну пам’ять для розміщення масивів даних.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!