Системне програмування

Змінні головної функції. Універсальна формула для знаходження дня тижня по даті. Зміст вхідних файлів. Ініціалізація графічного драйверу. Знаходження середнього арифметичного елементів отриманого масиву. Набір тестів для налагодження програми.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 18.11.2011
Размер файла 28,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Міністерство освіти та науки України

Дніпропетровський національний університет

Радіофізичний факультет

Кафедра ЕОМ

Курсова робота

з курсу “Системне програмування”

Виконав студент гр. РІ-03-1

Котенко О.В.

Дніпропетровськ

2005

Зміст

1. ЗАВДАННЯ

1.1 УМОВА ЗАДАЧІ 1

1.2 ОПИС ЗМІННИХ

1.3 ОПИС АЛГОРИТМУ

1.4 НАБІР ТЕСТІВ ДЛЯ НАЛАГОДЖЕННЯ ПРОГРАМИ

2. ЗАВДАННЯ 2

2.1 УМОВА ЗАДАЧІ 2

2.2 ОПИС ЗМІННИХ

2.3 ОПИС АЛГОРИТМУ

2.4 НАБІР ТЕСТІВ ДЛЯ НАЛАГОДЖЕННЯ ПРОГРАМИ

3. ЗАВДАННЯ 3

3.1 УМОВА ЗАДАЧІ 3

3.2 ОПИС ЗМІННИХ

3.3 ОПИС АЛГОРИТМУ

3.4 НАБІР ТЕСТІВ ДЛЯ НАЛАГОДЖЕННЯ ПРОГРАМИ

4. ЗАВДАННЯ 4

4.1 УМОВА ЗАДАЧІ 4

4.2 ОПИС ЗМІННИХ

4.3 ОПИС АЛГОРИТМУ

ДОДАТОК 1

ДОДАТОК 2

ДОДАТОК 3

ДОДАТОК 4

ДОДАТОК 5

ДОДАТОК 5

ДОДАТОК 6

ДОДАТОК 7

ДОДАТОК 8

ДОДАТОК 9

1. Завдання 1

1.1 Умова задачі 1

Байти елементів масиву, в 7-х бітах котрих стоїть 1, зсунути вправо на один розряд. Визначити середнє арифметичне елементів отриманого масиву.

1.2 Опис змінних

Змінні головної функції main:

byte mas[21] - масив з чисел розміром 1 байт

int i,sum - індекс та сума

1.3 Опис алгоритму

Спочатку ініціалізуємо масив випадковими числами від 0 до 99. Далі накладаємо послідовно маску 64 на кожен елемент масиву, і якщо там 1, то зсуваємо його вправо. Далі сумуємо елементи отриманого масиву та ділимо суму на їх кількість і виводимо на екран.

1.4 Набір тестів для налагодження програми

77 94 44 83 21 35 33 95 96 93 56 61 89 30 51 35 34 57 66 52 27

after shift right:

154 188 44 166 21 35 33 190 192 186 56 61 178 30 51 35 34 57 132 52 27

Average arifmetic:91

22 15 47 36 40 30 1 42 40 51 50 61 71 12 58 59 8 42 64 54 66

after shift right:

22 15 47 36 40 30 1 42 40 51 50 61 142 12 58 59 8 42 128 54 132

Average arifmetic:50

2. Завдання 2

2.1 Умова задачі 2

Дані натуральні числа а, b, с, які означають число, місяць та рік. Визначити день тижня, на який припадає вказана дата.

2.2 Опис змінних

Змінні головної функції main:

FILE *in - файл зі вхідною інформацією

int year,month,day,weak - рік, місяць, день, день тижня

2.3 Опис алгоритму

Відкриваємо вхідний файл на читання та зчитуємо з нього день, місяць та рік.

Далі користуємося універсальною формулою для знаходження дня тижня по даті і виводимо результат на екран.

2.4 Набір тестів для налагодження програми

Вхідний файл infile:

26 05 2005

Результат:

Thursday

Вхідний файл infile:

19 01 1984

Результат:

Wednesday

Вхідний файл infile:

23 12 1983

Результат:

Thursday

3. Завдання 3

3.1 Умова задачі 3

Дано натуральне число п, символи s1,...,sn . Будемо розглядати слова, утворені символами, що входять у послідовність s1,...,sn , вважаючи при цьому, що кількість символів у кожному слові не перевершує 15.

в) З'ясувати, чи є два слова, кожне з яких виходить перекиданням іншого

3.2 Опис змінних

Змінні головної функції main:

FІLE *іn, *out - вхідний і вихідний файли

char s[200] - масив s

char c1,c2 - символи, з яких складаються слова

іnt і,j,k - лічильники

іnt count[200] - масив повторень символів масиву s

іnt flag - прапор

3.3 Опис алгоритму

