ТОП 10:

Івано-Франківський фінансово-комерційний



Івано-Франківський фінансово-комерційний

Кооперативний коледж ім. С. Граната

 

 

ЗАВДАННЯ

 

ДЛЯ ПРОВЕДЕННЯ НАВЧАЛЬНОЇ ПРАКТИКИ

По алгоритмічних мовах програмування

 

 

Спеціальність: Програмування для ЕОМ та АТ

 

 

Івано-Франківськ,2005


Практика по Сi

 

Сi - одна з найпоширенiших мов програмування, яка поєднує в собi достоїнства мов високого i низького рiвня: широкi можливостi системного програмування, багатство використовуваних типiв, вiдносна простота i яснiсть основного ядра мови i дуже широкий набiр використовуваних бiблiотечних функцiй.

Для проведення практики студент повинен переписати дискету, на якiй записаний мiнiмальний набiр файлiв для запуску i функцiонування Turbo C.

 

Опис файлiв та директорiй:

- tc.exe - загрузочний файл;

- INCLUDE - директорiя включень;

- LIB - директорiя об'єктних бiблiотек;

- TEXT - директорiя, де мiстяться текстовi файли:

a) dovidnyk.txt - короткий довiдник по опцiях меню, ключових словах i бiблiотечних функцiях Turbo C;

b) pr1.txt, pr2.txt, pr3.txt, pr4.txt, pr5.txt, pr6.txt, pr7.txt, pr8.txt-текст завдань практичних робiт 1-8;

c) prakt.txt - пояснення до виконання завдань, приклади програм.

При виконаннi завдань практики постiйно виникає питання про вивiд на папiр результатiв роботи програми. Рекомендується 3 способи:

1. безпосереднiй вивiд на друк через використання операторiв fprintf() чи fputs() i потоку stdprn;

2. знiмання копiї екрану користувача. При цьому бажано використовувати функцiї clrscr(), gotoxy(), window(), прототипи яких мiстяться у файлі conio.h, а також функцiї введення-виведення у активному вiкнi cputs(), cgets(), cprintf(), cscanf() (аналогiчнi функцiям puts(), gets(), printf(), scanf()), описанi також у файлі conio.h.

3. вивiд у файл на диску з пiзнiшим його роздруковуванням. Пiсля набуття певного досвiду роботи з Сi найдоцiльнiше вживати цей спосiб.

 


Практичне заняття №1

Мета заняття – ознайомлення з роботою в середовищі Turbo C. Для кращого засвоєння рекомендується ввести приведені нижче програми i ознайомитися з результатами виконання:


1./*pозмipи, якi займають piзнi типи даних*/

#include <stdio.h>

main()

{int i;

printf("int %d\n",sizeof(int));

printf("float %d\n",sizeof(float));

printf("double %d\n",sizeof(double));

printf("char %d\n",sizeof(char));

printf("long %d\n",sizeof(long));

printf("short %d\n",sizeof(short));

printf("signed %d\n",sizeof(signed));

printf("unsigned %d\n",sizeof(unsigned));

}


2.# include <stdio.h>

main ()

{ int k,*u;

scanf ("%d",&k);

u=&k;

printf("число %d\n",k);

printf ("адреса %d\n",&k);

printf("адресоване %d\n",*u);

printf("u %d\n",u);

scanf("%d",&k);

}


3. #include <stdio.h>

main()

{int i,j;

printf(" АМЕРИКА ВIДКРИТА У 1492 РОЦI\n");

printf("Який зараз рiк?\n");

scanf("%d",&i);

j=i-1492;

printf("\n");

printf(" З ЧАСУ ВIДКРИТТЯ АМЕРИКИ ПРОЙШЛО %d РОКIВ\n",j);

}


4.#include <stdio.h>

main()

