Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Структури та об’єднання

 

 

Підготував:

студент групи СП-11

Ніщик Сергій Ігорович

Варіант №21

 

 

Тернопіль, 2015

Мета:

одержати навички в написанні програм з використанням структур;

зрозуміти механізм обміну інформацією між структурами;

навчитись передавати структури в якості параметрів функції;

одержати навички роботи зі змінними типу структури;

вивчити механізм передачі параметрів у функцію по посиланню через вказівник.

 

1. Написати програму, яка повинна включати функції для:

виведення шапки таблиці;

виведення даних одного рядка таблиці;

введення і виведення даних масиву структур, визначення суми значень елементів одного стовпця масиву структур;

зміну місцями двох елементів масиву записів, наприклад першого і останнього рядка; відомості виводити у відсортованому вигляді згідно заданого поля.

 

Продажа програмних продуктів

Назва

Фірма - виробник

Вартість

Об’єм, Мб

Кількість на складі

 

//лістинг програми

#include<iostream>

#include<stdlib.h>

#include<time.h>

#include<conio.h>

#include<string.h>

#include<iomanip>

using namespace std;

char firms[][10]={"Microsoft", "IMESC", "IBM", "Accenture", "Eleks", "SoftServe", "Solutions", "Lohika", "Itera", "Intelex","Emsisoft","AVG"};

char names[][10]={"AVG", "Emsisoft", "Avira", "Eset", "Opera", "Mozilla", "Chrome", "Steam", "AIMP3", "Skype","Eleks","Itera"};

struct market

{

char name[20];

char firma[20];

int cost;

int size;

int number;

} ar[20];

void input(int n)

{

srand(time(0));

for(int i=0; i<n; i++)

{

strcpy(ar[i].name, names[rand()%12]);

strcpy(ar[i].firma, firms[rand()%12]);

ar[i].cost=rand()%50+5;

ar[i].size=rand()%100+5;

ar[i].number=rand()%50+1;

}

}

int menu()

{

int ch;

cout<<endl;

getch();

do

{

cout<<endl<<endl<<"Можливi операцiї над таблицею: "<<endl<<endl;

cout<<"1. Виведення таблицi даних -> Натиснiть '1'"<<endl;

cout<<"2. Визначення суми значень стовпця -> Натиснiть '2'"<<endl;

cout<<"3. Змiна мiсцями двох рядкiв таблицi -> Натиснiть '3'"<<endl;

cout<<"4. Вiдсортувати за зростанням заданий стовпець -> Натиснiть '4'"<<endl;

cout<<"5. Виведення шапки таблицi -> Натиснiть '5'"<<endl;

cout<<"6. Вихiд з програми -> Натиснiть '6'"<<endl;

cout<<endl<<"Ваша команда - "; cin>>ch;

cout<<endl<<endl;

}

while(ch>7&&ch<1);

return ch;

}

void tab()

{

cout<<" << ||Продаж програмних продуктiв|| >>"<<endl;

cout<<"||====|============|=================|==========|===========|==========||"<<endl;

cout<<"|| № | Назва | Фiрма-виробник | Вартiсть | О'бєм МБ | Кiлькiсть||"<<endl;

cout<<"||====|============|=================|==========|===========|==========||"<<endl;

}

void change(int n)

{

int m1, m2, c1, s1, n1;

char nm[20], fr[20];

cout<<"Функцiя. Змiна мiсцями двох рядкiв таблицi"<<endl;

cout<<"Введiть номер першого рядка - "; cin>>m1;

cout<<"Введiть номер другого рядка - "; cin>>m2;

 

strcpy(nm,ar[m1-1].name);

strcpy(ar[m1-1].name, ar[m2-1].name);

strcpy(ar[m2-1].name, nm);

 

strcpy(fr,ar[m1-1].firma);

strcpy(ar[m1-1].firma, ar[m2-1].firma);

strcpy(ar[m2-1].firma, fr);

 

c1=ar[m1-1].cost;

ar[m1-1].cost=ar[m2-1].cost;

ar[m2-1].cost=c1;

 

s1=ar[m1-1].size;

ar[m1-1].size=ar[m2-1].size;

ar[m2-1].size=s1;

 

n1=ar[m1-1].number;

ar[m1-1].number=ar[m2-1].number;

ar[m2-1].number=n1;

}

