ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Курсова з інформатики
         

     

    Комп'ютерні науки
    Скласти програму визначення мінімального числа квітів, необхідних для розфарбування карти довільної конфігурації таким чином, щоб країни з однаковою розфарбуванням не стикалися. Схему меж карти представити масивом. На зовнішніх файлах розташувати 3 - 4 схеми розташування країн. Підсумки представити у вигляді тексту із зазначенням обраних для кожної з країн квітів. Бажано завершити програму графічним додатком.

    Змінні:
    "num" - номер файла, що обирається користувачем.
    "filen" - ім'я файлу.
    "g [1 .. 100] - масив, який використовується" генератором перебору всіх варіантів "
    "s: array [i, j]" - масив "зв'язків" показує, чи є зв'язок між країнами "i" і "j".
    "n" - кількість квітів, що використовуються для розмальовки.
    "max - максимально можливу кількість країн (визначається при зчитуванні даних).
    "s1, s2, k, j, i, a" - змінні, для роботи "генератора".
    "f, f1" - змінні для роботи з файлами.

    "function get: integer;"
    Функція зчитує поточне число, з файлу пов'язаного зі змінною - "f" і шукає Максимальна кількість з усіх лічених.
    Поки рядок =''або символ є:
    - Цифрою,
    - "-",< Br /> - "."
    зчитує символ.
    Якщо символ є:
    - Цифрою,
    - "-",< Br /> - ".",
    то він додається в рядок "s".
    Рядок цифр "s" перетворюється в число. Якщо "max" менше числа, то "max" прирівнюється зовсiм небагато.

    "function pr: boolean;"
    Функція перевіряє, чи можна країну - i зафарбувати кольором - g [i] (Чи можна заглиблюватися по дереву).

    Перебирає все розфарбовані країни (від "1" до "i-1") і порівнює кольору кожної з них з кольором країни "i".

    "function gen (n: integer): boolean;"
    Функція, що визначає можливість розмальовки країн "n"-м кол-вом квітів.
    Кожному елементу масиву "g" присвоює значення рівне "0". Поточному номеру даної країни "i" задає значення "1".
    Повторює дії:
    Повторює дію:
    До номером кольору даної країни додати "1" ( "g [i]: = g [i] 1;"), поки не можна країну "i" розфарбувати в колір "g [i]" або колір "i"-ї країни не більше числа "n". Якщо колір "i"-ї країни більше числа "n" то:
    номером кольору розглянутої
    країни прирівнює "0" і
    знижує номер даної країни на "1".
    Інакше підвищує номер даної країни на "1", поки номер даної країни не дорівнює "1" або номер даної країни не більше кількості країн.
    Значення функції одно "True", якщо номер даної країни більше кількості країн.

    Основна програма:
    Виведення повідомлень користувачеві (див. робочу програму)
    Запит номера файлу ( "num").
    Виконуються дії в змінну "num" запитується символ натиснутою клавіші, якщо натиснута клавіша не від 1 до 3 то виводиться повідомлення про помилку поки не натиснута клавіша від 1 до 3.
    Формується ім'я вихідного файлу filen: = 'input' + num + '. Txt'.
    Повідомлення користувачу про вибраний файлі.

    Зчитування даних
    Відкриється файл "filen" для зчитування даних.
    "max: = 0".
    Кожній комірці масиву зв'язків привласнюється "брехня"
    Поки файл не скінчився зчитуються пара країн, в масив зв'язків з індексами: [країна з меншим номером, з великим] присвоюється значення істина.
    Закривається файл "filen".

    Блок, який визначає мінімальну кількість квітів.
    Початкова кількість квітів = 1.
    Повторювати дії:
    Підвищити кількість квітів на одиницю.
    Ще не можлива розфарбування всіх країн даними кількістю квітів.

    Запис даних.
    Створити файл "Output.txt". Рахувати в нього кількість квітів. Вважати в нього список розмальовки країн. Закрити файл.

    Текст програми
    program mag;
    uses
    crt;
    var
    num: char;
    filen: string;
    g: array [1 .. 100] of integer;
    s: array [1 .. 100,1 .. 100] of boolean;
    max, s1, s2, j, n, i, a: integer;
    f: file of char;
    f1: text;

    (Функція зчитує поточне число,
    з файлу пов'язаного з пеpеменной - f. )

    function get: integer;
    var
    k, c: integer;
    s: string;
    ch: char;
    begin
    s :=''; k: = 50;
    while ((s ='') or (k = 43) or (k = 45) or ((k> 47) and (k
    begin
    read (f, ch); k: = ord (ch);
    if (k = 43) or (k = 45) or ((k> 47) and (k
    end;
    val (s, c, k);
    if max
    get: = c;
    end;

    (Функція перевіряє, чи можна країну - i
    зафарбувати кольором - g [i]. )
    function pr: boolean;
    var j: integer;
    begin
    pr: = true;
    if i> 1 then
    for j: = 1 to i-1 do
    if s [j, i] then
    if g [i] = g [j] then pr: = false;
    end;

    function gen (n: integer): boolean;
    begin
    for j: = 1 to max do
    g [j]: = 0;
    i: = 1;
    repeat
    repeat
    g [i]: = g [i] +1;
    until pr or (g [i]> n);
    if (g [i]> n) then
    begin
    g [i]: = 0; i: = i-1;
    end
    else i: = i +1;
    until (i = 1) or (i> max);
    gen: = i> max;
    end;
    begin
    clrscr;
    writeln ( 'Haжміте цифру, що вказує номер файла');
    writeln ( 'з якого будуть счтиваться дані.');
    writeln ('');< br /> for i: = 1 to 3 do
    writeln ( '', i, '- файл input', i, '. txt');

    (Запpос номеp файлу.)
    repeat
    num: = readkey;
    if not ((num = '1 ') or (num = '2') or (num = '3 ')) then
    writeln ( 'Ви в чомусь помилилися');
    until (num = '1 ') or (num = '2') or (num = '3 ');
    filen: = 'input' + num + '. txt';
    writeln ('');< br /> writeln ( 'Обрано файл -', filen);
    writeln ('');< br />
    (Зчитування даних)
    Assign (f, filen); Reset (f);
    max: = 0;
    for s1: = 1 to 100 do
    for s2: = 1 to 100 do
    s [s1, s2]: = false;
    while not eof (f) do
    begin
    s1: = get; s2: = get;
    if s1> s2 then s [s2, s1]: = true else s [s1, s2]: = true;
    end;
    Close (f);

    n: = 1;
    repeat
    n: = n +1;
    until gen (n);

    (Виведення даних у файл - 'output.txt'.)
    Assign (f1, 'output.txt'); Rewrite (f1);
    writeln (f1, 'Число країн =', max);
    writeln (f1 ,'');< br /> writeln (f1, 'N Cтрана =', n);
    for j: = 1 to max do
    writeln (f1, 'КРАЇНИ -', j, ', колір -', g [j], '');
    Close (f1);
    end.
    Koнец.

    Дані з Input1.txt:

    1 2 1 7 2 7 2 3 2 8 3 4 3 9 3 8 4 9 4 5 5 6 5 9 5 13
    6 13 6 14 6 15 7 8 7 11 8 9 8 10 8 11 9 10 9 12 9 13
    10 11 10 12 10 14 11 15 12 14 13 14 14 15

    Результат в output.txt:

    Число країн = 15

    N країн = 4
    країна - 1, колір - 1
    країна - 2, колір - 2
    країна - 3, колір - 1
    країна - 4, колір - 2
    країна - 5, колір - 1
    країна - 6, колір - 2
    країна - 7, колір - 3
    країна - 8, колір - 4
    країна - 9, колір - 3
    країна - 10, колір - 1
    країна - 11, колір - 2
    країна - 12, колір - 2
    країна - 13, колір - 4
    країна - 14, колір - 3
    країна - 15, колір - 1



    1. Дана функція f (x) = a + b * x * Sin (c * x + d), в якій коефіцієнти a, b, c, d визначаються функцією Rnd з використанням процедури Randomize. Постійне k визначається в інтервалі [0.1; 0.2] c кроком 0.01. Скласти програму визначення першої точки перетину прямої y = k * x з функцією f для x> 0.

    Текст програми:
    CLS
    RANDOMIZE 1000
    INPUT "точність"; t
    a1 = RND (100)
    q1 = RND (90)
    q2 = RND (80)
    q3 = RND (110)

    DEF fnf (x) = a1 + q1 * x * SIN (q2 * x + q3) - k * x
    a = 0: b = 110
    FOR k =. 1 TO.2 STEP.01

    GOSUB pod1
    GOSUB pod2
    PRINT "при k ="; k
    cor = (x1 + x2)/2: y = fnf (cor) + k * x
    PRINT "точка перетину"
    PRINT "x ="; cor; "y ="; y;
    a = x2
    NEXT k
    PRINT "Точність"; t
    END

    a = x2
    NEXT k
    PRINT "Точність"; t
    END

    pod1: 'відділення коренів в інтервалі а, в'
    s = 10 * t: x = a
    200: p = fnf (x) * f (x + s)
    IF p> 0 THEN 1
    x1 = x: x2 = x + s: RETURN
    1 x = x + s: IF x
    /> RETURN
    pod2: 'уточнення кореня'
    10 x = (x1 + x2)/2: y = fnf (x)
    IF fnf (x1) * y> 0 THEN x1 = x ELSE x2 = x
    IF ABS (x2 - x1)> t THEN 10
    /> RETURN
    Дані:
    a = 0
    b = 110
    точність? .001

    Результати:

    при k =. 1
    точка перетину
    x =. 0096875 y =. 7444314
    при k =. 11
    точка перетину
    x =. 0196875 y =. 7470496
    при k =. 12
    точка перетину
    x =. 0296875 y =. 7497169
    при k =. 13
    точка перетину
    x =. 0396875 y =. 7524328
    при k =. 14
    точка перетину
    x =. 0496875 y =. 7551972
    при k =. 15
    точка перетину
    x =. 0596875 y =. 7580096
    при k =. 16
    точка перетину
    x = 6.968751E-02 y =. 7608697
    при k =. 17
    точка перетину
    x = 7.968751E-02 y =. 7637773
    при k =. 18
    точка перетину
    x =. 0896875 y =. 7667319
    при k =. 19
    точка перетину
    x =. 0996875 y =. 7697333

    2. Відомі координати вершин чотирикутника A, B, C, D. Знайти точку перетину його діагоналей і найбільший радіус кола, що має центр у цій точці і повністю лежить всередині цього чотирикутника. Координати точок розташувати на гнучкому диску.

    Текст програми:

    REM Програма знаходження точки перетину діагоналей 4-х кутника
    REM та найбільшого радіусу кола лежить в ньому.
    CLS
    OPEN "a: zad2.dat" FOR INPUT AS # 1
    OPEN "a: zad2.txt" FOR OUTPUT AS # 2
    DIM r (6)
    INPUT # 1, x1, y1, x2, y2, x3, y3, x4, y4
    x = ((x3 * y2 - x2 * y3) * (x4 - x1) - (x4 * y1 - x1 * y4) * (x3 - x2))/((y4
    - Y1) * (x3 - x2) - (y3 - y2) * (x4 - x1))
    y = ((y4 - y1) * (x - x1)/(x4 - x1)) + y1
    r (1) = ABS ((x2 - x1) * y - (y2 - y1) * x + x1 * y2 - y1 * x2)/SQR ((x2 - x1) ^
    2 + (y2 - y1) ^ 2)
    r (2) = ABS ((x3 - x2) * y - (y3 - y2) * x + x2 * y3 - y2 * x3)/SQR ((x3 - x2) ^
    2 + (y3 - y2) ^ 2)
    r (3) = ABS ((x4 - x3) * y - (y4 - y3) * x + x3 * y4 - y3 * x4)/SQR ((x4 - x3) ^
    2 + (y4 - y3) ^ 2)
    r (4) = ABS ((x1 - x4) * y - (y1 - y4) * x + x4 * y1 - y4 * x1)/SQR ((x1 - x4) ^
    2 + (y1 - y4) ^ 2)
    r (5) = ABS ((x3 - x1) * y - (y3 - y1) * x + x1 * y3 - y1 * x3)/SQR ((x3 - x1) ^
    2 + (y3 - y1) ^ 2)
    r (6) = ABS ((x4 - x2) * y - (y4 - y2) * x + x2 * y4 - y2 * x4)/SQR ((x4 - x2) ^
    2 + (y4 - y2) ^ 2)
    min = r (1)
    FOR i = 2 TO 6
    IF r (i) = 0 THEN GOTO 5
    IF r (i)
    5 NEXT i
    PRINT "Точка перетину діагоналей O ("; x; ","; y; ")"
    PRINT "Радіус кола лежить в 4-х кутники ABCD, R =", min
    PRINT # 2, "Точка перетину діагоналей O ("; x; ","; y; ")"
    PRINT # 2, "Радіус кола лежить в 4-х кутники ABCD, R =", min

    Дані з диска а:

    1,1 2,1 1,2 2,2

    Результати:

    Точка перетину діагоналей O (1.5, 1.5)
    Радіус кола лежить в 4-х кутники ABCD, R =. 5

    3. Елементи двовимірного масиву Q (m, n) (m> n) визначаються за однією з формул:
    - Якщо номер рядка i <номера стовпця j, то елемент Q (i, j) обчислюється за формулою>
    - Якщо i
    - Якщо i = j, то Q (i, j) = Log (10 * Rnd)/Sin (Rnd),
    - Якщо i> j, то Q (i, j) = Rnd * Q (j, i).
    За отриманими таким чином даними знайти і видати на друк:
    - Рядок з найбільшим середнім значенням елементів,
    - Строку, в якій різниця поруч стоять елементів - найменша,
    - Елементи квадратної матриці (n, n), c максимальною сумою діагональних елементів.

    Текст програми:

    CLS
    2 INPUT "Кількість рядків стовпців"; m, n
    IF m> = n THEN 1
    PRINT "Число строк має бути більше числа стовпців": GOTO 2
    1 DIM q (m, m)
    FOR i = 1 TO m
    FOR j = 1 TO m
    IF i
    IF i = j THEN q (i, j) = LOG (10 * RND)/SIN (RND)
    IF i> j THEN q (i, j) = RND * q (j, i)
    NEXT j
    NEXT i

    FOR i = 1 TO m
    FOR j = 1 TO n
    PRINT USING "##.### "; q (i, j);
    NEXT j
    PRINT
    NEXT i

    DIM s (m)
    FOR i = 1 TO m
    f = 0
    FOR j = 1 TO n
    f = f + q (i, j)
    NEXT j: s (i) = f/n
    NEXT i

    PRINT
    PRINT "Рядок з найбільшим середнім значенням"
    max = s (1)
    FOR j = 1 TO n
    FOR i = 1 TO m
    IF s (i)> = max THEN max = s (i): ii = i
    NEXT i
    PRINT USING "##.####"; q (ii, j);
    NEXT j

    PRINT
    PRINT
    PRINT "Рядок в якій різниця що стоять поруч ел-тов найменша"
    min = ABS (q (1, 1) - q (1, 2))
    FOR i = 1 TO m
    FOR j = 2 TO n
    z = ABS (q (i, j - 1) - q (i, j))
    NEXT j
    IF z> = min THEN 33
    min = z: kk = i
    33 NEXT i
    FOR i = 1 TO n
    PRINT USING "##.#### "; q (kk, i);
    NEXT i

    PRINT
    s = 0
    FOR i = 1 TO n
    s = s + q (i, i)
    NEXT i

    k = 0
    FOR i = 1 TO n
    k = k + q (i + 1, i)
    NEXT i
    k (i) = k

    PRINT
    PRINT "Ел-ти квадратної матриці (n, n) з макс. Сумою діагональних ел-тов"
    max = s
    FOR i = 1 TO n
    FOR j = 1 TO n
    IF k (i)> = s THEN PRINT USING "##.####"; q (i + 1, j);
    IF k (i)
    NEXT j
    PRINT
    NEXT i

    Дані:

    Число рядків стовпців? 4,3

    Результати:

    Вихідна матриця
    3.842 -0.373 0.367
    -0.304 43.204 0.537
    0.353 0.468 -0.708
    0.201 -0.015 0.021

    Рядок з найбільшим середнім значенням
    -0.303743.2038 0.5367

    Рядок у якої різниця що стоять поруч ел-тов найменша
    0.2005 -0.0149 0.0212

    Ел-ти квадратної матриці (n, n) з макс. сумою діагональних ел-тов
    3.8424 -0.3729 0.3669
    -0.3037 43.2038 0.5367
    0.3530 0.4677 -0.7079

    4. Скласти таблицю значень певного інтеграла
    b
    ? (x * tg (x)/(1 + x2)) * dx при зміні верхньої межі в інтервалі [t1; t2]
    a
    c кроком s.

    Інтегрувати методом трапецій із заданою точністю. На друк видати змінний межа, результат. Друк організувати оператором Print Using.

    Текст програми:

    CLS
    OPEN "a: z4.txt" FOR OUTPUT AS # 1
    DEF fna (x) = (x * TAN (x))/(1 + x ^ 2)
    INPUT "Нижня межа інтегралу"; a
    INPUT "Введіть зміна верхньої межі інтегралу, b"; t1, t2
    INPUT "Введіть крок"; s
    INPUT "Точність"; t
    FOR b = t1 TO t2 STEP s
    PRINT "Верхня межа"; a; "Точність"; t
    PRINT # 1, "Верхня межа"; a; "Точність"; t
    GOSUB INT2
    PRINT USING "b =####.##### INTEGR =####.#####"; b; IN1
    PRINT # 1, USING "b =####.##### INTEGR =####.#####"; b; IN1
    NEXT b
    END

    INT1:
    dx = (b - a)/(n - 1)
    IN1 = (fna (a) + fna (b))/2
    x = a
    5 x = x + dx
    IN1 = IN1 + fna (a + dx)
    IF x
    IN1 = IN1 * dx
    /> RETURN
    INT2:
    n = 100
    45 GOSUB INT1: R = IN1
    n = n + 20: GOSUB INT1
    IF ABS (R - IN1)> t THEN 45
    /> RETURN
    Дані:

    Нижня межа інтегралу? 2
    Введіть зміна верхньої межі інтегралу, b? 3,5
    Введіть крок? .9
    Точність? .001

    Результати:

    Верхня межа 2 Точность.001
    b = 3.00000 INTEGR = -0.86889
    Верхня межа 2 Точность.001
    b = 3.90000 INTEGR = -1.64549
    Верхня межа 2 Точность.001
    b = 4.80000 INTEGR = -2.32331



         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status