{ float i,j,s,h,*a;

puts(" ВВЕДIТЬ ДВА ЧИСЛА\n");

scanf("%f",&i);

scanf("%f",&j);

s=i+j;

h=i/j;

a=&h;

printf("СУМА ЧИСЕЛ %5.3f ,ЇХ ЧАСТКА %5.3f, ЯКА ЗНАХОДИТЬСЯ ПО \

АДРЕСУ %d\n",s,h,&a);

printf("АДРЕСОВАНЕ ЧИСЛО %5.3f",*a);

}


5. #include <stdio.h>

main()

{ float pl,fact,proc;

int n;

char tn[5];

scanf("%s",tn);

puts("-------------------------------------");

puts("|# п/п|табельний| план | факт | % |");

puts("| | номер | | | |");

puts("-------------------------------------");

n=1;

pl=234;

fact=220;

proc=fact/pl*100;

printf("| %d |%5s |%5.2f|%5.2f|%5.2f|",n,tn,pl,fact,proc);

}

 

КОНТРОЛЬНІ ЗАПИТАННЯ

1. Робота в iнтегрованому середовищi Turbo C.

2. Головне меню Turbo C.

3. Встановлення конфiгурацiї Turbo C.

4. Компiляцiя i виконання програми.

5. Режим вiдладки.

6. Робота з вiкном Break/Watch.

7. Структура програми на мовi Сi.


Практичне заняття №2

Мета виконання завдання - ознайомлення з меню Turbo C, типами величин, операторами введення-виведення, форматами введення-виведення, а також адресами i покажчиками даних. Для кращого засвоєння рекомендується ввести приведену нижче програму i ознайомитися з результатами виконання:

 


Приклад 1

/*pозмipи, якi займають piзнi типи даних*/

#include <stdio.h>

main()

{int i;

printf("int %d\n",sizeof(int));

printf("float %d\n",sizeof(float));

printf("double %d\n",sizeof(double));

printf("char %d\n",sizeof(char));

printf("long %d\n",sizeof(long));

printf("short %d\n",sizeof(short));

printf("signed %d\n",sizeof(signed));

printf("unsigned %d\n",sizeof(unsigned));

}


Приклад 2 (Приклад програми, що працює з адресами та покажчиками)

# include <stdio.h>

main ()

{ int k,*u;

scanf ("%d",&k);

u=&k;

printf("число %d\n",k);

printf ("адреса %d\n",&k);

printf("адресоване %d\n",*u);

printf("u %d\n",u);

scanf("%d",&k);

}


 

КОНТРОЛЬНІ ЗАПИТАННЯ

1. Робота в iнтегрованому середовищi Turbo C. Встановлення конфiгурацiї. Компiляцiя i виконання програми. Режим вiдладки. Робота з вiкном Break/Watch.

2. Структура програми на мовi Сi.

3. Класифiкацiя символiв мови.

4. Знаки операцiй, прiоритет виконання операцiй.

5. Типи даних. Перетворення типiв.

6. Функцiї введення-виведення, особливостi їх роботи з рiзними типами даних.

7. Символьний тип даних, його представлення в пам'ятi машини.

 

Варіанти завдання

Варiант 1

1. Скласти програму, яка б повiдомляла, що Джон народився у 1940р., запитувала, який тепер рiк, i видавала вiк Джона.

2. Скласти програму, яка вводила б 2 числа в форматi f, знаходила їх суму, добуток, адресу добутку, адресоване число, i виводила б результат на екран.

3. Скласти програму для виводу шапки i одного рядка машинограми

 


№ п/п Табельний Нараховано Заборгованiсть До видачi

номер

 

 

Варiант 2

1. Скласти програму, яка б повiдомляла, що хрещення Русi вiдбулося в 988р., запитувала, який тепер рiк, i друкувала, скiльки рокiв пройшло з того часу.

2. Скласти програму, яка вводила б два числа в форматi f, знаходила їх суму, частку, адресу частки, адресоване число, i виводила результат на екран.

3. Скласти програму для виведення шапки i одного рядка машинограми:

 
 


№ п/п Номенклатурний Прихiд Видано Залишок

номер

 
 


Варiант 3

1. Скласти програму, яка б повiдомляла, що битва пiд Берестечком вiдбулася в 1649р., запитувала, який тепер рiк, i друкувала, скiльки рокiв пройшло з того часу.

2. Скласти програму, яка вводила б два цiлi числа, знаходила iх добуток, рiзницю, адресу рiзницi, число, записане пiд цiею адресою, i виводила результат на екран.

3. Скласти програму для виводу шапки i одного рядка машинограми

 

 
 


№ п/п Дiльниця Цех Видано

 

 
 


Варiант 4

1. Скласти програму, яка б повiдомляла, що Лiлi народилася в 1980р., запитувала, який тепер рiк, i видавала вiк Лiлi.

2. Скласти програму, яка вводила б два дiйснi числа, знаходила iх суму, частку, адресу суми, число, записане пiд цiею адресою, i виводила результат на екран.

3. Скласти програму для виводу шапки i одного рядка машинограми

 
 


№ п/п Табельний Нараховано Заборгованiсть До видачi

номер

Варiант 5

1. Скласти програму, яка б повiдомляла, що битва пiд Ватерлоо вiдбулася в 1815 р., запитувала, який тепер рiк, i друкувала, скiльки рокiв пройшло з того часу.

2. Скласти програму, яка вводила б два цiлi числа, знаходила їх суму, рiзницю, адресу рiзницi, число, записане пiд цiєю адресою, i виводила результат на екран.

3. Скласти програму для виводу шапки i одного рядка машинограми:

 
 


№ п/п Номенклатурний Наявнiсть Видано Залишок

номер

 

 
 


Варiант 6

1. Скласти програму, яка б повiдомляла, що будинок побудований у 1960р., запитувала, який тепер рiк, i друкувала, скiльки рокiв пройшло з того часу.

2. Скласти програму, яка б вводила дiйсне число, знаходила його квадрат, адресу квадрату, число, записане пiд цiєю адресою, i виводила результат на екран.

3. Скласти програму для виводу шапки i одного рядка машинограми:

 
 


№ п/п Табельний План Факт %

номер

 

 
 


Варiант 7

1. Скласти програму, яка повiдомляла б, що мiст побудований в 1900р., запитувала, який тепер рiк, i друкувала, скiльки рокiв пройшло з того часу.

2. Скласти програму, яка вводила б два дiйснi числа, обчислювала рiзницю їх квадратiв, знаходила адресу рiзницi i число, записане пiд цiєю адресою, i виводила результат на екран.

3. Скласти програму для виводу шапки i одного рядка машинограми:

 
 

 


№ п/п С/г культура План Факт %

 

 
 


Варiант 8

1. Скласти програму, яка б запитувала ваше iм'я, рiк народження, i друкувала ваш вiк.

2. Скласти програму, яка вводила б цiле число, знаходила числа, вiдповiдно бiльшi i меншi на 1, Їх адреси та числа, записанi пiд цими адресами, i виводила результат на екран.

3. Скласти програму для виводу шапки i одного рядка машинограми:

 

 
 


№ п/п Табельний План Факт %

номер

 
 


Варiант 9

1. Скласти програму, яка запитувала б ваше прiзвище, iм'я та вiтала вас.

2. Скласти програму, яка вводила б два цiлi числа, знаходила б iх суму, частку нацiло, адресу частки, число, записане пiд цiею адресою, i виводила результат на екран.

3. Скласти програму для виводу шапки i одного рядка машинограми

 
 


 

№ п/п Номенклатурний Наявнiсть Видано Залишок

номер

 
 


Варiант 10

1. Скласти програму, яка б повiдомляла, що мiсто засноване в 1256р., запитувала, який тепер рiк, i друкувала, скiльки рокiв пройшло вiд заснування мiста.

2. Скласти програму, яка вводила б два дiйснi числа, обчислювала суму iх квадратiв, знаходила адресу суми i число, записане пiд цiєю адресою, i виводила результат на екран.

3. Скласти програму для виводу шапки i одного рядка машинограми:

 
 


№ п/п Прiзвище Зарплата Премiя Всього

 

Варiант 11

1. Скласти програму, яка запитувала б, де ви народилися, i друкувала фразу типу: "Вiтаю жителя мiста _______".

2. Скласти програму, яка вводила б два дiйснi числа, обчислювала добуток їх квадратiв, знаходила адресу добутку i число, записане пiд цiєю адресою, i виводила результат на екран.

3. Скласти програму для виводу шапки i одного рядка машинограми:

 
 


№ п/п Матерiал План Факт %

 
 


Варiант 12

1. Скласти програму, яка повiдомляла б, що Америка вiдкрита в 1492р., запитувала, який тепер рiк, i повiдомляла, скiльки рокiв пройшло з часу вiдкриття Америки.

2. Скласти програму, яка вводила б два дiйснi числа, знаходила їх суму, частку, адресу частки, число, записане пiд цiєю адресою, i виводила результат на екран.

3. Скласти програму для виводу шапки i одного рядка машинограми:

 
 


№ п/п Табельний План Факт %

номер

 
 


Варiант 13

1. Скласти програму, яка запитувала б вас про ваше iм'я, мiсце народження i вiтала вас.

2. Скласти програму, яка вводила б цiле число, знаходила числа, вiдповiдно бiльшi i меншi на 1, iх адреси та числа, записанi пiд цими адресами, i виводила результат на екран.

3. Скласти програму для виводу шапки i одного рядка машинограми:

 
 


№ п/п Прiзвище Зарплата Вирахувано Всього

 
 


Варiант 14

1. Скласти програму, яка б запитувала ваше iм'я, рiк народження, i друкувала ваш вiк.

2. Скласти програму, яка вводила б два цiлi числа, знаходила iх добуток, рiзницю, адресу рiзницi, число, записане пiд цiєю адресою, i виводила результат на екран.

3. Скласти програму для виводу шапки i одного рядка машинограми:

 
 


№ п/п Номенклатурний Прихiд Видано Залишок

номер

 

Варiант 15

1. Скласти програму, яка б повiдомляла, що хрещення Русi вiдбулося в 988р., запитувала, який тепер рiк, i друкувала, скiльки рокiв пройшло з того часу.

2. Скласти програму, яка вводила б два цiлi числа, знаходила б їх суму, частку нацiло, адресу частки, число записане пiд цiєю адресою, i виводила результат на екран.

3. Скласти програму для виводу шапки i одного рядка машинограми:

 
 


№ п/п С/г культура План Факт %

 

 

 
 


Задача 2.1.

#include <stdio.h>

main()

{int i,j;

printf(" АМЕРИКА ВIДКРИТА У 1492 РОЦI\n");

printf("Який зараз рiк?\n");

scanf("%d",&i);

j=i-1492;

printf("\n");

printf(" З ЧАСУ ВIДКРИТТЯ АМЕРИКИ ПРОЙШЛО %d РОКIВ\n",j);

}

Задача 2.2.

#include <stdio.h>

main()

{ float i,j,s,h,*a;

puts(" ВВЕДIТЬ ДВА ЧИСЛА\n");

scanf("%f",&i);

scanf("%f",&j);

s=i+j;

h=i/j;

a=&h;

printf("СУМА ЧИСЕЛ %5.3f ,ЇХ ЧАСТКА %5.3f, ЯКА ЗНАХОДИТЬСЯ ПО \

АДРЕСУ %d\n",s,h,&a);

printf("АДРЕСОВАНЕ ЧИСЛО %5.3f",*a);

}

Задача 2.3.

Приклад програми, яка працює з адресами та покажчиками.

 

#include <stdio.h>

main()

{ float pl,fact,proc;

int n;

char tn[5];

scanf("%s",tn);

puts("-------------------------------------");

puts("|# п/п|табельний| план | факт | % |");

puts("| | номер | | | |");

puts("-------------------------------------");

n=1;

pl=234;

fact=220;

proc=fact/pl*100;

printf("| %d |%5s |%5.2f|%5.2f|%5.2f|",n,tn,pl,fact,proc);

}

 

Практичне заняття №3

Мета завдання - ознайомитися з умовними операторами та операторами циклу в мовi Сi.

Нижче приведенi фрагменти програм, якi мiстять умовнi оператори та оператори циклу:

1. if (h[i]>m)

{m=h[i];nm=i;}

 

2. return(x>0?1:x?-1:0);

 

3. if (x>0) m=1; else m=-1;

 

4. switch(i)

{case 1:puts("сiчень");break;

case 2:puts("лютий");break;

...

default:puts("помилка");

}

 

5. for (i=0;i<6;i++)

scanf ("%d",&k[i]);

 

6. for(i=0;i<10;printf("%d ",*(k+i)),i++)

 

 

7. do {is=0;

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

if(a[i-1]>a[i])

{c=a[i-1];a[i-1]=a[i];a[i]=c;is=1;}

}

while(is);

 

8. while(a>e) a\=2;

 

Контрольнi питання

1. Логiчнi операцiї. Операнди логiчних операцiй. Використання виразiв числового типу в ролi умов.

2. Помiченi оператори. Оператор безумовного переходу goto.

3. Умовний оператор if.

4. Тернарна операцiя ?

5. Оператор switch. Оптимiзацiя оператора.

6. Оператори циклу do, while, for. Способи пiдвищення гнучкостi оператора for.

7. Оператор переривання циклу break та переходу на наступний крок циклу continue.

 

ВАРІАНТИ ЗАВДАНЬ

Варiант 1

1. Ввести 3 числа, вибрати i надрукувати найменше з них.

2. Не використовуючи операторiв циклу, вводити i друкувати числа, поки не буде введений 0. Обчислити Їх суму, кiлькiсть, середнє арифметичне.

3. Написати програму, яка пiсля вводу порядкового номера дня тижня виводила б його назву.

4. Виконати завдання 2, використовуючи оператори циклу.

Варiант 2

1. Ввести 3 числа, вибрати i надрукувати найбiльше з них.

2. Не використовуючи операторiв циклу, вводити числа з iнтервалу (10,20) i друкувати їх квадрати. Ввiд припинити, коли чергове число вийде за межi iнтервалу.

3. Написати програму, яка запитувала б про мiсяць вашого народження (порядковий номер) i виводила повiдомлення типу: "Ви народилися взимку".

4. Виконати завдання 2, використовуючи оператори циклу.

Варiант 3

1. Написати програму, в якiй вводилося б дiйсне число, визначався його знак i друкувавася результат: 1-для додатнього числа, -1 - для вiд'ємного, 0 для 0.

2. Не використовуючи операторiв циклу, ввести 6 чисел, знайти їх суму i середнє арифметичне.

3. Написати програму, яка б пiсля вводу порядкового номера мiсяця виводила його назву.

 

Варіани 4

1. Написати програму, у якiй вводилося б цiле число i визначалося, чи дiлиться воно на 5.

2. Не використовуючи операторiв циклу, ввести 4 числа i знайти їх добуток.

3. Написати програму, яка б пiсля вводу порядкового номеру дня тижня визначала, робочий вiн чи вихiдний.

4. Виконати завдання 2, використовуючи оператори циклу.

Варiант 5

1. Написати програму, у якiй вводився б рiк i визначалося, чи вiн високосний.

2. Не використовуючи оператори циклу, ввести кiлька цiлих чисел i знайти суму i кiлькiсть тих з них, якi кратнi 5. Ввiд припинити пiсля вводу 0.

3. Написати програму, яка б пiсля вводу порякового номера мiсяця визначала, до якого кварталу вiн вiдноситься.

4. Виконати завдання 2, використовуючи оператори циклу.

Варiант 6

1. Написати програму, у якiй вводилися б 3 цiлi числа, вибиралося найменше з додатнiх, а якщо всi 3 числа вiд'ємнi, видавалося б повiдомлення про це.

2. Не використовуючи операторiв циклу, ввести кiлька чисел i знайти суму i кiлькiсть додатнiх, суму i кiлькiсть вiд'ємних. Ввiд припинити пiсля вводу 0.

3. Написати програму, яка б пiсля вводу порядкового номера мiсяця визначала, скiльки в ньому днiв (для невисокосного року).

4. Виконати завдання 2, використовуючи оператори циклу.

Варiант 7

1. Написати програму, у якiй вводилися б 3 цiлi числа, вибиралося найбiльше з вiд'ємних, а якщо всi 3 числа додатнi, виводилося б повiдомлення про це.

2. Не використовуючи операторiв циклу, ввести кiлька чисел i знайти суму i кiлькiсть тих з них, якi бiльшi 10. Ввiд припинити пiсля вводу 0.

3. Написати програму, в якiй кольорам спектру присвоювався б порядковий номер (1-7), i пiсля вводу порядкового номера виводилася б назва кольору.

4. Виконати завдання 2, використовуючи оператори циклу.

Варiант 8

1. Написати програму, у якiй вводилися б 3 цiлi числа i вибиралося найменше з них.

2. Не використовуючи операторiв циклу, ввести кiлька чисел i знайти суму i кiлькiсть тих з них, якi кратнi 10. Ввiд припинити пiсля вводу 0.

3. Написати програму, яка б пiсля вводу порядкового номера ноти визначала її назву.

4. Виконати завдання 2, використовуючи оператори циклу.

Варiант 9

1. Написати програму, у якiй вводилися б 3 цiлi числа i вибиралося найбiльше з них.

2. Не використовуючи операторiв циклу, ввести кiлька чисел i знайти суму i кiлькiсть тих з них, якi знаходяться в iнтервалi (1,8). Ввiд припинити пiсля вводу 0.

3. Написати програму, яка б пiсля вводу порядкового номера мiсяця визначала, до якого пiврiччя вiн вiдноситься.

4. Виконати завдання 2, використовуючи оператори циклу.

Варiант 10

1. Написати програму, у якiй вводилися б 3 цiлi числа i вибиралося найбiльше за модулем.

2. Не використовуючи операторiв циклу, ввести кiлька чисел i знайти суму i кiлькiсть тих з них, якi знаходяться в iнтервалi (1,8) i кратнi 2. Ввiд припинити пiсля вводу 0.

3. Написати програму, яка б пiсля вводу порядкового номера мiсяця визначала, скiльки в ньому днiв (для високосного року).

4. Виконати завдання 2, використовуючи оператори циклу.

Варiант 11

1. Написати програму, у якiй вводилися б 3 цiлi числа i виводилися у порядку зростання.

2. Не використовуючи операторiв циклу, ввести 4 цiлi числа i знайти добуток тих з них, якi бiльшi 0.

3. Написати програму, у якiй пiсля вводу вiдповiдного порядкового номера виводиться напрям (пiвнiч, пiвдень, захiд, схiд).

4. Виконати завдання 2, використовуючи оператори циклу.

Варiант 12

1. Написати програму, у якiй вводилися б 3 цiлi числа i виводилися в порядку спадання.

2. Не використовуючи оператори циклу, ввести 4 числа i знайти добуток тих з них, якi знаходяться в iнтервалi (1,4).

3. Написати програму, в якiй вводилися б покази барометра, i , залежно вiд них, видавався прогноз погоди: 990 i менше - дощ, 990-1100 - змiнна, бiльше 1100 - сухо.

4. Виконати завдання 2, використовуючи оператори циклу.

Варiант 13

1. Написати програму, у якi вводилися б три числа i виводилися в порядку зростання.

2. Не використовуючи операторiв циклу, ввести ряд чисел i знайти суму, кiлькiсть i середне арифметичне вiд'емних. Ввiд припинити пiсля вводу 0.

3. Написати програму, у якiй вводилася б кiлькiсть жителiв мiста (у тис.чл), i визначалося: мале воно (<100 тис.чл), середне (100-400 тис.чл), велике (400 тис-мiльйон), мiльйнер (бiльше мiльйона).

4. Виконати завдання 2, використовуючи оператори циклу.

Варiант 14

1. Написати програму, у якiй вводилися б 3 цiлi числа i виводилися в порядку спадання iх модулiв.

2. Не використовуючи операторiв циклу, ввести кiлька чисел i знайти суму i кiлькiсть тих з них, якi кратнi 7. Ввiд припинити пiсля вводу 0.

3. Написати програму, в якiй кожнiй частинi свiту присвоювався б вiдповiдний номер i пiсля вводу цього номера виводилася б вiдповiдна назва.

4. Виконати завдання 2, використовуючи оператори циклу.

Варiант 15

1. Написати програму, у якiй вводилися б 3 цiлi числа i виводилися в порядку зростання iх модулiв.

2. Не використовуючи операторiв циклу, ввести кiлька чисел i знайти суму i кiлькiсть тих з них, якi кратнi 2 i бiльших 8. Ввiд припинити пiсля вводу 0.

3. Написати програму, в якiй кожнiй планетi Сонячноi системи присвоювався б порядковий номер i пiсля вводу цього номера виводилася б вiдповiдна назва.

4. Виконати завдання 2, використовуючи оператори циклу.

 

Задача 3.1.

#include <stdio.h>

main()

{ float x;

int y;

puts("введiть число:");

scanf("%f",&x);

y=(x>0?1:x?-1:0);

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

}

Задача 3.2.

#include <stdio.h>

main()

{ int a,i=0,s=0;

float sa;

m:printf("введiть число\n");

scanf("%d",&a);

s+=a;

i++;

if(i<6) goto m;

sa=s/6.0;

printf("s=%d",s);

printf(" sa=%f",sa);

}

Задача 3.3.

#include <stdio.h>

#include <string.h>

main()

{ int x;

char k[10];

a: puts("введiть порядковий номер мiсяця");

scanf("%d",&x);

switch (x)

{ case 1:{ strcpy(k,"сiчень"); break; }

case 2:{ strcpy(k,"лютий"); break; }

case 3:{ strcpy(k,"березень"); break; }

case 4:{ strcpy(k,"квiтень"); break; }

case 5:{ strcpy(k,"травень"); break; }

case 6:{ strcpy(k,"червень"); break; }

case 7:{ strcpy(k,"липень"); break; }

case 8:{ strcpy(k,"серпень"); break; }

case 9:{ strcpy(k,"вересень"); break; }

case 10:{ strcpy(k,"жовтень"); break; }

case 11:{ strcpy(k,"листопад"); break; }

case 12:{ strcpy(k,"грудень"); break; }

default: x=0;

}

if (x==0){ puts("\n такого мiсяця немае:\n");

goto a;

}

printf("\n мiсяць %d називаеться %s",x,k);

}

Задача 3.4.

#include <stdio.h>

#include <conio1.h>

main()

{ int i,j,s=0;

float sa;

clrscr();

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

{printf("\n");

printf("введи число \n");

scanf("%d",&j);

s+=j;

}

sa=s/6;

printf("сума чисел=%d",s);

printf("\n");

printf("середне арифметичне=%f",sa);

}

Практичне заняття №4

Мета завдання – отримання навиків побудови таблиць функцій та використання оператора циклу з параметром.

Контрольнi питання

1. Які засоби доцільно використовувати для організації циклів із заданим числом повторень?

2. Вкажіть призначення і правила організації циклу.

3. Перерахуйте можливі способи організації циклу із заданим числом повторень.

4. Що таке ітераційний циклічний процес?

 

ВАРІАНТИ ЗАВДАНЬ

Завдання 1:

Скласти програму обчислення значень функцiї f(х) на вiдрiзку А,В] в точках Хi = А + iН, де Н = (В-А)/М, М - задане цiле число.

 

 
 


Номер Функцiя ПАРАМЕТРИ

варіанта

А В М

1. x-sin(x) 0 p/2 10

2. sin(x) p/4 p/2 15

3. cos(x) p/3 2p/3 20

4. tg(x) 0 p/4 10

5. ctg(x) p/4 p/2 15

6. arcsin(x) 0 1 20

7. arccos(x) 0.5 1 10

8. arctg(x) 2 7 15

9. sin(x)-cos(x) 0 p/2 20

10. xsin(x) 0 3p 10

11. sin(1/x) p/8 2/p 15

12. cos(1/x) p/4 4/p 20

13. sin(x2) p/6 2p/3 10

14. cos(x2) p/3 3p/2 15

15. sin(x)+tg(x) 0 p/4 20

16. cos(x)+ctg(x) p/4 p/2 10

17. tg(x/2) 0 2p/3 15

18. tg(x/2)+cos(x) p/2 p 20

19. ctg(x/3)+sin(x) p/4 p/2 10

20. sin(x/4)/2 p/2 p 15

 

Завдання 2:

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

 
 


Варіант Функція Умова Вхідні дані Діапазон

і крок зміни

аргумента

 
 


2

1 at ln t 1<=t<=2 a=-0.5 0<=t<=3

y = 1 t<1 b=2 0.15

at

e cos bt t>2

 
 


px2-7/x2 x<1.3 a=1.5 0.8 <=x<=2

2 y = ax2+7Öx x=1.3 0.1

lg(x+7Öx) x>1.3

       
 
 
   


3 ax2+bx+c x<1.2 a=2.8 1 <=x<= 2

w = a/x+ Öx2+1 x=1.2 b=-0.3 0.05

(a+bx)/ Öx2+1 x>1.2 c=4


4 px2-7/x2 x<1.4 a=1.65 0.7 <=x<= 2

Q = ax2+7Öx x=1.4 0.1

ln (x+7Ö| x+a |) x>1.4

       
 
 
   


5 1.5 cos2 x x<1 a=2.3 0.2 <=x<= 2.8

y = 1.8 ax x=1 0.2

(x-2) 2 + 6 1<x<2

3 tg x x>2


6 x 3Ö x-a x>a a=2.5 1 <=x<= 5

w = x sin ax x=a 0.5

e-ax cos ax x<a

 
 


7 bx - lg bx bx<1 b=1.5 0.1 <=x<= 1

Q = 1 bx=1 0.1

bx + lg bx bx>1


sin x lgx x>3.5 - 2 <=x<= 5

8 y = cos2 x x<=3.5 0.25

       
 
 
   


lg(x+1) x>1 a=20.3 0.5 <=x<= 2

9 f = sin2 Ö| ax |) x<=1 0.1

 
 


