Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursova_Belyakov.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.74 Mб
Скачать

Розділіі. Практична частина

Завдання 1. Лінійні програми

Скласти лінійну програму для обрахунку:

Аргумент x=2.456вводиться з клавіатури.

Код програми:

#include <math.h>

#include <conio.h>

#include <stdio.h>

main()

{ float x,s,o,y;

const float R=4.21, g=3, a=11.6, Q=89.52,d=1;

scanf("%f",&x);

o=x*g+a;

y=pow(6+a,1/3);

s=pow((d*d+log(y)-R*Q)*o/R,0.5);

printf("\n s=%f ", s);

getch();

return 0;}

Результат:

Блок схема:

Завдання 2. Програми з розгалуженням

Скласти програму з розгалуженням для обрахунку:

a=1.62, b=-1.25

Значення аргументут x вводиться з клавіатури, або 1.62, або 1.41.

Код програми:

#include <math.h>

#include <conio.h>

#include <stdio.h>

#define A 1.62

//#define B -1.25

main()

{ float x,y;

scanf("%f",&x);

if (x==A)

{

y=exp(abs(x+A))*sin(x);

printf("\n y=%f x=%f\n",y,x);

}

else if(x>A&&x<pow(A,2))

{

y=pow(((x-A)*cos(x)),2);

printf("\n y=%f x=%f \n",y,x);

}

else printf("Vvedene chuslo za mezhamu");

getch();

return 0;}

Результат:

Блок схема:

Завдання 3. Циклічні програми з регулярною змінною аргументу

Скласти циклічну програму з регулярною змінною:

a=21.4, b=1.95

Початкове значення аргументу x 4.6, крок 1.5, кількість кроків 8.

Код програми:

#include <stdio.h>

#include <math.h>

#include <conio.h>

#define a 21.4

#define b 1.95

#define pi 3.14

main()

{

float x,t;

for(x=4.6;x<16.6;x+=1.5)

{

t=(pi-pow(x,2))*sin(sqrt(2.1*b+x*log(x)));

printf("t=%f x=%f \n",t,x);

}

getch();

return 0;

}

Результат:

Блок схема:

Завдання 4-1.Циклічні програми з регулярною змінною аргументу, які містять розгалуження

Визначити найбільший спільний дільник (НСД) трьох введених з клавіатури цілих чисел або вивести повідомлення про його відсутність, якщо такий дільник дорівнює 1. Підказка: пошук НСД вести, починаючи від найменшого з введених чисел.

Код програми:

#include <stdio.h>

#include <conio.h>

int gcd(int i, int j)

{

while(i&&j)

{

if(i<j)

j%=i;

else

i%=j;

}

return i|j;

}

main()

{

int a,b,c,D;

printf("Enter a,b,c\n");

scanf("%d%d%d",&a,&b,&c);

D=gcd(c,(gcd(a,b)));

if(D!=1)

printf("Najbilshuj spilnuj dilnuk =%d\n",D);

else printf("Nemae najbilshogo spilnogo dilnuka!!!");

getch();

return 0;

}

Результат:

Блок схема:

Завдання 4-2.Циклічні програми з регулярною змінною аргументу, які містять розгалуження

Обчислити значення функції

у набуває значення від 0 до 8 з кроком 0.15.

Код програми:

#include <math.h>

#include <conio.h>

#include <stdio.h>

main()

{ float x,y,p; x=4.6;

for(y=0;y<=8;y=y+0.15)

{

if (y<0.6)

{x=y*y+y+1;

p=pow(x+exp(x-2),0.5) ;

printf("p=%f y=%f \n",p,y); }

else if (y>=1)

{x=y-1;

p=pow(x+exp(x-2),0.5) ;

printf("p=%f y=%f \n",p,y); }

else printf("non difine p y=%f \n",y); }

getch();

return 0;}

Результат:

Блок схема:

Завдання 5-1. Одновимірні масиви

