Читайте также:
|
|
Умова задачі
Скласти програму, яка вводить дані різного типу з клавіатури та виводить дані на екран. Типи даних відповідають таблиці 1.1. Використати функції вводу та виводу відповідно до таблиці 1.2. Виконати розрахунок математичного виразу, використовуючи математичні функції відповідно до таблиці 1.6. Сценарій роботи програми вимагає вивід на екран повідомлень про необхідність вводу даних відповідного типу за допомогою будь-яких функцій виводу. У відповідь на повідомлення, що з’являється на екрані, користувач вводить дані відповідного до повідомлення типу.
Особливості використання функцій вводу та виводу
1. При введенні та виведенні даних за допомогою класів потоків з рядка, який має символи пропусків, вводяться та виводяться символи тільки до першого символу пропуску.
2. При введенні даних потоком використовується стандартний потік вводу stdin, при виведенні потокових даних використовується стандартний потік виводу stdout.
3. Після введення символу за допомогою функцій getchar(), getche(), getch() необхідно очищати буфер клавіатури, інакше наступний ввід даних буде неможливий (необхідно опрацювати введення символу ENTER, використовуючи функцію fflush(stdin)).
4. При введенні символу без відображення його на екрані натискувати клавішу ENTER після символу непотрібно.
5. Для переведення курсору на новий рядок в процесі виведення даних на екран використовується ESC-послідовність ‘\n’
6. Для отримання кінця рядка використовується ESC-послідовність ‘\0’
7. Для виконання табуляції курсору в процесі виведення даних на екран використовується ESC-послідовність‘\t’.
8. При використанні функцій консольного виводу курсор не переводиться на початок наступного рядка, тому користувач повинен використовувати ESC-послідовності '\n' - перевід курсору на новий рядок, '\r' - перевід курсору на початок рядка.
Текст програми 1.1
#include<stdio.h> //бібліотека функцій введення та виведення #include<conio.h> //бібліотека очищення екрана та іншого сервісу #include<math.h> //бібліотека математичних функцій #include<iostream> //бібліотека потоків вводу – виводу using namespace std; void main() //основна функція – точка входу до програми { //початок основної функції char simbol; puts("function puts():"); //вивід повідомлення на екран puts("input simbol"); //вивід повідомлення на екран putchar(getch()); //вивід символу, що не відображається puts("\n repeat input simbol-function getch():"); //вивід повідомлення simbol=getch(); //ввід символу з клавіатури putchar(simbol); //вивід символу на екран char str[20]; puts("\n input string - function gets():"); //вивід повідомлення gets(str); // введення рядка printf("functions printf(),puts(): str="); // форматне виведення тексту puts(str); // виведення рядка printf("\r\n function printf(): str=%s \r\n",str); //форматне виведення рядка int i; float a,b,c; puts("function scanf(),printf()"); printf("\n input integer i, float a,b,c \n"); // форматне виведення scanf("%d%f%f%f",&i,&a,&b,&c); // форматне введення printf("i=%d a=%f b=%f c=%e",i,a,b,c); // форматне виведення puts("\n input string for sscanf() as %d %f %f or sprintf()"); char str1[20],str2[20]; float a1,b1,d; fflush(stdin); // очищення буфера клавіатури gets(str1); //ввід рядка з клавіатури printf("string is: "); puts(str1); sscanf(str1,"%d %f %f",&i,&a1,&b1); //введення із рядка за адресами змінних printf("i=%d a=%f b=%e \n",i,a1,b1); // вивід на екран для контролю введення puts("function sprintf() does not display rezult"); sprintf(str2,"i=%d a=%f b=%e ",i,a1,b1); // виведення у рядок puts("function puts():"); puts(str2); d=(a+pow(b,3)-abs(a1-b1))/sqrt(sin(c*3)); // розрахунок виразу puts("function printf():"); printf("d=(a+pow(b,3)-abs(a1-b1))/sqrt(sin(c*3))=%f",d); char string[30]; //оголошення рядка cout<<"\n input text"<<endl; //потоковий вивід cin>>string; //потоковий ввід cout<<" entered text is "<<"'"<<string<<"'"<<endl; getch(); // затримка екрана |
Результати виконання програми 1.1
Текст програми 1.2
#include <stdio.h> //бібліотека стандартних функцій вводу - виводу
#include <conio.h> //функції роботи з екраном
#include <math.h> //математичні функції
#include <iostream> //потоки вводу – виводу
#include <stdlib.h> //функція виходу з програми
using namespace std;
//=============== функція початку роботи =================== =====
void welcome(){
puts("Welcome to see the usage of input/output functions in C++!!!");
puts("Press any key..."); //вивід тексту
char a;
cin>>a; //чекати натискання на клавішу
}
//====функції putchar(),getchar(),putch(),getch(),puts(),gets()==
void f1(){
char str[15];
puts("Usage of functions putchar(),getchar():");
puts("Input any symbol"); //вивід тексту
char c;
c=getchar(); //ввід символу
putchar(c); //вивід символу
puts("\nUsage of functions putch(),getch():");
putch(getch()); //ввід символу без його відображення на екрані
puts("\nUsage of functions puts(),gets():");
puts("Input string");
gets(""); //зчитується символ '\n'
gets(str); //ввід рядка
puts(str); //вивід рядка
getch(); //чекати натискання на клавішу
}
//======================= функції cin,cout ==========================
void f2(){
int a;
puts("Usage of functions cin,cout:");
cout<<"Enter int a"<<endl; //потоковий вивід
cin>>a; //потоковий ввід
cout<<"\na^2="<<a*a<<endl;
getch(); //чекати натискання на клавішу
}
puts("Usage of sscanf(),sprintf()");
int a; float b,c; //опис локальних змінних
char str1[15],str2[15];
puts("Input int,float,float:");
gets(str1); //ввід рядка
sscanf(str1,"%d %f %f",&a,&b,&c); //запис даних з рядка за
// адресами змінних
puts("function sprintf() not display rezult"); //вивід повідомлення
sprintf(str2,"a=%d b=%f c=%e -",a,b,c); //запис значень змінних у
// рядок
puts("Your string is");
puts(str2); //вивід рядка
}
//==================== функції sscanf(),sprintf() ===================
void f3(){
puts("Usage of sscanf(),sprintf()");
int a; float b,c; //опис локальних змінних
char str1[15],str2[15];
puts("Input int,float,float:");
gets(str1); //ввід рядка
sscanf(str1,"%d %f %f",&a,&b,&c);
//запис даних з рядка за адресами змінних
puts("function sprintf() not display rezult");
//вивід повідомлення
sprintf(str2,"a=%d b=%f c=%e -",a,b,c);
//запис значень змінних у рядок
puts("Your string is");
puts(str2); //вивід рядка
}
//======================приклад обчислення виразу =================
void f4(){
system("cls");//очищення екрана
puts("Usage of scanf(),printf()and math functions:\n");
float a,b,c,y;
puts("enter a, b!=0, c>-1(c!=0):"); //вивід повідомлення
scanf("%f%f%f",&a,&b,&c); //форматний ввід даних
if ((b==0)||(c<=-1)||(c==0)) //умови існування виразу
{
printf("\nError!!! Try another time...\r\n");
exit(1); //переривання програми
}
y=abs(a/b-log(c))/sqrt(pow(c,5)+1)-cos(2*a)/atan(c)+sinh(a); //вираз
printf("Calculating...Press any key...\r");
getch(); //чекати натискання на клавішу
//вивід результатів
printf("abs(a/b-log(c))/sqrt(pow(c,5)+1)-cos(2*a)/atan(c)+sinh(a)=%e\r\n",y);
puts("Good luck!!!");
}
//======================== головна програма 1.2 ====================
void main(){
welcome(); //функція початку програми
f2(); //функції putchar(),getchar(),putch(),getch(),puts(),gets()
f3(); //функції cin,cout
f1(); //функції sscanf(),sprintf()
f4(); //приклад обчислення виразу
}
Функції welcome та f4 |
Результати виконання програми 1.2
Функція F1() Функція F3() |
1.3 Технологія виконання лабораторної роботи
1. Завантажити середовище Visual Studio.NET.
2. Створити новий консольний проект (Win32 Console Application) і додати до нього файл з текстом програми (С++ Source File). Для цього виконати наступні дії:
3. Вибрати пункт меню File®New®Project®Win32 Console Application
4. Задати ім’я проекту в рядку вводу Project name
5. Вибрати місцезнаходження проекту в рядку Location, викликавши діалог Browse
6. Натиснути кнопку OK, перейти на наступний етап
7. Вибрати вид проекту Empty project (пустий проект), натиснути на кнопку Finish, потім на кнопку OK.
8. Створити новий вихідний файл за допомогою команди New меню File, на вкладці Files вибрати тип файлу C++ Source Files, ввести ім’я файлу в рядок вводу File name, натиснути кнопку OK.
9. Увести код у вікні редактора коду.
10. Компіляція програми виконується командою Compile меню Build
11. Якщо у програмі відсутні помилки, то її можна запустити на виконання командою Start with debugging або Start without debugging меню Debug.
1.4. Варіанти завдань
Усі користувачі розробляють програму за власним сценарієм відповідно до наведених прикладів. Варіанти завдань для даної лабораторної роботи не приводяться. В процесі виконання лабораторної роботи користувач повинен:
1. Увести з клавіатури і вивести на екран значення змінних різних типів згідно з форматами даних (форматне введення-виведення) і без використання форматів. Використати всі функції, що приведені у таблиці 1.2.
2. Визначити розбіжності у використанні функцій введення - виведення.
3. За даними, що введені з клавіатури в оперативну пам’ять, визначити значення виразу, використовуючи математичні функції, і вивести результат на екран. Вираз вибрати згідно з варіантом по таблиці 1.7. Значення змінних A,B,C,D задати самостійно.
Таблиця 1.7. Арифметичні вирази
1 X=(2A - B2)/(D(SinC - 4.5)) | 15. X=((1 - A)CeA)/((1-B)CosD) |
2 X=(2.3 + AB2)/(0.4 + CeD) | 16. X=(ACosA(1 + B3))/(C(1 - D2)) |
3. X=(-2.25(A + 2BC))/(B - D1/2) | 17. X=A/(1 + B/(C + Ln(D + A))) |
4. X=2ASin(B/2) + DC1/2 | 18. X=(CosA + SinB)/(LnC + LnD)1/2 |
5. X=(A - |B/C|)/(2.75Sin2D) | 19. X=(ACos2B + 1)1/2LnC/D |
6 X=(|A - B|2C2)/(1 - D2) | 20. X=Arctg(4A/(B2C) - 1)1/2 |
7. X=e((SinA + SinB)/(C + D)) | 21. X=A2 + |SinB/(C - D)1/2| |
8. X=(1 - A)/(1 + A)+|(B - 2D)/C2| | 22. X=(|A| + |B|)2/(D - C1/2) |
9. X=(A2-B2)(C-D)/(e(A2 - B2))1/2 | 23. X=(A1/2 + B2)eC+D/(|A| - |B|) |
10. X=(1-B)/(1+B)+ |(C-2A)/C2| | 24. X=1/2Ln((1+SinA)/(1- SinB)2) |
11. X=Sin3ACos2B/(eC + 1 + SinD) | 25. X=Sin3CCos2A/(eA + 1 + SinB) |
12. X=|1-B||1-A|/((1+SinC)(1+CosC))1/2 | 26. X=(1/(A2-B2)1/2)+(3C3/(C2-D2)1/2) |
13. X=(ASinB+BCosA)/(1-SinC*|B+D|) | 27. X=(eACos(B/2+D/C))/(DC+SinC) |
14. X=A2/|1-B|+B2/|1-D|+C2/LnA | 28. X=(A-4B)2/(1+(1+SinC)(1+CosC)) |
1.5 Контрольні запитання
1. Як визначаються коментарі у програмному коді?
2. Яка різниця між введенням даних з консолі та із стандартного вхідного потоку?
3. Яка різниця між виведенням даних на консоль та у стандартний вихідний потік?
4. Які функції повертають значення EOF при неуспішному виконання операцій введення та виведення?
5. Які функції можуть виконувати операції перетворення типів даних?
6. Які функції використовують форматний ввід та вивід? Як кодуються формати введення та виведення?
7. Які заголовні файли використовуються для визначення функцій введення та виведення даних?
8. Як і для чого виконується очищення буферу клавіатури?
9. Як можна вводити дані без відображення їх на екрані?
10. Які операції використовуються для введення та виведення даних за допомогою об’єктів класів потоків?
Розгалужені обчислювальні процеси
Лабораторна робота 2
Мета роботи.
– вивчити особливості розгалужених обчислювальних процесів
– опанувати технологію використання логічних операторів
2.1 Теоретичні відомості
Алгоритмічна конструкція, що дозволяє виконавцеві алгоритму вибрати ту чи іншу послідовність дій залежно від певних умов, називається розгалуженням або конструкцією вибору альтернатив.
2.1.1. Вибір із двох альтернатив
Алгоритмічна конструкція альтернативного розгалуження, або конструкція вибору з двох альтернатив, дозволяє виконавцеві алгоритму вибрати один із двох варіантів дій залежно від істинності деякої умови. У мовах С/C++ альтернативні розгалуження реалізуються умовним оператором (оператором розгалуження) і умовним виразом. Синтаксис умовного оператора є таким:
if (< умова >)< оператор1;> [else <оператор2;>]
Тут if, else — зарезервовані слова, <умова> — довільний логічний вираз; <оператор1;> і <оператор2;> — довільні оператори.
Виконання умовного оператора починається з обчислення значення булевого виразу <умова>. Якщо цей вираз є істинним, то виконується <оператор1> і керування передається наступному за умовним оператору (<оператор2> пропускається). Якщо вираз <умова> є хибним, то <оператор1> пропускається, а виконується лише <оператор2> і на цьому дія умовного оператора вважається завершеною.
Оерація «?:» дозволяє записати умовний вираз аналогічний умовному оператору:
< вираз1 >? < вираз2 >:< вираз3 >;
Якщо < вираз1 > приймає істинне значення, то обчислюється < вираз2 >, інакше – <вираз3 >.
Наприклад, умовний вираз для визначення абсолютного значення числа х можна записати так: x > 0? abs= x: abs = -x;
2.1.2. Вкладеність конструкцій вибору
Гілки деякого розгалуження можуть містити інші розгалуження. Синтаксис відповідного фрагменту C-програми такий:
іf (<умова1>) <оператор1;>
else if (<умова2>) <оператор2;>
else <оператор3;>
Піраміди вкладених розгалужень завжди можуть бути реалізовані послідовними операторами розгалуження за рахунок ускладнення умов:
іf (<умова1>) <оператор1;>
if (!(<умова1>) && <умова2>) <оператор2;>
if (!(<умова1>) &&!(<умова2>)) <оператор3;>
Але слід зазначити, що вкладені умовні оператори працюють значно швидше, ніж серія умовних операторів у скороченій формі.
Дата добавления: 2015-08-27; просмотров: 191 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Типи даних | | | Операторний блок |