(ln3x+x2) /Ö x+t x<0.5 t=2.2 0.2 <=x<= 2

10 z = Ö x+t+1/x x=0.5 0.2

cos x+t sin2 x x>0.5


11 a+b x<2.8 a=2.6 0 <=x<= 7

s = ex +cos x b=-0.39 0.5

 

(a+b) / (x+1) 2.8<=х<6

ex +sin x x>=6


a lg x+ 3Ö | x | x>1 a=0.9 0.8 <=x<= 2

12 y = 2a cos x+3x2 x<=1 0.1


 

13 a / i + bi2+c i<4 a=2.1 0 <=i<=12

w= i 4<=i<=6 b=1.8 1

ai + bi3 i>6 c=-20.5

       
 
 
   


a sin ( ( i2+1) / n) sin( (i2+1) / n ) > 0 a=0.3 1<=i<= 10

14 z = 1

cos (i + 1 /n) sin( (i2+1) / n ) < 0 n=10

 

           
 
 
   
     
 

 


Ö at2 + b sin t +1 t<0.1 a=2.5 -1 <=t<= 1

15 w = at+b t=0.1 b=0.4 0.2

Ö at2 + b cos t + 1 t>0.1

 
 

 


Практичне заняття №5

Масиви в мовi Сi.

При виконаннi цього завдання планується знайомство з описом масивiв в мовi Сi, розмiщенням масивiв у пам'ятi, способами передачi масиву як параметра функцiї, а також реалiзацiєю деяких алгоритмiв впорядкування масивiв. При виконаннi завдання використовуються рiзнi типи циклiчних операторiв.

