Особливості обробки у мові c
Способи доступу до елементів структури:
змінна.поле
покажчик -> поле
Наприклад,
-
strcpy(stud.FIO,”Ivanov“);
stud.year =1985;
cout<<”Input FIO,year\n“);
cin>>ps->FIO>> ps->year;
Допустимі операції над структурами:
-
присвоювання (не можна порівнювати), наприклад,
TStudent stud;
TStudent stud_new = stud;
-
передача в якості параметра у функцію (за іменем, за покажчиком), наприклад,
void f1(TStudent stud_new)
void f2(TStudent *ps)
Щоб мати змогу змінити структуру, у функцiю пеpедається покажчик на неї.
-
повернення як результат з функції (тільки по покажчику), наприклад,
TStudent f1(TStudent stud_new).
З полями структур допускаються операції відповідно до їх типів.
В реальних задач, зазвичай, здійснюється обробка не окремих структур, а їх масивів:
<тип структури> <ім’я масиву>[<кількість елементів>].
Доступ до полів масиву структур аналогічний доступу до елементів цифрових і рядкових масивів. Зокрема, формат доступу за індексом елемента:
<ім'я_масиву>[<індекс>].<ім'я_поля>.
Приклад. Ввести масив структур з полями: назва книги, її автор, ціна книги. Відсортувати отриманий масив за алфавітом прізвищ авторів.
...
struct book // книга
{ char title[20];
char author[20];
}
book katalog[10]; // масив книг
void input(book[],int); // введення масиву книг
void print(book[],int); // виведення масиву книг
void sort(book[],int); // сортування масиву книг
//----------------------- головна функцiя --------------------------------------------------
int main()
{ int i=0,k,kol;
cout<<"input number of books:";
cin>>kol;
input(katalog, kol);
puts ("list of books");
print(katalog, kol);
sort(katalog, kol); // сортування книжок по автору
puts("sorted books list ");
print(katalog, kol);
getch(); }
//----------------------- введення масиву книжок -----------------------------------------
void input(book mas[ ],int n)
{ for (int j=0; j<n; j++)
{ cout<<"input titles:";
cin>>mas[j].title;
cout<<"input autor:";
cin>>mas[j].author;
}
}
//----------------------- виведення масиву книжок ----------------------------------------
void print(book mas[ ],int n)
{ for (int j=0; j<n; j++)
printf("%-22s %-22s \n",mas[j].title,mas[j].author);
}
//---------------------- сортування книжок по автору ------------------------------------
void sort (book mas[ ],int n)
{ book temp;
for (int k=0; k<n-1; k++)
for (int j=k+1; j<n; j++)
if (strcmp(mas[k].author,mas[j].author)>0)
{ temp=mas[k];
mas[k]=mas[j];
mas[j]=temp;
}
}