void sort(int n)

{

int m, c1, s1, n1; char nm[20], fr[20];

cout<<"Функцiя. Сортування за зростанням стовпця.";

cout<<endl<<"Введiть номер стовпця - ";

cin>>m;

if(m==4)

{

for(int i=0; i<n-1; i++)

for(int j=n-2; j>=i; j--){

if(ar[j].cost>ar[j+1].cost){

strcpy(nm,ar[j].name);

strcpy(ar[j].name, ar[j+1].name);

strcpy(ar[j+1].name, nm);

 

strcpy(fr,ar[j].firma);

strcpy(ar[j].firma, ar[j+1].firma);

strcpy(ar[j+1].firma, fr);

 

c1=ar[j].cost;

ar[j].cost=ar[j+1].cost;

ar[j+1].cost=c1;

 

s1=ar[j].size;

ar[j].size=ar[j+1].size;

ar[j+1].size=s1;

 

n1=ar[j].number;

ar[j].number=ar[j+1].number;

ar[j+1].number=n1;

}

}

}

if(m==5)

{

for(int i=0; i<n-1; i++)

for(int j=n-2; j>=i; j--){

if(ar[j].size>ar[j+1].size){

strcpy(nm,ar[j].name);

strcpy(ar[j].name, ar[j+1].name);

strcpy(ar[j+1].name, nm);

 

strcpy(fr,ar[j].firma);

strcpy(ar[j].firma, ar[j+1].firma);

strcpy(ar[j+1].firma, fr);

 

c1=ar[j].cost;

ar[j].cost=ar[j+1].cost;

ar[j+1].cost=c1;

 

s1=ar[j].size;

ar[j].size=ar[j+1].size;

ar[j+1].size=s1;

 

n1=ar[j].number;

ar[j].number=ar[j+1].number;

ar[j+1].number=n1;

}

}

}

if(m==6)

{

for(int i=0; i<n-1; i++)

for(int j=n-2; j>=i; j--){

if(ar[j].number>ar[j+1].number){

strcpy(nm,ar[j].name);

strcpy(ar[j].name, ar[j+1].name);

strcpy(ar[j+1].name, nm);

 

strcpy(fr,ar[j].firma);

strcpy(ar[j].firma, ar[j+1].firma);

strcpy(ar[j+1].firma, fr);

 

c1=ar[j].cost;

ar[j].cost=ar[j+1].cost;

ar[j+1].cost=c1;

 

s1=ar[j].size;

ar[j].size=ar[j+1].size;

ar[j+1].size=s1;

 

n1=ar[j].number;

ar[j].number=ar[j+1].number;

ar[j+1].number=n1;

}

}

}

}

void output(int n)

{

cout<<" << ||Продаж програмних продуктiв|| >>"<<endl;

cout<<"||====|============|=================|==========|===========|==========||"<<endl;

cout<<"|| № | Назва | Фiрма-виробник | Вартiсть | О'бєм МБ | Кiлькiсть||"<<endl;

cout<<"||====|============|=================|==========|===========|==========||"<<endl;

for(int i=0; i<n; i++)

{

cout<<"||"<<setw(3)<<i+1<<" |"<<setw(11)<<ar[i].name<<" |"

<<setw(16)<<ar[i].firma<<" |"

<<setw(9)<<ar[i].cost<<" |"

<<setw(10)<<ar[i].size<<" |"

<<setw(9)<<ar[i].number<<" ||"<<endl;

}

cout<<"||====|============|=================|==========|===========|==========||";

}

void suma(int n)