Нижче приведенi програми, якi iлюструють правила роботи з масивами.


Приклад 1

/*iлюстрацiя розмiщення масивiв в пам'ятi i передачi масиву як параметра функцiї*/

# include <stdio.h>

int mini(int h[],int j)

{int i,m=h[0],nm=0;

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

if (h[i]<m)

{m=h[i];

nm=i; }

return(nm);

}

Main ()

{ int k[10],i,*u,p;

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

{ scanf ("%d",&k[i]);

u=&k[i];

printf("число %d\n",k[i]);

printf ("адреса %d\n",&k[i]);

printf("адресоване %d\n",*u);

printf("u %d\n",u);

}

printf("адреса масиву %d\n",k);

printf("введено масив\n");

for(i=0;i<10;printf("%d ",*(k+i)),i++);

p=mini(k,10);

printf("\n мiн ел мас %d з ном %d\n",

k[p], p);

scanf("%d",&p);

}

 

Наступний приклад, крiм роботи з масивами, iлюструє також роботу з вихiдними потоками (перенаправлення виводу в файл на диску)

Приклад 2

/*визначення максимального елемента масиву*/

#include <stdio.h>

#include <conio.h>

FILE *stream;

int maxi(int h[],int l)

{int i,m=h[0],nm=0;

for(i=1;i<l;i++)

if (h[i]>m)

{m=h[i];

nm=i;

}

return(nm);

}

