Автор: Пользователь скрыл имя, 23 Декабря 2012 в 18:16, курсовая работа
Задача 22: Создать и вывести на экран новый массив, состоящий из элементов входного массива, в котором поменять местами предпоследний положительный элемент с элементом, который имеет наибольшее значение, а также их разность вставить перед элементом с ближайшим к нему индексом.
Вступ………………………………...…………………………………………….4
Опис завдання…………………………...………………………………………..6
Постановка завдання………………..…………………………………...……….7
Алгоритм розв’язку задачі…………………….…….………………………….11
Тестування програми…………………………….……………………….…….13
Програма на мові Сі з реалізації розробленого алгоритму розв’язку задачі .......15
Результати дослідження……..………………………………....……………….17
Оцінка результатів виконання програми……………………………………...27
Синтаксичні елементи мови Сi, які використані в програмі ……………………28
Висновок…………………………………………………………………………29
Результати другого тестуючого масиву:
Index |
Znachennya elementy masuvy |
1 |
-20,00 |
2 |
-43,00 |
3 |
-66,00 |
4 |
-89,00 |
5 |
-112,00 |
6 |
-135,00 |
7 |
-158,00 |
8 |
-181,00 |
9 |
-204,00 |
10 |
-227,00 |
Результат програми: передостаннього позитивного значення немає.
Копії екранних вікон з тестуючою програмою подані у відповідному пункті.
Програма на мові Сі з реалізації розробленого алгоритму розв’язку задачі
#include <stdio.h>
#include <math.h>
int main ()
{
const int Rk=11;
float M[11], buf, Riz, M_nov[12], vids;
int k, ind, indp, imax, n, nabl, c;
printf ("%s %13s \n", "Index", "Znachennya elementy masuvy");
for(k=1; k<Rk; k++)
{
M[k]=13.4*cos(fabs(k))*sin((
printf("\n%7d %4.2f \n", k, M[k]);
}
printf ("%s %13s \n", "Index", "Znachennya elementy novoho masuvy");
for (n=1; n<Rk; n++)
{
M_nov[n]=M[n];
printf ("\n %7d %4.2f\n", n, M_nov[n]);/*Vuvodumo na ekran index novoho masuvy ta yogo znachennya*/
}
c=0;
for(n=1; n<Rk; n++)
{
if (M_nov[n]>0)
c++;
}
if (c<2)
printf ("\n Peredostann`oho pozutuvnoho net \n");
else
{
for(n=1; n<Rk; n++)
{
if (M_nov[n]>0)
indp=ind;
ind=n;
}
printf ("\n indp=%d \n", indp); /* index peredostannioho pozutuvnoho elementy*/
printf ("\n M_nov[indp]=%4.2f \n", M_nov[indp]); /* znachennya peredostannioho pozutuvnoho elementy */
for (n=imax=1; n<Rk; n++)
{
if (M_nov[n]>M_nov[imax])
imax=n;
}
printf ("\n max=%4.2f \n", M_nov[imax]); /* Vuvodumo na ekran maksumal`ne znachennya*/
printf ("\n imax=%d \n", imax); /*Vuvodumo na ekran index maksumal`noho znachennya*/
buf=M_nov[imax];
M_nov[imax]=M_nov[indp];
M_nov[indp]=buf;
printf ("%s %13s\n", "Index", "Znachennya elementy zminenoho novoho masuvy");
for (n=1; n<Rk; n++)
printf ("\n %7d %4.2f\n", n, M_nov[n]);/*Vuvodumo na ekran index zminenoho novoho masuvy ta yogo znachennya*/
Riz=M_nov[indp]-M_nov[imax];
printf ("\n Riz=%4.2f \n", Riz); /* riznuca peredostannioho pozutuvnoho ta maksumal`noho */
vids=Riz-1;
for (n=1; n<Rk; n++)
{
if(fabs(Riz-n)<vids)
{
nabl=n;
vids=Riz-n;
}
}
printf("\nnabl=%4d\n",nabl); /* Vuvodumo na ekran index naibluzhcui do riznuci*/
for (n=11; n>nabl; n--)
M_nov[n]=M_nov[n-1];
M_nov[nabl]=Riz;
printf ("%s %13s\n", "Index", "Znachennya elementy zminenoho novoho masuvy");
for (n=1; n<Rk+1; n++)
{
printf ("\n %7d %4.2f \n",n, M_nov[n]);
}
}
return 0;
}
Результати дослідження
1. Екранні вікна з налагодженою програмою
2. Екранне вікно з результатами виконання програми
3. Екранне вікно з тестуючою програмою
Тестування 1.
Тестування 2.
Оцінка результатів виконання програми
Для виконання програми було розроблено постановку задачі в якій детально розписано дії. Також створений алгоритм розв’язку задачі, за яким писався текст програми. У результатах виконаної програми присутній вихідний масив, новий масив, повідомлення про передостанній позитивний елемент, його індекс, найбільше значення та його індекс, різниця цих двох елементів та індекс найближчий до неї, а якщо немає передостаннього позитивного елемента, то на екран виводиться повідомлення про це.
Синтаксичні елементи мови Сi, які використані в програмі
Директива #include широко використовується для включення в програму так званих заголовних файлів, що містять прототипи бібліотечних функцій, і тому більшість програм на Сі починаються з цієї директиви.
math.h - заголовний файл стандартної бібліотеки мови програмування Сі, розроблений для виконання простих математичних операцій.
Функція main, з якої починається виконання Сі-програми
float – тип даних дійсний.
int – тип даних цілий.
if () – умовний оператор. Синтаксис if(умова) оператор 1; else оператор 2;
Оператор for() - це найбільш загальний спосіб організації циклу. Він має наступний формат:
for (вираз 1; вираз 2; вираз 3) тіло
Вираз 1 зазвичай використовується для встановлення початкового значення змінних, керуючих циклом. Вираз 2 - це вираз, що визначає умову, за якої тіло циклу буде виконуватися. Вираз 3 визначає зміна змінних, керуючих циклом після кожного виконання тіла циклу.
printf - узагальнена
назва ряду функцій або
/* */- коментарі в тексті програми.
= - присвоєння.
Висновок
Отже, я набула практики роботи над задачами складнішими, ніж типові. Вивчила необхідні розділи, адаптувала відомі засоби програмування для розв'язування конкретних задач з особливостями, використовувала різні методи та інструментальні засоби, застосувала у комплексних задачах знання з різних розділів курсу.