Відкриваємо вхідний і вихідний файли. У масив s зчитуємо символи із вхідного файлу. Далі в циклі з параметром і перевіряємо кількість входжень символу s[і] у масиві, що залишився, і цю інформацію записуємо в масив count[і]. У циклі переглядаючи масив count[і] перевіряємо: чи існують 2 букви із двома входженнями в масив, тобто чи можна із цих 2ух букв побудувати 2 слова, що відповідають умові завдання, і якщо такі букви є, на екран і у файл виводимо їхню пряму комбінацію й зворотню. Закриваємо всі відкриті файли.

3.4 Набір тестів для налагодження програми

Зміст вхідного файлу:

Abfkgjmkjnfosbndiff

Зміст вихідного файлу:

nf and fn

4. Завдання 4

4.1 Умова задачі 4

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

4.2 Опис змінних

Змінні головної функції main:

int dy - зміщення по вертикалі

int dх - зміщення по горизонталі

int x, y - координати тексту по X та Y;

int grdriver - тип відеодрайвера;

int grmode - режим відеодрайвера;

int errorcode - код помилки

int flag - прапор

int left, top, right, bottom - координати прямокутника.

4.3 Опис алгоритму

Ініціалізуємо графічний драйвер. З клавіатури зчитуємо координати прямокутника. Ініціалізуємо змінні : dx=1,dy=1,x=(left+right)/3, y=(top+bottom)/2,flag=0. Доки не нажата клавіша робимо наступне:

- x=x+dx

- y=y+dy

перевіряємо чи виходить x,y за межі прямокутника і якщо так, тоді корегуємо dx та dy

- виводимо на екран крапку з координатами x, y

Додаток 1

Блок-схема алгоритму розв'язання задачі 1

Додаток 2

Блок-схема алгоритму розв'язання задачі 2

Додаток 3

функція програма графічний драйвер

Блок-схема алгоритму розв'язання задачі 3

Додаток 4

Блок-схема алгоритму розв'язання задачі 4

Додаток 5

Лістинг програми розв'язку задачі 1

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

typedef unsigned char byte;

int main()

{

byte mas[21];

int i,sum;

clrscr();

randomize();

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

{

mas[i]=rand()%100;

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

}

printf("\nafter shift right:\n");

sum=0;

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

{

if(mas[i]&64)mas[i]=mas[i]<<1;

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

sum+=mas[i];

}

printf("\nAverage arifmetic:%d",sum/21);

return 0;

}

Додаток 6

Лістинг програми розв'язку задачі 2

#include <stdio.h>

int main(int argc,char **argv)

{

FILE *in;

int year,month,day,weak;

if(argc!=2)

{

fprintf(stderr,"Bad arguments count");

return 1;

}

if ((in = fopen(argv[1], "rt"))

== NULL)

{

fprintf(stderr, "Cannot open input file.\n");

return 1;

}

fscanf(in,"%d%d%d",&day,&month,&year);

if((month==1) || (month==2))

{

month+=10;

year--;

}

else month-=2;

weak=( int(2.6*month-0.2)+day+year%100+(year%100)/4+(year-year%100)/400-2*(year-year%100)/100 )%7;

switch(weak)

{

case 0:printf("Sunday\n");break;

case 1:printf("Monday\n");break;

case 2:printf("Tuesday\n");break;

case 3:printf("Wednesday\n");break;

case 4:printf("Thursday\n");break;

case 5:printf("Friday\n");break;

case 6:printf("Saturday\n");break;

}

fclose(in);

return 0;

}

Додаток 7

Лістинг програми розв'язку задачі 3

#include<stdio.h>

#include<conio.h>

int main(int argc,char **argv)

{

FILE *in,*out;

char s[200],c1,c2;

int i,j,k,count[200],flag=0;

clrscr();

if ((in = fopen(argv[1], "rt")) == NULL)

{

fprintf(stderr, "Cannot open input file.\n");

return 1;

}

if ((out = fopen(argv[2], "wt"))== NULL)

{

fprintf(stderr, "Cannot open output file.\n");

return 1;

}

fgets(s,190,in);

for (i=0;s[i];i++);

for (j=0;j<i;j++) count[j]=0;

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

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

if (s[k]==s[j]) count[j]++;

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

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

if (((count[j]+count[k])>=2)&&(count[j])&&(count[k]))

{

if ((s[j]==s[k])&&((count[j]+count[k])>=4)) {flag=1;c1=s[j];c2=s[k];}

else if (s[j]!=s[k]) {flag=1;c1=s[j];c2=s[k];}

}

if (flag)

{

printf("%c%c and %c%c\n",c1,c2,c2,c1);

fprintf(out,"%c%c and %c%c\n",c1,c2,c2,c1);

} else

{

printf("no suсh words");

fprintf(out,"no suсh words");

}

getch();

fcloseall();}

Додаток 8

Лістинг програми розв'язку задачі 3 з використанням вказівника

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

int main(int argc,char **argv)