Main ()

{ int k[6],i,*u,p;

stream=fopen("a:res1.txt","w");

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

scanf ("%d",&k[i]);

fprintf(stream,"введено масив\n");

for(i=0;i<6;fprintf(stream,"%d ",*(k+i)),i++);

p=maxi(k,6);

fprintf(stream,

"\n максимальний елемент масиву %d з номером %d\n",k[p],p);

fclose(stream);

}

 


Для впорядкування масивiв пропонуються такi алгоритми, реалiзованi на мовi Сi.

Main()

{ int b[10],m=10,i;

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

scanf("%d",&b[i]);

printf("кiнець вводу\n");

bubble(b,m);

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

printf("%d ",b[i]);

printf("\n");

}

 

Main()

{ int b[10],m=10,i;

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

scanf("%d",&b[i]);

printf("кiнець вводу\n");

insert(b,m);

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

printf("%d ",b[i]);

printf("\n");

}

 

Main()

{ int b[10],m=10,i;

for (i=0;i<m;i++) scanf("%d",&b[i]);

printf("кiнець вводу\n");

select(b,m);

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

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

}


Контрольнi питання

1. Тип даних масиви. Представлення масивiв у пам'ятi машини.

2. Зв'язок масивiв та покажчикiв.

3. Передача масивiв у якостi параметрiв функцiЇ.