З клавіатури ввести масив дійсних чисел (максимальна розмірність – 30 елементів). Циклічно зсунути його елементи на одну позицію ліворуч. Надрукувати отриманий масив. Підказка: циклічне зсування означає, що перший елемент масиву переходить на місце зсунутого останнього.

Код програми:

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

main()

{ int i,j,kk,k,max,flag,n,R;

const int M=30;

int nat[M];

scanf("%d\n",&n);

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

{

scanf("%d\n",&nat[i]);

}

kk=nat[0];

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

{

nat[i]=nat[i+1];

}

nat[n-1]=kk;

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

{

printf("\n nat%d=%d",i,nat[i]);

}

getch();

return 0;}

Результат:

Блок схема:

Завдання 5-2.Одновимірні масиви

Дано одновимірний масив Х, який складається з 12 елементів, обчислити

Результат обчислення вивести і вигляді масиву у.

Код програми:

#include <stdio.h>

#include <conio.h>

#include <math.h>

main()

{

float i,x[12],y[12];

for(int k=0;k<12;k++)

{

scanf("%f\n",&x[k]);

if((abs(x[k]))<0.1)

y[k]=x[k]-(1/3)*x[k]*x[k]*x[k];

else

y[k]=cos(3.14/2-x[k]);

}

for(int k=0;k<12;k++)

printf("y[%d]=%f \n",k+1,y[k]);

getch();

return 0;}

Результат:

Блок схема:

Завдання 6.Використання вказівників для роботи з масивами даних

З клавіатури ввести довге беззнакове ціле число. Утворити масив з цифр цього числа. Потім сформувати і надрукувати нове число з інверсним (зворотним) порядком цифр.

Код програми:

#include <stdio.h>

#include <conio.h>

#include <iostream.h>

main()

{

int A[25];

int i,b,a ;

cin>>a;

b=0;

while (a>0)

{

A[b]=a%10;

a/=10;

b++;

}

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

a=a*10+A[i];

printf("\n a=%d",a);

getch();

return 0;

}

Результат:

Блок схема:

Завдання 7.Циклічні програми з накопиченням суми або добутку

Обчислити значення функції

Аргумент х змінюється від початкового значення 1.3 до кінцевого значення -14.3. Кількість значень аргументу n=9; a=1.32.Код програми:

#include<stdio.h>

#include <math.h>

#include <conio.h>

#define n 9

#define a 1.32

main()

{

float y,x,b,S,dx;

dx=13/9;

y=0;

for(x=1.3;x<=14.3;x+=dx)

y+=(pow(a+x,2))/(1+pow(cos(x),2));

printf("\n suma S=%f\n",y);

getch();

return 0;

}

Результат:

Блок схема:

Завдання 8.Вкладені цикли

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

Позначення індкса: i

Номери індекса:1, 2, 3

Значення індексної змінної:1.95, 0.87, 1.29

Функція:

Параметр циклу с, початкове значення 0.26, кінцеве 1.26, крок 0.2

Код програми:

#include <stdio.h>

#include <math.h>

#include <conio.h>

#define p 4.86

main()

{

float b,c;

float a[3]={1.95,0.87,1.29};

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

{

printf("\n a=%f\n",a[i]);

for(c=0.26;c<1.26;c+=0.2)

{

b=(a[i]*(p+1))/(p*sin(c));

printf(" b=%f c=%f\n",b,c);

}

}

getch();

return 0;

}

Результат:

Блок схема:

Завдання 9.Двовимірні масиви, сортування масивів

Дано матрицю А розміром 4х5. Визначити кількість елементів в кожному рядку матриці А, модуль яких дорівнює порядковому номеру елемента в рядку. На друк вивести кількість таких елементів для кожного рядка.

Код програми:

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

main()

