- •«Объектілі-бағытты бағдарламалау негіздері» пәнінен оқу тәжірибесі бойынша тәжірибелік жұмыстар жинағы
- •2014-2015 Оқу жылы
- •1.1 Тақырып. Меншіктеу, енгізу-шығару операторлары Зертханалық жұмыс №1, 2, 3 Меншіктеу, енгізу-шығару операторлары сіn, cout.
- •Припроцессорлардың дерективалары программа
- •Логикалық операциялар мынадай таңбалармен жазылады.
- •Тапсырмалар:
- •Break операторы
- •Тапсырмалар
- •Тақырып. Цикл операторлары Зертханалық жұмыстар №7,8,9 While, do…while, for цикл операторлары. Циклдердегі басқару операторлары (break, continue). While, for, do…while циклдерді бағдарламалау
- •Continue операторы
- •1) Есепті шешу алгоритмінің блок-схемасы:
- •Адрестер
- •1) Есепті шешу алгоритмінің блок-схемасы:
- •3) Бағдарламаны тестілеу нәтижесі:
- •Көрсеткіштер
- •Сілтемелер
- •Жиымдармен, көпөлшемді жиымдармен жұмыста көрсеткіштерді қолдану
- •Динамикалық жиымдар
- •Есепті шешу алгоритмінің блок-схемасы:
- •3) Бағдарламаны тестілеу нәтижесі:
- •Бірөлшемді, көпөлшемді жиымдар және көрсеткіштерді қолданып бағдарламалар құру
- •1.5 Тақырып. Функциялар Зертханалық жұмыстар №16,17,18,19 Функциялар. Функцияны шақыру. Жергілікті, ауқымды айнымалылар. Стандартты кітапханалық функциялар. Функцияны қолданып бағдарлама құру.
- •1. Тапсырма
- •4 Тапсырма.
- •Бағдарламаның листингі
- •3. Бағдарламаның нәтижесі
- •1. Есептің блок-схемасы
- •2. Бағдарламаның листингі
- •3. Бағдарламаның нәтижесі
- •5 Тапсырма.
1. Есептің блок-схемасы
2. Бағдарламаның листингі
#include <iostream.h>
#include <stdio.h>
#include <math.h>
#include <conio.h>
void main()
{ int n = 1, k, x;
float s1 = 0, s2 = 0, s3 = 0;
FILE *save;
save = fopen("save2.txt", "w");
cout << "Enter k, please ";
cin >> k;
cout << "Enter x, please ";
cin >> x;
while (n <= k)
s1 += (pow(-1, n) * x)/n++;
n = 1;
do
s2 += (pow(-1, n) * x)/n++;
while (n <= k);
n = 1;
for (n = 1; n <= k; n++)
s3 += (pow(-1, n) * x)/n;
printf("s1 = %f, s2 = %f, s3 = %f", s1, s2, s3);
fprintf(save, "k = %d, x = %d, s1 = %f, s2 = %f, s3 = %f", k, x, s1, s2, s3);
fclose(save);
getch();
}
3. Бағдарламаның нәтижесі
k = 10, x = 0, s1 = 0.000000, s2 = 0.000000, s3 = 0.000000
k = 3, x = 7, s1 = -5.833333, s2 = -5.833333, s3 = -5.833333
k = 1, x = 2, s1 = -2.000000, s2 = -2.000000, s3 = -2.000000
2 тапсырма. #include <stdio.h>
int main(void) {
double x, y; /* координаты точки */
/* ввод координат */
printf("Введите координату x >");
scanf("%lf",&x);
printf("Введите координату y >");
scanf("%lf",&y);
/* вывод только что введенных значений */
printf("x=%6.3lf; y=%6.3lf\n",x,y);
/* проверка условий */
if ( (y>=1-x)
&& (x*x+y*y<=1) )
printf("Точка попадает в область\n");
else printf("Точка не попадает в область\n");
return 0;
}
Бағдарламаның нәтижесі:
x=0.400; y=0.400
Точка не попадает в область
x= 0.500; y= 0.500
Точка попадает в область
x= 0.700; y= 0.600
Точка попадает в область
x= 0.707; y= 0.707
Точка попадает в область
x= 0.800; y= 0.800
Точка не попадает в область
x= 0.100; y= 0.000
Точка попадает в область
x= 0.000; y= 1.000
Точка попадает в область
2. #include<stdio.h>
#define S 9
int Ar[S][S]; /* матрица */
int main(void) {
short l, r; /* текущиеиндексы */
short r1,r2; /* граничные номера столбцов */
short dd; /* модификатор граничных номеров */
short k; /* текущий член ЛП */
/* начальные значения переменных */
r1=1; r2=S-2; dd=1; k=1;
for (l=0; l<S; l++) { /* перебор строк */
for (r=0; r<S; r++) /* перебор столбцов */
/* условие ненулевого значения */
if ((r<r1)||(r>r2)) Ar[l][r]=0;
else Ar[l][r]=k++;
/* конец перебора строк */
/* модификация границ */
r1+=dd; r2-=dd;
/* уловие перехода в нижнюю часть */
if (r1>r2) dd=-dd;
} /* конец перебора столбцов */
/* вывод матрицы */
for (l=0; l<S; l++) {
for (r=0; r<S; r++) {
printf("%3d",Ar[l][r]);
}
printf("\n");
}
return 0;
}
Бағдарламаның нәтижесі:
0 1 2 3 4 5 6 7 0
0 0 8 9 10 11 12 0 0
0 0 0 13 14 15 0 0 0
0 0 0 0 16 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 17 0 0 0 0
0 0 0 18 19 20 0 0 0
0 0 21 22 23 24 25 0 0
0 26 27 28 29 30 31 32 0
3 тапсырма .#include <stdio.h>
#include <math.h>
int main(void) {
long n; /* параметрряда */
double dbln; /* параметр ряда в форме с плавающей точкой */
double sum=0; /* сумма членов ряда */
double term; /* значение текущего члена */
const double eps=0.000001; /* пределточности */
long k2=1; /* pow(2,n)*/
short k1=1; /* pow(-1,n)*/
/* основной цикл; в модификациях вычисляются
следующие значения pow(2,n) и pow(-1,n)*/
for (n=0; ; n++, k2*=2, k1=-k1) {
/* преобразование n в форму с плавающей точкой */
dbln=n;
/* вычисление очередного члена */
term=k1*(dbln+1)/(dbln*dbln+k2);
/* проверка достижения предела точности */
if (fabs(term)>=eps)
/* если не достигнут - накопление суммы */
sum+=term;
/* если достигнут - выход из цикла */
else break;
/* если 10 членов - вывод суммы */
if (n==9)
printf("Сумма 10 членов ряда = %10.7lf\n",sum);
}
/* конец основного цикла */
/* вывод окончательной суммы */
printf("Полная сумма ряда = %10.7lf\n",sum);
return 0;
} /* конец программы */
Бағдарламаның нәтижесі:
Сумма 10 членов ряда = 0.5600899
Полная сумма ряда = 0.5663245
4 тапсырма.#include <stdio.h>
#include <string.h>
/* Описание структуры, которая представляет монастырь */
struct mon {
char name[15]; /* название */
char sc; /* школа */
int cnt; /* количество монахов */
float sq; /* площадь */
} mm[10]; /* определение массива монастирей */
int main(void) {
struct mmm x; /* рабочая переменная */
int n; /* количество элементов в массиве */
int i, j; /* текущие индексы в массиве */
int m; /* индекс минимального элемента */
float sqx;/* рабочая переменная */
/* Ввод данных */
for (n=0; n<10; n++){
printf("%d. Введите: название, школу, количество, площадь >",
n+1);
scanf("%s",mm[n].name);
if (!strcmp(mm[n].name,"***")) break;
scanf("%s",&mm[n].sc);
scanf("%d",&mm[n].cnt);
/* Внимание! Мы обходим ошибку в системе программирования */
scanf("%f",&sqx); mm[n].sq=sqx;
}
/* Выводтаблицы */
printf("---------------------------------------------\n");
printf("|БуддийськемонастыриЯпонииперiодаНара |\n");
printf("|--------------------------------------------|\n");
printf("| Название | Школа |Количество| Площадь |\n");
printf("| | | монахов | земель(га) |\n");
printf("|-----------|-------|----------|-------------|\n");
/* вывод строк фактических данных */
for (i=0; i<n; i++)
printf("| %9s | %c | %3d | %-5.1f |\n",
mm[i].name,mm[i].sc,mm[i].cnt,mm[i].sq);
printf("---------------------------------------------\n");
/* сортировкамассива */
for (i=0; i<n-1; i++) {
m=i; /* минимальный элемент - первый */
for (j=i+1; j<n; j++)
/* если текущий элемент > минимального,
он становится минимальным */
if (strcmp(mm[m].name,mm[j].name)>0) m=j;
if (m>i) {
/* перестановка первого и минимального элементов */
strcpy(x.name,mm[i].name); x.sc=mm[i].sc;
x.cnt=mm[i].cnt; x.sq=mm[i].sq;
strcpy(mm[i].name,mm[m].name); mm[i].sc=mm[m].sc;
mm[i].cnt=mm[m].cnt; mm[i].sq=mm[m].sq;
strcpy(mm[m].name,x.name); mm[m].sc=x.sc;
mm[m].cnt=x.cnt; mm[m].sq=x.sq;
}
}
/* Выводтаблицы */
printf("---------------------------------------------\n");
printf("|БуддийськемонастыриЯпонииперiодаНара |\n");
printf("|--------------------------------------------|\n");
printf("| Название | Школа |Количество| Площадь |\n");
printf("| | | монахов | земель(га) |\n");
printf("|-----------|-------|----------|-------------|\n");
for (i=0; i<n; i++)
printf("| %9s | %c | %3d | %-5.1f |\n",
mm[i].name,mm[i].sc,mm[i].cnt,mm[i].sq);
printf("---------------------------------------------\n");
return 0;
}
Бағдарламаның нәтижесі:
1. Введите: название, школу, количество, площадь > Тодайдзи Т 220 368.8
2. Введите: название, школу, количество, площадь > Якусидзи С 50 54.7
3. Введите: название, школу, количество, площадь > Дайаедзи Д 10 12.2
-----------------------------------------------
|Буддийские монастыри Японии периода Нара |
|---------------------------------------------|
| Название | Школа | Количество| Площадь |
| | | монахов | земель(га) |
|-----------|-------|-----------|-------------|
| Тодайдзи | Т | 220 | 368.8 |
| Якусидзи | С | 50 | 54.7 |
| Дайаедзи | Д | 10 | 12.2 |
-----------------------------------------------