4. Багатовимiрнi масиви.

5. Iнiцiалiзацiя масивiв.

 

ВАРІАНТИ ЗАВДАНЬ

Виконати такi завдання:

1. Органiзувавши керований ввiд, ввести ряд чисел i сформувати масив з тих, якi задовольняють певну умову (див. нижче). Перебачити довжину масиву не бiльше 6 елементiв.

2. Для непарних варiантiв - впорядкувати масив, для парних варiантiв - знайти максимум i мiнiмум. Алгоритм вибрати самостiйно.

3. Знайти середне арифметичне, середне геометричне, середнє гармонiчне i дисперсiю масиву.

 

Умови, яким повиннi задовольняти елементи масивiв:

 


Варiант 1

Цiлi числа, кратнi 3.

 

Варiант 2

Дiйснi числа, бiльшi 10.

 

Варiант 3

Дiйснi числа, бiльшi 1 i меншi e (exp(1)).

 

Варiант 4

Цiлi числа бiльшi 4, якi при дiленнi на 3 дають остачу 1.

 

Варiант 5

Цiлi числа, по модулю меншi 5.

 

 

Варiант 6

Дiйснi додатнi числа, десятковий логарифм яких менший 1.22.

 

Варiант 7

Дiйснi додатнi числа, натуральний логарифм яких менший 2.1.

 


