Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ekzamen_KhIO_I_semestr_-_shpori.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.07 Mб
Скачать

4.Табулювання функції із виведенням результатів на екран

program Project1;

{$APPTYPE CONSOLE}

Uses

SysUtils;

Type Vector = array[0..640] of Real;

VAR Xe, Ye:Vector;

a1, b1, h : Real;

i,Ne : Integer;

function f(x:real):real;

begin

f:=x*x

end;

BEGIN

writeln('Nе=');

readln(Ne);

writeln('a1,b1=');

readln(a1,b1);

h := (b1-a1)/(Ne-1);

Xe[0]:=a1;

FOR i:=1 TO Ne-1 DO begin

Ye[i] := f(Xe[i]);

Xe[i+1] := Xe[i] + h;

Writeln(Ye[i]:6:3, Xe[i]:6:3);

end;

Readln

END.

4.Табуляція з занесенням в масив С++

Білет 23.

1.Коефіцієнти масштабування графіка.Для чого вони і як їх обчислити Щоб побудувати графік нам потрібно мати функціональну залежність задану в табличній або аналітичній формі. Якщо ф-я задана аналітично її потрібно протабулювати , отримаємо в результаті цього таблицю значень. Потім потрібно передбачити масштабування цих значень, для того щоб наше зображення помістилося на Canvas. Очевидно, що заповнювати графіком увесь Canvas не доцільно, оскільки не залишиться місця для підписів. Тому ми відступаємо від полів області виведення на L-пікселів. Маючи таблицю значень ми можемо порахувати коефіцієнти масштабування :

Kx=Mx-2*L/MaxX-MinX

Ky=My-2*L/MinY-MaxY

Zx= Mx*MinY-L*( MinX+MaxX)/ MaxX-MinX

Zy=My*MinY-L*( MinY+MaxY) / MaY-MinY

Ці коефіцієнти дозволяють не тільки масштабування, а й поворот та 180 градусів.

Mx, My – довжина і ширина в пік селях нашого Канваса

L – це відстань від графіка до країв Канваса.

2. 23.2 Одновимірні масиви і С++ Масив - це впорядкований скінченний набір елементів (даних) одного типу. Одновимірний масив – це вектор.

Кожен елемент масиву має однакове ім’я – ім’я масиву, і відрізняється індексом (ціле число), за яким здійснюється доступ до елемента масиву. Індекси масивів у С/С++ починаються з 0. У програмі одновимірний масив оголошується наступним чином: <тип> <ім’я масиву> [розмір] <ініціалізація>; , де розмір – кількість елементів одновимірного масиву. Після визначення ім’я масиву стає вказівником-константою, значення якого є незмінним і становить адресу першого (нульового) елемента масиву.

За способом розміщення масиви поділяються на статичні та динамічні. Розмір статичного масиву можна задавати константою або константним виразом. Оскільки ділянка у оперативній пам’яті під масив задається на етапі компіляції і її розмір визначається типом елементів масиву та їх кількістю, розмірність масиву повинна бути визначена у тексті програми, а не підчас її виконання. Для визначення масиву змінного розміру використовується механізм динамічного виділення пам’яті.

Наприклад: - оголошення одновимірного масиву з п’яти елементів цілого типу: int a[5]; - динамічне виділення пам’яті під 10 цілочисельних елементів: int*m=new int [10]; Враховуючи те, що ім’я масиву є вказівником, зрозумілим стає зміст останньої операції: вказівникові на int m присвоюється початкова адреса ділянки пам’яті, виділеної у динамічній області під 10 цілочисельних елементів.

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

3.Побудова графіка sin(x) 4.Ньютон С++ //---------------------------------------------------------------------------

#include <stdio.h>

#pragma hdrstop

#include <tchar.h>

#include <math.h>

#include <conio.h>

#include <iostream>

#include <clocale>

//---------------------------------------------------------------------------

#pragma argsused

using namespace std;

float f( double x);

float f1( double x);

int main()

{

double g,x,eps,dx ;

eps=0.0001;

x=3;

do

{

dx=f(x)/f1(x);

x=x-dx;

}

while (fabs(dx)>eps);

cout<<"x="<<x<<endl;

cout<<"f(x)="<<g;

system ("PAUSE");

return 0;

}

float f( double x)

{ double f=exp(x)+log(x)-10*x;

return (f);}

float f1( double x)

{ double fp=exp(x)+1/x-10;

return (fp);}

Білет24 2. Вказівники – це змінні, які містять не значення, а адресу деякого значення. Вказівник можна описати і проініціалізувати. Опис:<імя типу>*<імя вказівника>; Ініціалізація:<імя вказівника>=&<імя вже описаної змінної>; Наприклад: int i=5; //описано i проініціалізовано// цілочисельну змінну і int*p; // описано p-вказівник на int

P=&і; // р проініціалізовано адресою і Тоді і = і+7; є еквівалентно *p=*p+7;

Тут операція & повертає адресу змінної-операнда і. Вказівники не потрібно ініціалізувати в момент їхнього опису, проте перед їхнім використанням ініціалізація є необхідною. У мої С++ є 3 типи вказівників:

_ вказівник на змінну(обєкт); _вказівник на функцію; _вказівник на void. У С++ вказівник не є самостійним типом. Він пов'язаний з іншим конкретним типом даних, у нашому прикладі – 3int,

Вказівник на функцію містить адрес комірки памяті, у якій знаходиться перший виконуваний оператор функції – адресу точки входу у функцію. Наприклад опис: int(*tp)(float,float); задає вказівник з іменем fp на функцію, яка повертає значення типу int і яка має два параметри типу float.

У вказівнику на void можна у різні моменти роботи програми зберігати адреси змінних різних типів. Приклад вказівника на функцію void f(int a)// опис. Функцію

{<тіло функції>;}

Void(*fp)(int) fp=&f; // ініціалізуємо вказівник fp(10);// аналог попереднього виклику При груповому описі змінних, * ставимо перед кожною змінною, наприклад:

Int*a,b,*c; Тут описано два вказівники.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]