{

FILE *in,*out;

char *s,c1,c2;

int i,j,k,count[200],flag=0;

clrscr();

s=(char*)(calloc(300,1));

argv++;

if ((in = fopen(*argv++, "rt")) == NULL)

{

fprintf(stderr, "Cannot open input file.\n");

return 1;

}

if ((out = fopen(*argv, "wt"))== NULL)

{

fprintf(stderr, "Cannot open output file.\n");

return 1;

}

fgets(s,190,in);

for (i=0;*(s+i);i++);

for (j=0;j<i;j++) *(count+j)=0;

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

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

if ((*(s+k))==(*(s+j))) (*(count+j))++;

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

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

if (((*(count+j)+*(count+k))>=2)&&(*(count+j))&&(*(count+k)))

{

if ((*(s+j)==*(s+k))&&((*(count+j)+*(count+k))>=4)) {flag=1;c1=*(s+j);c2=*(s+k);}

else if (*(s+j)!=*(s+k)) {flag=1;c1=*(s+j);c2=*(s+k);}

}

if (flag)

{

printf("%c%c and %c%c\n",c1,c2,c2,c1);

fprintf(out,"%c%c and %c%c\n",c1,c2,c2,c1); } else {

printf("no suсh words");

fprintf(out,"no suсh words"); }

getch();

fcloseall();

}

Додаток 9

Лістинг програми розв'язку задачі 4

#include<stdio.h>

#include<dos.h>

#include<conio.h>

#include<graphics.h>

void main(void)

{

int gdriver = DETECT, gmode, errorcode;

int left, top, right, bottom;

int dx,dy,x,y,flag;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

printf("Enter left, top, right, bottom\n");

scanf("%d%d%d%d",&left, &top, &right, &bottom);

rectangle(left,top,right,bottom);

dx=1;dy=1;

x=(left+right)/3;

y=(top+bottom)/2;

flag=0;

while(!flag)

{

flag=kbhit();

putpixel(x,y,BLACK);

x+=dx;y+=dy;

if (x>right) dx=-1;

if (x<left) dx=1;

if (y>bottom) dy=-1;

if (y<top) dy=1;

putpixel(x,y,WHITE);

delay(10);

}

closegraph();

}

Размещено на Allbest.ru


Подобные документы

  • Порядок обробки матриць. Обчислювання, надрукування елементів матриці С, кожен елемент якої дорівнює сумі відповідних елементів матриць А і В. Знаходження середнього значення серед усіх елементів масиву С. Розрахунок значень функцій на заданому інтервалі.

    контрольная работа [215,4 K], добавлен 12.09.2010

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

    курсовая работа [70,3 K], добавлен 03.12.2009

  • Знаходження площі фігури методом трапеції. Обчислення площ криволінійних трапецій. Геометричний сенс чисельника. Розробка програми для демонстрації нижчезазначеної математичної функції. Використання базових бібліотек класів, написаних на мові С++.

    курсовая работа [1,0 M], добавлен 24.12.2013

  • Принципи технології створення програмних продуктів. Набір файлів, необхідних для створення програми в Delphi, варіанти роботи з ними. Програмування графічного інтерфейсу користувача. Зовнішній вигляд і лістинг програми, використані команди і компоненти.

    курсовая работа [550,5 K], добавлен 03.01.2014

  • Характеристика особливостей реалізації пошуку по масиву методами лінійним, бінарним, по "дереву Фібоначе" та екстраполярним на мові програмування Turbo Pascal. Використання алгоритма Рабіна-Карпа та Кнута-Морріса-Пратта для знаходження підрядка в рядку.

    курсовая работа [51,0 K], добавлен 16.09.2010

  • Значення функції, типи елементів масиву та їх кількість. Побудова інтерполяційного багаточлена Лагранжа. Апроксимування залежності багаточленом другого ступеня і обчислення коефіцієнту варіації. Обчислення рівняння за методом Рунге-Кути, лістинг програми.

    контрольная работа [222,4 K], добавлен 17.02.2011

  • Особливості cтвoрення графічного iнтерфейcу тестової програми, яка рoзрoблена в візуальному cередoвищi програмування Delphi. Пoбудoва iнфoрмацiйнo-математичнoї мoделi задачi. Реалiзацiя прoекту у вiзуальнoму cередoвищi. Iнcтрукцiя з екcплуатацiї прoграми.

    курсовая работа [4,8 M], добавлен 25.09.2010

  • Характеристики методів стискання інформації. Дворівневе кодування, алгоритм Лемпеля-Зіва. Блок-схема алгоритму кодування. Вибір мови, середовища програмування. Опис інтерфейсу, тестування програми. Бібліотеки, які використовуються при написанні програми.

    курсовая работа [728,9 K], добавлен 17.01.2014

  • Розгляд особливостей мови програмування С++: основні можливості, характеристика функцій. Аналіз файлів з вхідними даними. Використання похідних класів як ефективний засіб об’єктно-орієнтованого програмування. Способи роздруківки графічного вирішення.

    курсовая работа [510,9 K], добавлен 14.03.2013

  • Характеристика середовища програмування Microsoft Visual C++ та бібліотеки класів MFC. Знаходження коефіцієнтів при невідомих за допомогою методу найменших квадратів. Створення програми для вирішення задачі обраним методом, її алгоритм та інтерфейс.

    курсовая работа [434,8 K], добавлен 20.01.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.