Варiант 8

Цiлi числа бiльшi 6, якi при дiленнi на 5 дають остачу 2.

 

Варiант 9

Цiлi числа, по модулю меншi 8 i бiльшi 3.

 

Варiант 10

Дiйснi числа, по модулю меншi 7 i бiльшi 4.

 

Варiант 11

Цiлi додатнi числа, якi при дiленнi на 4 дають остачу 2.

 

Варiант 12

Дiйснi числа такi, що їх квадрати меншi або рiвнi 4.

 

Варiант 13

Дiйснi числа такi, що квадратнi коренi з їх модулiв меншi 3.1415.

 

Варiант 14

Дiйснi числа з iнтервалу (6,9).

 

Варiант 15

Цiлi простi числа.


 

Main()

{ float b[7],d=1,a,pi=3.1415,s1=0,s2=0,s3=0,sa,sg,sgl,st;

int q,i=0,j;

FILE *stream;

do { puts ("введiть число ");

scanf ("%f",&a);

if(sqrt(a)<pi)

{ b[i]=a;i++;

s1+=a;

s2+=1/a;

d*=a;

}

puts ("для продовження-0");

scanf ("%d",&q);

}

while (!q);

stream=fopen("res.txt","w");

fprintf(stream,"введений масив");

for(j=0;j<i;fprintf(stream," %5.3f",*(b+j++)));

insert(b,i);

fprintf(stream,"\n просортований масив");







Последнее изменение этой страницы: 2016-04-08; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.214.224.224 (0.156 с.)