{

int i,j,n,k;

int a[4][5]={{1, 0, 0, 0,0},

{1, 2, -1, 22,3},

{1, 2, -1, -2,3},

{1, -3, -1, -4,5}};

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

{

k=0;

for(j=0;j<5;j++)

if (abs(a[i][j])==j+1)

k++;

printf("Kilkist y riadky=%d\n",k);

}

getch();

return 0;

}

Результат:

Блок схема:

Завдання 10.Процедури-функції

Дано квадратну матрицю А розміром nxn. Скласти програму нормування матриці, поділивши всі елементи кожного рядка на максимальний елемент за модулем цього рядка. Пошук максимального елемента рядка оформити у вигляді процедури.

Код програми:

#include <stdio.h>

#include <conio.h>

#include <math.h>

#define n 4

float norm(float x,float y);

main()

{

int i,j;

float max[n],A[n][n]={{4,-5,6,2},

{2,-2,3,4},

{-9,7,1,7},

{5,-5,-5,5}};

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

{

printf("\n");

max[i]=fabs(A[i][0]);

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

{

max[i]=norm(max[i],A[i][j]);

printf(" %f ",A[i][j]);

}

}

printf("\n");

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

{

printf("\n");

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

{

A[i][j]= A[i][j] / max[i];

printf(" %f ",A[i][j]);

}

}

getch();

return 0;

}

float norm(float x,float y)

{

if(x<fabs(y))

x=fabs(y);

return x;

}

Результат:

Блок схема:

Завдання 11.Підпрограми-функції

Скласти процедуру-функцію, яка обчислює значення х аргументу монотонної функції, при якому f(х)=0, згідно формули:

Очевидно:

Код програми:

#include <conio.h>

#include <stdio.h>

#include <math.h>

float argyment(float x,float a, float b, int i);

main()

{

int i;

float a,b,X;

printf(" Vveditj a ta b \n");

scanf("%f%f",&a,&b);

X=(b-a)/2;

for(i=2;i<5;i++)

{

X=argyment(X,a,b,i);

printf(" X=%f\n",X);

}

getch();

return 0;

}

float argyment(float x,float a, float b, int i)

{

float n,sign;

if(x>0) sign=1;

else if(x==0) sign=0;

else if(x<0) sign=-1;

x=x-sign*((b-a)/pow(2,i));

return x;

}

Результат:

Блок схема:

Завдання 12-1.Опрацювання символьних рядків

Перевірити, чи введений з клавіатури символьний рядок є правильним записом беззнакового цілого числа у системі числення з основою 5 (з можливими символами пропуску перед числом і після нього). Якщо так, то визначити і надрукувати десяткове значення цього числа.

Кодпрограми:

#include <stdio.h>

#include <math.h>

#include <conio.h>

#include <string.h>

main()

{

clrscr();

int n1,n2,i,x=0,k,m1,m2;

char text[150], text2[150], slovo2[40], prslovo[40];

gets(text);

k=strlen(text);

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

if(text[i] == ' ')

{

x++;

if(x==1)n1=i;

if(x==2)n2=i;

}

for(i=n1+1;i<n2;i++)

slovo2[i-(n1+1)]=text[i];

x=0;

for(i=k;i>0;i--)

if(text[i] == ' ')

{

x++;

if(x==1)m2=i;

if(x==2)m1=i;

}

int c=(m2-m1)-(n2-n1);

for(i=m1+1;i<=m2;i++)

prslovo[i-(m1+1)]=text[i];

for(i=0;i<=n1;i++) //До першого пропуску

text2[i]=text[i];

for(i=n1+1;i<n1+(m2-m1);i++) //Вставка перед останнбого слова замість другого

text2[i]=prslovo[i-(n1+1)];

for(i=n1+(m2-m1);i<=m1+c;i++) //Після другого слова

text2[i]=text[i-c];

for(i=m1+c+1;i<m2;i++) //Вставка другого замість перед останнього

text2[i]=slovo2[i-(m1+c+1)];

for(i=m2;i<k;i++) //Вставка останнього слова

text2[i]=text[i];

for(i=0;i<k;i++) //Вивід перробленого речення

printf("%c",text2[i]);

getch();

return 0;}

