Лабораторна робота 5

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКНІ
Факультет:
Комп’ютерні науки
Кафедра:
АСУ

Інформація про роботу

Рік:
2024
Тип роботи:
Лабораторна робота
Предмет:
Програмно-орієнтовані мови програмування
Варіант:
5

Частина тексту файла (без зображень, графіків і формул):

/ pl.h: #pragma once int check(char **check); double polinom(char *tup,...); main.c #include<stdio.h> #include<conio.h> #include"pl.h" #define n 5 int main(){//головна функція int i; int a; double res,arr[n]; scanf("%d", &a); for(i=0;i<n;i++) scanf("%lf", arr+i); res=polinom("%d %lf %lf %lf %lf %lf", a, arr[0], arr[1], arr[2], arr[3], arr[4]); printf("%lf\n", res); res=polinom("%lf %lf %lf %lf", (double)a, arr[0], arr[1], arr[2]); printf("%lf\n", res); res=polinom("%d %lf %lf %lf", a, arr[0], arr[1], arr[2]); printf("%lf\n", res); getch(); return 0; } //можеш переписувати і викликати функцію в будь-якому порядку з будь-якою кількісттю вхідних данних(на вхід в рядку правда треба описувати якого типу данні типодаєш, кожну змінну описувати,як той самий прінтф чи сканф), функція повинна сприймати double, int i float, але в меневоно вийо, тому хз... pl.c: #pragma once #include "pl.h" #include<stdarg.h>//хрєнь, де лежать функції для роботи зі змінною кількісттю параметрів double polinom(char *tup,...){//функція з якою я найдовше займався сексом(твоє завдання) double res,x;//змінні під результат і х int ch;//зміння для перевірки int arg0;//змінні потипно для цілого, з рухомою комою, і з рухомою комою подвоєної точності float arg1; double arg2; va_list ap;//змінна для роботи va_start(ap, tup);//це треба щоб зловити першу змінну з поданих res=0; ch=check(&tup);//виклик перевірки if(ch==0)//в залежності від того, що перевірка видасть або виходимо за межі функції, або ж використовуємо потрібну змінну для того щоб вивести х return 0; if(ch==1){ arg0=va_arg(ap,int); x=arg0; } if(ch==2){ arg1=va_arg(ap,float); x=arg1; } if(ch==3){ arg2=va_arg(ap,double); x=arg2; } while(1){//безмежний цикл, все аналогічно до попереднього "витягування х" але тут витягуються потрібні шматки поліному ch=check(&tup); if(ch==0) break; if(ch==1){ arg0=va_arg(ap,int); res=res*x+arg0; } if(ch==2){ arg1=va_arg(ap,float); res=res*x+arg1; } if(ch==3){ arg2=va_arg(ap,double); res=res*x+arg2; } } va_end(ap);//звільняється змінна АР return res;//повертається результат } int check(char **check){//функція перевірки вхідних данних(ця хуйня для того, щобвоно парахо під тип функції scanf while(1){//в цьому безмежному циклі воно перебирає шукаючи символ % if(check[0][0]==0)//якщо попало на кінець рядка - повернути нуль return 0; if(check[0][0]=='%')//знайшло відсоток - на вихід break; else check[0]=&check[0][1]; } if(check[0][0]=='%' && check[0][1]=='d'){//що описано то і повертає(для інт 1, для флоат 2, для дабл 3) check[0]=&check[0][2]; return 1; } if(check[0][0]=='%' && check[0][1]=='f'){ check[0]=&check[0][2]; return 2; } if(check[0][0]=='%' && check[0][1]=='l' && check[0][2]=='f'){ check[0]=&check[0][3]; return 3; } return 0; }
Антиботан аватар за замовчуванням

24.04.2014 23:04-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!