Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Zvit_do_Laboratornoyi_roboti.doc
Скачиваний:
2
Добавлен:
20.11.2019
Размер:
169.98 Кб
Скачать

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

#include <iostream> //бібліотека для потокового введення виведення

#include <conio.h> //бібліотека для введення,виведення

#include <stdio.h> //бібліотека для стандартних функцій введення, виведення

#include <math.h> //бібліотека для роботи з математичними функціями

using namespace std;

void main()

{

//змінні

int i;//змінна типу int; використовується в _cscanf

unsigned u;//змінна типу unsigned int; використовується для зчитування додатного числа в _cscanf

int j;//змінна в котру записується кількість символів у виведеному рядку; використовується в sprintf()

char ch;//змінна типу char; використовується в getch, getchar

char str[21];//рядок, використовується в gets

char buffer[82] = { 80 }; // максимальна кількість рядка становить 80, де 2 перших використовується для зберігання записаного рядка використовується в _cgets

char *result;//використовується я вказівник на перший символ який є результатом виконання _cgets

int return_code;//код котрий повертають функції _cscanf, scanf, sscanf і вказує на кількість коректно зчитаних змінних

char tokenstring[81];//рядок, який використовується для конвертування його у такі типи: string, char, int and float

float fl;//змінна типу float; використовується у sscanf

//інформація про програму

cout<<"Using input/output functions"<<endl;

cout<<"Executer Anton Pererva IS-22"<<endl<<endl<<endl;

//_cprintf/_cscanf

cout<<"using _cprintf/_cscanf"<<endl;

cout<<"enter data in format \"%d %u %c %s\""<<endl;

return_code = _cscanf( "%d %u %c %s", &i,&u,&ch,&str ); //зчитуємо змінні з консолі одразу без очікування введення інших змінних

if (return_code==4) //4 тому що ми маємо зчитати 4 змінні, а _cscanf повертає кількість вдало зчитаних змінних

{

cout<<"output that same data in that same format"<<endl;

_cprintf( "i=%d u=%u c='%c' str='%s'\r\n", i,u,ch,str ); //виводимо змінні форматованим рядком

}

else//якщо кількість вдало зчитаних змінних не рівна 4 виводимо повідомлення про некоректність введених данних

cout<<"\nERROR INCORRECT DATA"<<endl;

cout<<"\n\n";

//_cputs/_cgets

cout<<"using _cputs/_cgets"<<endl;

printf( "Input line of text(max length 80 characters), followed by carriage return:\n");//виводимо рядок за допомогою printf()

result = _cgets( buffer ); // вводимо рядок тексту

printf( "Line length = %d\nText = `%s`\n", buffer[1], result ); //виводимо рядок та кількість символів у ньому

cout<<"output with _cputs()"<<endl;

_cputs(result); //виводимо рядок за допомогою _cputs()

cout<<"\nmove caret to new line"<<endl;

cout<<"\n\n";

//putch/getch

_getch();//”зчитуємо” з буферу символ '\0',використовується _getch() тому що в даному випадку fflush() працює некоректно

fflush(stdin); //очищуэмо буфер

cout<<"using putch/getch"<<endl;

cout<<"enter symbol"<<endl;

ch = getch();//зчитуємо символ з клавіатури за допомогою getch()

cout<<"entered symbol is"<<endl;

putch(ch); //виводимо символ за допомогою putch()

cout<<"\nmove caret to new line"<<endl; //повідомлення про штучне переміщення на новий рядок

cout<<"\n\n";

//putchar/getchar

cout<<"using putchar/getchar"<<endl;

cout<<"enter symbol and press ENTER"<<endl;

ch = getchar();//зчитуємо символ з клавіатури за допомогою getchar()

cout<<"entered symbol is"<<endl;

putchar(ch); // виводимо символ за допомогою putchar()

cout<<"\nmove caret to new line"<<endl; //повідомлення про штучне переміщення на новий рядок

cout<<"\n\n";

//puts/gets

cout<<"using puts/gets"<<endl;

cout<<"enter string(max length is 20 symbols)\n";

fflush(stdin); //очищуэмо буфер

gets( str ); //зчитуємо рядок за допомогою gets()

cout<<"entered string is: `%s`\n";

puts(str); //виводимо рядок за допомогою puts()

cout<<"\n\n";

//printf/scanf

cout<<"using printf/scanf"<<endl;

cout<<"enter data in format \"%d %20s\""<<endl;

return_code = scanf( "%d %s", &i,str ); //зчитуємо за допомогою scanf та запам’ятовуємо кількість коректно введених змінних

if (return_code==2) //2 тому що ми повинні зчитати 2 змінні,а scanf повертає кількість успішно зчитаних змінних

{

cout<<"output that same data in that same format"<<endl;

printf( "a=%d str='%20s'\r\n", i,str ); //виводимо за допомогою printf

}

else

cout<<"ERROR INCORRECT DATA"<<endl;

cout<<"\n\n";

//sprintf/sscanf

cout<<"using sprintf/sscanf"<<endl;

cout<<"Enter string to transform(must consist float value at begining)"<<endl;

fflush(stdin); //очищуємо буфер

cin>>tokenstring; //зчитуємо рядок для перетворень

return_code = sscanf( tokenstring, "%f", &fl );//зчитуємо змінну типу float оскільки вона є необхідною, адже вона в собі має int, char та рядок)

if (return_code==1) //якщо коректно зчитали змінну то продовжуємо зчитувати інші змінні

{

sscanf( tokenstring, "%20s", str ); //перетворюємо зчитаний рядок у змінну типу рядок

sscanf( tokenstring, "%c", &ch ); //типу char

sscanf( tokenstring, "%d", &i ); //int

cout<<"Converted and formated data is\n";

buffer[0] = 0; //очищуємо рядок в котрий виводимо

j=sprintf( buffer,"\n String: %s\n", str ); //заносимо в змінну buffer результат перетворення рядка у рядок для виведення а також запам’ятовуємо кількість символів

cout<<buffer; //виводимо buffer

// аналогічно для наступного тільки заносимо в рядок змінні іншого типу

buffer[0] = 0;

j+=sprintf( buffer, " Character: %c\n", ch ); //типу char

cout<<buffer;

buffer[0] = 0;

j+=sprintf( buffer, " Integer: %d\n", i ); //типу int

cout<<buffer;

buffer[0] = 0;

j+=sprintf( buffer, " Real: %f\n", fl ); //типу float

cout<<buffer;

cout<<"Symbol`s count is "<<j; //виводимо сумарну кількість символів у виведених рядках через змінну buffer

}

else //якщо ж ми ввели некоректну кількість аргументі то виводимо відповідне повідомлення

cout<<"ERROR INCORRECT DATA"<<endl;

float x,a,b,c,d,t;// зміні для розрахунку виразу, t використовується для проміжних розрахунків

//тут змінна ch використовується для зчитування відповіді на питання типу "Please press y/n"

bool repeat;//відповідає за те чи повторювати введення даних для виразу та його переррозрахунку

repeat = true;

cout<<"\n\nCalculate expression:"<<endl;

cout<<"X = (|A|+|B|)^2 / ( D - C^(1/2))"<<endl<<endl<<endl;

while (repeat) //створюємо цикл для тесту на декількох різних значеннях

{

cout<<"Please enter numbers a, b, c(MUST BE >=0), d in format '%f %f %f %f'"<<endl;

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

if ((return_code == 4)&&(c>=0)) //перевірка кількості корректно зчитаних змінних а також відсіювання значення с меншого за нуль, оскільки якщо від’ємне значення не відсіяти ми не зможемо знайти дійсне число котре в квадраті буде дорівнювати від’ємному числу і оримаємо помилку

{

if ((d-powf(c,0.5))==0) //перевірка знаменника на 0

cout<<"Devision by zero(C=D^2)"<<endl;

else

{

cout<<"Print intermediate calculations? (y/n)"<<endl; //запит на вивід проміжних значень

fflush(stdin); //очищення буферу

ch=getchar();//зчитуємо відповідь на запит

if ((ch=='y')||(ch=='Y')) //якщо отримали позитивну відповідь, то розраховуємо та виводимо проміжні значення

{

x=(abs(a)+abs(b));

cout<<"(|A|+|B|)="<<x<<endl;

x*=x;

cout<<"(|A|+|B|)^2="<<x<<endl;

t=powf(c,0.5);

cout<<"C^(1/2)="<<t<<endl;

t=d-t;

cout<<"D - C^(1/2)="<<t<<endl;

x/=t;

}

else//інакше одразу виводимо результат

x=powf((abs(a)+abs(b)),2)/(d-powf(c,0.5));

cout<<"\n(|A|+|B|)^2 / ( D - C^(1/2)) = "<<x<<"\n"<<endl;

}

}

else//виводимо повідомлення про некоректність данних

cout<<"INCORRECT DATA"<<endl;

cout<<"Repeat? (type `y` or `Y` to repeat)"<<endl; //запит на те чи повторити розрахунок з іншими значеннями

fflush(stdin);

ch=getchar();

if ((ch!='y')&&(ch!='Y')) //якщо отримуємо негативну відповідь

repeat = false; //створюємо умову завершення циклу

else

{

cout<<"Clear console? (y/n)"<<endl; //запит на очищення консолі

fflush(stdin);

ch=getchar();

if ((ch=='y')||(ch=='Y')) //в разі позитивної відповіді

{

system("cls");//очищуємо її

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

cout<<"Calculate expression:"<<endl;

cout<<"X = (|A|+|B|)^2 / ( D - C^(1/2))"<<endl;

cout<<"Executer Anton Pererva IS-22"<<endl<<endl<<endl;

}

}

}

system("pause");// очікування натиску клавіші для завершення програми

}

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