Результат:

Блок схема:

Завдання 12-2.Опрацювання символьних рядків

В заданому тексті знайти і вивести на друк цифри, які містяться в ньому, і їх кількість.

Кодпрограми:

#include <stdio.h>

#include <stdio.h>

#include <conio.h>

main()

{ char *pStr;

char str[80];

int isNumber = 0,k=0;

gets(str);

pStr = str;

while (*pStr) {

if (*pStr >= '0' && *pStr <= '9') {

isNumber = 1;

k++;

printf("%c", *pStr);

} else {

if (isNumber) {

isNumber = 0;

printf(" ");

} }

pStr++;

}

printf("\nKilkistb cufr y danomy rechenni=%d",k);

getch();

return 0;}

Результат:

Блок схема:

Завдання 13. Застосування бібліотечних функцій для роботи з символами та символьними рядками

З клавіатури ввести речення. Визначити, чи входить до його складу задане слово (регістри літер не враховувати). Якщо так, то надрукувати номер цього слова в реченні, інакше вивести відповідне повідомлення.

Код програми:

#include <iostream.h>

#include <conio.h>

#include <stdio.h>

#include <string.h>

int main()

{

char line[1024], *word[100], slovo[100];

int n=0,k=1,m=0;

cout<<"Enter rechennia: ";

gets(line);

cout<<"\nEnter slovo: ";

gets(slovo);

word[n] = strtok(line," ");

while(word[n])

{

if(!strcmp(word[n],slovo))

{

cout<<"Nomer zadanogo slova: "<<k;

m++;

}

word[++n] = strtok(NULL," ");

k++;

}

if(m==0) cout<<"Zadanogo slova nemae y rechenni!!!";

getch();

return 0;

}

Результат:

Блок схема:

Завдання 14. Багатовимірні масиви та масиви символьних рядків

Ввести послідовність символьних рядків, у кожному з яких записано прізвище, ім’я та по-батькові одного студента. Визначити і запам’ятати стать кожного. Потім скоротити рядки, залишивши тільки прізвище та ініціали. Надрукувати скорочений список, вказавши в дужках стать кожного студента.

Код програми:

#include <stdio.h>

#include <conio.h>

#include <iostream.h>

void FFF(char M[]);

main()

{

char A[100],B[100],C[100];

cout<<"Vvedu PIB persogo stydenta:";

gets(A);

cout<<"Vvedu PIB drygogo stydenta:";

gets(B);

cout<<"Vvedu PIB tretiogo stydenta:";

gets(C);

cout<<"Skorochenuj spusok stydentiv: \n";

FFF(A);

FFF(B);

FFF(C);

getch();

return 0;

}

void FFF(char M[])

{

int i,k,n=0,n1,n2;

char im[20], *st;

k=strlen(M);

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

if(M[i]==' ')

{

n++;

if(n==1)n1=i+1;

if(n==2)n2=i;

}

for(i=n1;i<n2;i++)

im[i-n1]=M[i];

im[i-n1]='\0';

if(im[i-n1-1]=='a')st="zh"; else st="ch";

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

{

cout<<M[i];

if(i==n1) cout<<".";

}

cout<<M[n2+1]<<"."<<"("<<st<<")\n";

}

Результат:

Блок схема:

Завдання 15. Файли

Сформувати файл А, що містить інформацію про кінострічки:

- назва фільму;

- рік випуску;

- кіностудія;

- режисер.

З файлу А вибрати і переписати у файл В інформацію про кінострічки, зняті кіностудією ім. Довженка у 198592 рр.

Код програми:

#include <conio.h>

#include <stdio.h>

#include <fstream.h>

struct kino

{

char name[50], studia[50], rejiser[50];

int rik;

};

main()

