Міністерство науки і освіти України
Національний університет “Львівська Політехніка”
Інститут комп’ютерних наук та інформаційних технологій
Кафедра ПЗ
Звіт
З лабораторної роботи № 3
з курсу «Основи програмування та алгоритмічні мови»
Тема: Базові типи даних. Логічні операції, умовна операція. Виведення дійсних чисел у різному форматі з допомогою стандартної функції мови С. Явне та неявне перетворення типів.
Мета: Навчитися задавати дані різного типу та освоїти операції мови С для арифметичних, логічних обчислень та задання умов.
Завдання:
Написати програму, яка виконує таку послідовність дій:
для введеного дійсного числа друкує окремо цілу та дробову частину;
друкує число у формах
/D.ddd/
/D.d /
/d.dde<знак>dd/
/D./
/<знак>D.d/
/d.ddddE<знак>dd/
/D.dddddd/
/0..0D.dd/ (друкує 2 цифри після коми, при вирівнюванні до довжини вивідного поля 6, доповнюючи при потребі нулем)
/ D.dd/ (друкує 2 цифри після коми, при вирівнюванні до довжини вивідного поля 8, доповнюючи при потребі пробілом)
Тут через d позначено одну десяткову цифру, D – одну або більше десяткових цифр.
3) для цілої частини цього числа друкує n-ту цифру з кінця (останню, 2, 3, 4, 5)
4) для цілої частини здійснює обчислення з допомогою операцій зсуву
(/8, *2) (/4, *16) (/16, *8) (/32, *4) (/8, *16) (/32, *8) (/16, *4) (/64, *2) (/4, *8) (/16, *16) (/8, *8) (/32, *16) (/64, *4) (32/, *2)
та друкує результат цих дій;
5) для введеного символу (через функції Ф/Н) друкує код цього символу;
6) використовуючи умовну операцію для одного з наступних варіантів:
- виводить результат знаходження меншого з двох введених дійсних чисел;
Блок-схема алгоритму
Текст програми
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main (void)
{
float chislo, ch1 ,ch2;
char c;
int n_tsyfra, k, ts, i;
clrscr();
puts("Vvedit diysne chislo");
scanf("%f", &chislo);
ts=chislo;
printf("Tsila chastyna chisla %f \t\t%d\n", chislo, ts);
printf("Drobova chastyna chisla %f \t%f\n", chislo, (chislo - ts));
printf("Chislo u formati D.ddd \t\t\t%.3f\n", chislo);
printf("Chislo u formati D.d \t\t\t%-3.1f\n", chislo);
printf("Chislo u formati d.dde<znak>dd \t\t%.2e\n", chislo);
printf("Chislo u formati D. \t\t\t%.0f%c\n", chislo, '.');
printf("Chislo u formati <znak> D.d \t\t%+.1f\n", chislo);
printf("Chislo u formati d.ddddE<znak>dd \t%.4E\n", chislo);
printf("Chislo u formati D.dddddd \t\t%.6f\n",chislo);
printf("Chislo u formati 0..0D.dd \t\t%07.2f\n",chislo);
printf("Chislo u formati D.dd \t\t\t%6.2f\n",chislo);
puts("Vvedit yaku tsyfru z kincia vyvesty");
scanf("%d", &i);
k = ts;
for (int j=1; j<=i; j++)
{
n_tsyfra = k;
k = k / 10;
n_tsyfra = n_tsyfra - k * 10;
}
printf("%d\n", n_tsyfra);
printf("Chislo %d pislia operaciy zsuvu (/4,*16) bude mati vyhliad %d ta %d\n", ts, (ts >> 2), (ts << 4));
printf("Vvedit symvol kod yakoho treba vyvesty\n");
fflush(stdin);
scanf("%c", &c);
printf("Kod %c poznachaye symvol %d\n", c, c);
printf("Vvedit dva diysnyh chisla ");
scanf("%f%f", &ch1, &ch2);
if (ch1 < ch2)
printf("Menshe chislo %f", ch1);
else
if (ch1 != ch2)
printf("Menshe chislo %f", ch2);
else
printf("Chisla rivni");
}
Протокол роботи програми
Vvedit diysne chislo
12345.678
Tsila chastyna chisla 12345.677734 12345
Drobova chastyna chisla 12345.677734 0.677734
Chislo u formati D.ddd 12345.678
Chislo u formati D.d 12345.7
Chislo u formati d.dde<znak>dd 1.23e+04
Chislo u formati D. 12346.
Chislo u formati <znak> D.d +12345.7
Chislo u formati d.ddddE<znak>dd 1.2346E+04
Chislo u formati D.dddddd 12345.677734
Chislo u formati 0..0D.dd 12345.68
Chislo u formati D.dd 12345.68
Vvedit yaku tsyfru z kincia vyvesty
2
4
Chislo 12345 pislia operaciy zsuvu (/4,*16) bude mati vyhliad 3086 ta 912
Vvedit symvol kod yakoho treba vyvesty
d
Kod d poznachaye symvol 100
Vvedit dva diysnyh chisla 11.54 100.1
Menshe chislo 11.540000
Висновок
Я навчився задавати дані різного типу та освоїв операції мови С для арифметичних, логічних обчислень та задання умов.