{

int m, s=0;

cout<<"Функцiя.Визначення суми значень одного стовпця"<<endl;

cout<<"Введiть номер стовпця - ";

cin>>m;

if(m==4) for(int i=0; i<n; i++) s+=ar[i].cost;

if(m==5) for(int i=0; i<n; i++) s+=ar[i].size;

if(m==6) for(int i=0; i<n; i++) s+=ar[i].number;

cout<<"Сума значень "<<m<<"-го "<<"стовпця = "<<s<<".";

}

int main()

{

setlocale(0,"ukr");

int n, f;

cout<<"Введiть кiлькiсть програмних продуктiв - ";

cin>>n;

input(n);

for(;;)

{

f=menu();

switch(f)

{

case 1: output(n);break;

case 2: suma(n);break;

case 3: change(n);break;

case 4: sort(n);break;

case 5: tab();break;

case 6: cout<<"Вихiд з програми. До побачення.:)"; goto next;

}

}

next:

return 0;

}

Виконання

 

 

2. Вимоги до програми:

- Заповнити таблицю не менше як 10 записами вихідних даних.

- Обчислити значення необхідних полів (позначених?) за наведеними у завданні формулами.

- Вивести на екран сформовану відомість.

- Відсортувати таблицю за обчисленим полем. Якщо їх декілька – вибрати за власним бажанням.

 

 

//лістинг програми

 

#include<iostream>

#include<stdlib.h>

#include<time.h>

#include<string.h>

#include<math.h>

#include<iomanip>

#include<conio.h>

using namespace std;

const float N=6.0*pow(10,0.26*10);

char names[][20]={"Water","Sand","Diomant","Stone","Wolfram","Oxigen","Plastic","Gold","Silver","Ferum","Oxygenium","Fluorum","Sulfur","Chlorum","Aluminium",

"Germanium","Arsenicum","Zirconium","Rhodium","Stannum","Plumbum","Terbium","Europium","Cerium","Caesium","Tellurium","Stibium"};

struct parametr

{

char name[20];

float V;

float M;

float d;

float m;

} arr[20];

void sort(int n)

{ float c, v, mas, r; int km; char str[20];

cout<<"Функцiя. Сотування стовпця 'Маса молекули'"<<endl<<endl;

cout<<"Виберiть команду: "<<" 1 - спадання"<<endl

<<" "<<" 2 - зростання"<<endl<<endl;

cout<<"Ваша команда - "; cin>>km;

if(km==1)

{

for(int i=0; i<n-1; i++)

for(int j=n-2; j>=i; j--)

{

if(arr[j].m<arr[j+1].m)

{

strcpy(str,arr[j].name);

strcpy(arr[j].name,arr[j+1].name);

strcpy(arr[j+1].name,str);

v=arr[j].V;

arr[j].V=arr[j+1].V;

arr[j+1].V=v;

mas=arr[j].M;

arr[j].M=arr[j+1].M;

arr[j+1].M=mas;

r=arr[j].d;

arr[j].d=arr[j+1].d;

arr[j+1].d=r;

c=arr[j].m;

arr[j].m=arr[j+1].m;

arr[j+1].m=c;

}

}

}

if(km==2)

{

for(int i=0; i<n-1; i++)

for(int j=n-2; j>=i; j--)

{

if(arr[j].m>arr[j+1].m)

{

strcpy(str,arr[j].name);

strcpy(arr[j].name,arr[j+1].name);

strcpy(arr[j+1].name,str);

v=arr[j].V;

arr[j].V=arr[j+1].V;

arr[j+1].V=v;

mas=arr[j].M;

arr[j].M=arr[j+1].M;

arr[j+1].M=mas;

r=arr[j].d;

arr[j].d=arr[j+1].d;

arr[j+1].d=r;

c=arr[j].m;

arr[j].m=arr[j+1].m;

arr[j+1].m=c;

}

}

}

}

int enter(int n)