{

int i;

kino A[3];

ofstream fileo("A.txt");

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

{

cout << "nazva filmu: ";

cin >> A[i].name;

cout << "rik: ";

cin >> A[i].rik;

cout << "studia: ";

cin >> A[i].studia;

cout << "rejiser: ";

cin >> A[i].rejiser;

fileo << A[i].name << "\t"

<< A[i].rik << "\t"

<< A[i].studia << "\t"

<< A[i].rejiser << "\n";

}

ifstream filei("A.txt");

ofstream fielTwo("B.txt");

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

{

if (A[i].rik>1985&&A[i].rik<1992&&(!strcmp(A[i].studia,"Dovzhenka")))

{

fielTwo << A[i].name << "\t"

<< A[i].rik << "\t"

<< A[i].studia << "\t"

<< A[i].rejiser << "\n";

}

}

getch();

return 0;

}

Результат:

Блок схема:

Завдання 16. Основи опрацювання структур

З клавіатури ввести послідовність адрес, кожна з яких задається структурою з полями: <Індекс>, <Місто>, <Вулиця>, <Будинок>. Відсортувати ведені дані за порядком зростання індексів та роздрукувати їх у формі таблиці. Визначити відсоток львівських адрес.

Код програми:

#include <conio.h>

#include <iostream.h>

#include <stdio.h>

#define n 3

struct adresa

{

char misto[30], vulycia[30];

int index, budynok;

};

main()

{

adresa A[n],k;

int i,j;

float m=0,V=0;

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

{

cout<<"\n Vveditj misto:";

cin>>A[i].misto;

cout<<"Vulycu:";

cin>>A[i].vulycia;

cout<<"Index:";

cin>>A[i].index;

cout<<"Budynok:";

cin>>A[i].budynok;

}

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

for(j=i+1;j<3;j++)

if(A[i].index>A[j].index)

{

k=A[i];

A[i]=A[j];

A[j]=k;

}

cout<<"Index:\tMisto:\tVulycia: Budynok:\n";

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

{

if(!strcmp(A[i].misto,"Lviv"))

m++;

cout<<A[i].index<<"\t"<<A[i].misto

<<"\t"<<A[i].vulycia<<"\t"<<A[i].budynok<<"\n";

}

if(m!=0)V=(m/n)*100;

cout<<"Vidsotok lvivskih adres: "<<V<<"%";

getch();

return 0;

}

Результат:

Блок схема:

Завдання 17. Основи ООП. Принципи побудови класів

Створити клас з такими полями та методами:

СТУДЕНТ

поля:

ім'я – char*

курс – int

стать - int(bool)

методи:

зміна курсу

введення імені

введення статі

виведення інформації про об’єкт

Код програми:

#include <iostream.h>

#include <conio.h>

#include <string.h>

class Stydent

{

char name[25];

int k,st;

public:

Stydent();

Stydent(char*, int, int);

Stydent(const Stydent&);

void SetName(char*);

void SetStatj(int);

void ZminaKyrsy(int);

void Show();

};

Stydent::Stydent()

{

strcpy(name, "---");

k=0;

st=0;

}

Stydent::Stydent(char* a, int b, int c)

{

strcpy(name, a);

k=b;

st=c;

}

Stydent::Stydent(const Stydent& X)

{

strcpy(name, X.name);

k=X.k;

st=X.st;

}

void Stydent::SetName(char* a)

{

strcpy(name, a);

}

void Stydent::SetStatj(int a)

{

st=a;

}

void Stydent::ZminaKyrsy(int a)

{

k=a;

}

void Stydent::Show()

{

cout << "\nInformacia pro stydenta:";

cout << "\nName: " << name;

cout << "\nKyrs: " << k;

cout << "\nStatj: " << st;

}

void main()

{

Stydent T1;

Stydent T2("Makarchenko",1,1);

cout << "Show 1:";

T1.Show();

cout << "\n\nShow 2:";

T2.Show();

T1.SetName("Adrienko");

cout << "\n\nShow 1:";

T1.Show();

T1.SetStatj(1);

T1.ZminaKyrsy(2);

cout << "\n\nShow 1:";

T1.Show();

Stydent T3;

cout << "\n\nShow 3:";

T3.Show();

T3 = T1;

cout << "\n\nShow 3:";

T3.Show();

getch();

}

Результат:

Блок схема:

Завдання 18. Перевантаження функцій

Написати функцію min, яка шукає мінімум серед двох, трьох та чотирьох цілих та дійсних чисел.

Код програми:

#include<iostream.h>

#include<conio.h>

#include<math.h>

int min(int,int);

float min(float,float);

int min(int,int,int);

float min(float,float,float);

int min(int,int,int,int);

float min(float,float,float,float);

main()

{

int a = 0, b = 0, c = 0, d=0;

float a1 = 0, b1 = 0, c1 = 0,d1=0;

cout << "Vvedu 4 cili chisla: \n";

cin >> a >> b >> c>>d;

cout <<"Minimaljne sered ciluh chusel ="<<min(a,b,c,d);

cout << "\nVvedu 4 diisni chisla: \n";

cin >> a1 >> b1 >> c1>>d1;

cout <<"Minimaljne sered dijsnuh chusel ="<<min(a1,b1,c1,d1);

getch();

return 0;

}

int min(int d1,int d2)

{

int m=d1;

if(m>d2) m=d2;

return m;

}

float min(float d1,float d2)

{

float m=d1;

if(m>d2) m=d2;

return m;

}

int min(int d1,int d2,int d3)

{

int m=d1;

if(m>d2) m=d2;

if(m>d3) m=d3;

return m;

}

float min(float d1,float d2,float d3)

{

float m=d1;

if(m>d2) m=d2;

if(m>d3) m=d3;

return m;

}

int min(int d1,int d2,int d3,int d4)

{

int m=d1;

if(m>d2) m=d2;

if(m>d3) m=d3;

if(m>d4) m=d4;

return m;

}

float min(float d1,float d2,float d3,float d4)

{

float m=d1;

if(m>d2) m=d2;

if(m>d3) m=d3;

if(m>d4) m=d4;

return m;

}

Результат:

Блок схема:

Завдання 19. Шаблони функцій

Написати функцію perum, яка шукає периметр трикутника, чотирикутника та п’ятикутника, передбачити задання сторін за допомогою цілих та дійсних чисел.

Код програми:

#include<iostream.h>

#include<conio.h>

#include<math.h>

template <class MyType>

MyType perum(MyType,MyType,MyType);

template <class MyType>

MyType perum(MyType,MyType,MyType,MyType);

template <class MyType>

MyType perum(MyType,MyType,MyType,MyType,MyType);

main()

{

int a = 0, b = 0, c = 0, d=0;

float a1 = 0, b1 = 0, c1 = 0,d1=0;

cout << "Vvedu storonu bagatokytnuka: \n";

cin >> a >> b >> c>>d;

cout <<"Perumetr bagatokytnuka ="<<perum(a,b,c,d);

cout << "\nVvedu storonu bagatokytnuka: \n";

cin >> a1 >> b1 >> c1>>d1;

cout <<"Perumetr bagatokytnuka ="<<perum(a1,b1,c1,d1);

getch();

return 0;

}

template <class MyType>

MyType perum(MyType d1,MyType d2,MyType d3)

{

MyType p;

p=d1+d2+d3;

return p;

}

template <class MyType>

MyType perum(MyType d1,MyType d2,MyType d3,MyType d4)

{

MyType p;

p=d1+d2+d3+d4;

return p;

}

template <class MyType>

MyType perum(MyType d1,MyType d2,MyType d3,MyType d4,MyType d5)

{

MyType p;

p=d1+d2+d3+d4+d5;

return p;

}

Результат:

Блок схема:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]