Смекни!
smekni.com

Мова програмування С++ (стр. 7 из 7)

Приклад 6:

# include <iostream.h>

// Функція сумує значення параметрів типу int

long summa (int k,…)// k – кількість параметрів, що додаються

{int *pik=&k;// вказівник, що звертається до параметрів функції

long total = 0;

for (;k;k--)// поки не вичерпано список параметрів

total+=*(++pik);// відбувається додавання

return total;// повернення результату

}

void main()

{// додаватимуться два параметри

cout<<”&bsol;n summa(2, 6, 4)=”<< summa(2,6,4);

// кількість параметрів, які потрібно додати - 6

cout<<”&bsol;n summa(6, 1, 2,3,4,5,6)= ”<< summa(6, 1,2,3,4,5,6);

}

Результат виконання:

summa(2,6,4)=10

summa(6,1,2,3,4,5,6)=21

Наступний приклад 7 ілюструє 2-й підхід до обмеження змінного списку параметрів. Програма містить функцію для визначення добутку змінної кількості параметрів. Ознакою кінця списку фактичних параметрів служить параметр з нульовим значенням.

Приклад 7:

# include <iostream.h>

double prod (doble arg, … )

{double aa=1.0;// початкове значення добутку

double *prt=&arg;// вказівник на перший елемент у списку

if (*ptr==0) return 0.0;// чи є перший елемент нулем?

for (; *ptr; ptr++) aa*=*ptr;// знаходження добутку

return aa;

}

void main()

{cout<< “&bsol;n prod(2.0, 4.0, 3.0, 0.0)=”<< prod (2.0, 4.0, 3.0, 0.0);

cout<<”“&bsol;n prod(1.4, 3.0, 0.0, 16.0)=”<< prod (1.4, 3.0, 0.0, 16.0);

cout<<“&bsol;n prod(0.0)=”<< prod (0.0);

}

Результат виконання:

рrod (2.0, 4.0, 3.0, 0.0)=24

рrod (1.4, 3.0, 0.0, 16.0)=4.2

рrod (0.0)=0.0


10. Структури

Структура об’єднує логічно зв’язані дані різних типів. При описі структури програміст створює новий тип, на основі базових або інших складових типів, за допомогою якого можна в подальшому описувати реальні об’єкти програми, які зберігатимуться у пам’яті. Склад цих об’єктів визначатиметься типом структури, за допомогою якої вони описуються. Структурний тип даних визначається описом:

struct <ім’я структури> {

<опис елементів>

};

Для виділення пам’яті під структуру необхідно визначити структурну змінну:

<ім’я структури> <ім’я змінної>;

Приклад 1.

struct lab{

int num;

char* name;

};// визначення структурного типу з іменем lab

lab Lаb_10;// опис конкретної структуриз іменем Lab_10.

Можна одночасно визначати структурний тип і описувати за допомогою нього структуру:

Приклад 2.

struct gr // ім’я структурного типу

{ char [10];// елемент структури

int year, nomer;// однотипні елементи структури

} grupa1; // ім’я структурної змінної

Елементи структури називають полями (num, name). Поля можуть бути будь-якого базового чи похідного типу, наприклад, масивом, вказівником, об’єднанням або іншою структурою.

Для звернення до полів структури використовуються уточнені імена через операцію вибору: “крапка” (“.”) при зверненні через ім’я структури і операцію непрямого доступу “->” при зверненні через вказівник.

Приклад 3.

Lab_10.num=10;

lab*ptrlab=&Lab_10;

ptrlab->name=”Структури”;

Ввід/вивід структур виконується поелементно (cin>>Lab_10.num;).

Структури одного типу можна копіювати.

Структури, пам’ять під які виділяється на етапі компіляції, можна ініціалізувати, перераховуючи значення їх елементів:

lab Lab10={10, “Структури”}.

Можна створювати масиви структур.

Приклад 4.

// структура для опису дати

struct date { int day,month,year;};

/* масив з 5-ти структур типу date , кожна з яких складається з 3-х елементів типу int, яким надаються початкові значення*/

date d[5]={ { 1,3,1980}, { 5,1,1990}, {1,1,2002}};

Приклад 5.

Програма, що демонструє використання структур для ведення обліку успішності студентів деякої академічної групи:

#include <conio.h>

#include <iostream.h>

struct Spysok {

char PIB[20];// масив для зберігання прізвищ студентів

char Grup[10];// номер групи

int Ot[3];// масив з трьох оцінок

float S_Bal;// середній бал

} *vid;// вказівник, на структуру

void Vvid(int nom, Spysok *vid)

{ cout << "&bsol;n Vvedit vidomosti &bsol;n" << (nom+1);

cout << "&bsol;n PIB - "; cin>>vid->PIB;

cout << " Nomer Gr - "; cin >> vid->Grup;

float s=0;

for(int i=0;i<3;i++) {

cout << "&bsol;n Otsinki - "; cin >> vid->Ot[i];

s+=vid->Ot[i];

}

vid->S_Bal=s/3;

}

void main()

{ struct Spysok Stud[50]; int i, N; char Litera;

clrscr();

cout << "&bsol;n Vvedit kilkist studentiv u grupi < 50 "; cin >> N;

for(i=0;i<N;i++) Vvid(i,&Stud[i]);

cout << "&bsol;n Spysok studentiv”;

for(i=0;i<N;i++)

cout<<"&bsol;n"<<Stud[i].PIB<<endl<<Stud[i].Grup<<endl<<Stud[i].S_Bal;

cout << "&bsol;n Poshuk vidomostey pro studentiv za pershoyu&bsol; literoyu prizvyscha&bsol;n";

cin >> Litera;

if (islower(Litera))toupper(Litera);

cout << "&bsol;n Vidomosti pro Students:";

int kod_p=0;

for(i=0;i<N;i++)

if(Stud[i].PIB[0]==Litera)

{ kod_p=1;

cout<<”&bsol;n"<<Stud[i].PIB

<<endl<<Stud[i].Grup<<endl<<Stud[i].S_Bal;

}

if(kod_p==0) cout << " Takyx nemae!";

getch();

}


Список використаної літератури

1. Подбельский В.В. Язык СИ++: Уч. Пособие. –5-е издание. –М.: Финансы и статистика, 2001. –560 с.

2. Подбельский В. В., Фомин С. С. Программирование на языке Си: Учеб. пособие. –М.:Финансы и статистика, 1998. –600с.

3. Павловская Т.А. С/С++. Программирование на языке высокого уровня: Учебник для ВУЗов. –СПб.:Питер, 2003. –461 с.

4. Павловская Т.А., Щупак Ю.А. С/С++. Практикум. –СПб.: Питер, 2002. –204 с.

5. Дейтел Х., Дейтел П. Как программировать на С++: Пер. с англ. –М.: Бином, 2000. –1024 с.

6. Прата С. Язык программирования С++. Лекции и упражнения. Учебник: Пер. с англ. –СПб.: ДиаСофтЮП, 2003. –1104 с.

7. Либерти Дж. Освой самостоятельно С++. –М.: Вильямс, 2001. –456 с.

8. Культин Н. С/С++ в задачах и примерах. –СПб.:БХВ-Петербург, 2001. –288 с.