{

char str[20];

cout<<"Функцiя. Виведення iнформацiї про речовину.";

cout<<endl<<"Введiть назву речовини - ";

for(int j=0; j<n; j++)

{

cin>>str;

for(int i=0; i<n; i++)

{

if(strcmp(str,arr[i].name)==0)

{

cout<<endl<<endl;

cout<<"||===|==========|========|======|==================|===================||"<<endl;

cout<<"|| № | Назва | О'бєм | Маса | Розмiр | Маса молекули ||"<<endl;

cout<<"||===|==========|========|======|==================|===================||"<<endl;

cout<<"||"<<setw(2)<<i+1<<" |"<<setw(9)<<arr[i].name<<" |"

<<setw(7)<<arr[i].V<<" |"

<<setw(5)<<arr[i].M<<" |"

<<setw(17)<<arr[i].d<<" |"

<<setw(18)<<arr[i].m<<" ||"<<endl;

cout<<"||===|==========|========|======|==================|===================||"<<endl;

return 0;

}

}

cout<<"Введеної речовини не виявлено. Спробуйте ще раз - ";

}

}

void input(int n)

{

srand(time(0));

for(int i=0; i<n; i++)

{

strcpy(arr[i].name,names[rand()%27]);

arr[i].V=(float)(rand()%100)/1000;

arr[i].M=(float)(rand()%1000)/100;

arr[i].d=pow(arr[i].V/N,1.0/3);

arr[i].m=arr[i].M/N;

}

}

void output(int n)

{

cout<<" << ||Визначення параметрiв молекул речовини|| >>"<<endl;

cout<<"||====|===========|========|======|==================|===================||"<<endl;

cout<<"|| № | Назва | О'бєм | Маса | Розмiр | Маса молекули ||"<<endl;

cout<<"||====|===========|========|======|==================|===================||"<<endl;

for(int i=0; i<n; i++)

{

cout<<"||"<<setw(3)<<i+1<<" |"<<setw(10)<<arr[i].name<<" |"

<<setw(7)<<arr[i].V<<" |"

<<setw(5)<<arr[i].M<<" |"

<<setw(17)<<arr[i].d<<" |"

<<setw(18)<<arr[i].m<<" ||"<<endl;

}

cout<<"||====|===========|========|======|==================|===================||"<<endl;

}

 

int menu()

{

int ch;

cout<<endl;

getch();

do

{

cout<<endl<<endl<<"Введiть команду для виконання: "<<endl<<endl;

cout<<"1. Виведення таблицi даних -> Натиснiть '1'"<<endl;

cout<<"2. Виведення будь-якого iз записiв вiдомостi -> Натиснiть '2'"<<endl;

cout<<"3. Вiдсортувати поле 'Маса молекули' -> Натиснiть '3'"<<endl;

cout<<"4. Вихiд з програми -> Натиснiть '4'"<<endl;

cout<<endl<<"Ваша команда - "; cin>>ch;

cout<<endl<<endl;

}

while(ch>5&&ch<1);

return ch;

}

int main()

{

setlocale(0,"ukr");

int n, f;

cout<<"Введiть кiлькiсть речовин - ";

cin>>n;

input(n);

for(;;)

{

f=menu();

switch(f)

{

case 1: output(n);break;

case 2: enter(n);break;

case 3: sort(n);break;

case 4: cout<<"Вихiд з програми. До побачення.:))"; goto go;

}

}

go:

return 0;

}

 

Виконання

 

 

Висновок: отже я одержав навички в написанні програм з використанням структур; зрозумів механізм обміну інформацією між структурами;

навчився передавати структури в якості параметрів функції; одержав навички роботи зі змінними типу структури; вивчив механізм передачі параметрів у функцію по посиланню через вказівник.

 


<== предыдущая | следующая ==>
Побудова у просторі тривимірних графіків функцій | Завдання. Тема: Використання об'єктів в скриптах

Date: 2015-12-12; view: 407; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.008 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию