Графическая и программная реализация алгоритмов обработки сложных структур данных

Автор: Пользователь скрыл имя, 29 Сентября 2013 в 16:12, контрольная работа

Описание работы

С тех пор он был перенесён на многие другие операционные системы и стал одним из самых используемых языков программирования. Си ценят за его эффективность. Он является самым популярным языком для создания системного программного обеспечения. Его также часто используют для создания прикладных программ. Несмотря на то, что Си не разрабатывался для новичков, он активно используется для обучения программированию. В дальнейшем синтаксис языка Си стал основой для многих других языков.

Содержание

Введение………...……………………………………………………..………......3
Теоретическая часть………………………………………..…………..…………4
Задание А…………………………………………………………………………..8
Содержательная постановка задачи……………………………………………...8
Проектная часть……………………………………………….……………..…....8
Словестное описание алгоритма…………...………………………………..…...8
Блок – схема……….....…………………………………………………………....9
Описание и схема пользовательского интерфейса………………………….....10
Прикладная часть……………………………………………………………......11
Программное описание алгоритма……………..............………………………11
Результат выполнения программы………………………………………….….15
Задание Б…………………………………………………………………………15
Содержательная постановка задачи……………...……………………………..15
Проектная часть………………………………………………...………………..16
Словестное описание алгоритма…………...……………………..………..…...16
Блок – схема ……………………..……….....……………………………...........17
Описание и схема пользовательского интерфейса……...…………………..…18
Прикладная часть………….………………..…………………………..…….…19
Программное описание алгоритма……………...……………………….……..19
Результат выполнения программы………..…....….…………………….……..23
Заключение………………………………………………………….………...….24
Список использованной литературы………..……………………..………..…26

Приложение А………………....………………….………………………….......25
Приложение Б……………………………………………………………...….…25

Работа содержит 1 файл

АСДиП. РГР №2.docx

— 284.79 Кб (Скачать)

 

Составить блок схему и  программу обработки одномерного  массива. Элементы массива заполнить, используя функцию генератора случайных  чисел. Программу написать двумя  способами: 1) осуществляя доступ к  элементам массива с помощью  индексов; 2) осуществляя доступ к  элементам массива с помощью  указателей.

 

    1. Содержательная постановка задачи

 

Дан массив A[N]. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k – целая часть среднего арифметического значения нечётных элементов массива A[N].

 

    1. Проектная часть.

 

      1. Словестное описание алгоритма

 

  1. Начало алгоритма.
  2. Задать размерность массива, то есть константе N присвоить заданное

значение.

  1. Заполнить массив A[N] случайными числами.
  2. Вывести элементы массива A[N].
  3. Обнулить переменные S и r.
  4. Организовать цикл с заданными параметрами от i=1; N; 1.

Внутри цикла:

Проверить: если а[i]%2=0, то суммируем нечётные элементы массива,

т.е. S=S+а[i], и число нечётных элементов увеличить на 1, т.е. r=r+1, иначе перейти к следующему шагу цикла.

  1. Находим целую часть среднего арифметического значения нечётных элементов массива A[N], т.е. k: k=abs(S/r).
  2. Организовать цикл с заданными параметрами от i=1; k; 1.

Внутри цикла:

    1. Запомнить последний элемент f=a[N-1].
    2. Организовать цикл с заданными параметрами от j=N; 1; -1.

Внутри цикла: последующему элементу присвоить предыдущий, т.е.

a[j]=a[j-1].

    1. По окончании цикла по j первому элементу присвоить значение последнего, т.е. a[1]=a[N-1] и перейти к следующему циклу по i.
  1. Вывести элементы массива a[i].
  1. Конец алгоритма.

 

 

 

      1. Блок – схема

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

      1. Описание и схема пользовательского интерфейса

 

 

  1. При запуске данной программы должно появиться главное меню

программы.

Она будет состоять из названия данной работы.

Ras4etno-grafi4eska9 rabota #2 zadanie A

=================================

  1. Далее мы должны ввести размерность массива, после ввода данных

должен выходиться сгенерированный массив, и должны выходить элементы массива уже с циклическим сдвигом и должно выходит предложение о завершении программы или предложение вычислить заново.

Razmernost' massiva A[N]

 Vvedite N

N=

 

 Sgenerirovanniy massiv

 

 sdvig elementov massiva a[n] na k poziciy

 

 k-celaya chast srednego arifmeti4eskogo ne4etnyh 4isel

Vichislit' zanovo?

(esli da t=1,esli net t=0)

  1. В случае выбора значение 1, программа должна продолжать работу и

переходить к пункту 2. Если вы выбираете значение 0, программа завершит работу и перейдёт к пункту 4.       

  1. В случае завершения работы, программа выведет посередине

наименование студента, выполнившего данную работу, и его группы. Чуть ниже, с правой стороны, программа выведет наименование преподавателя проверившего работу.

=================================

****************************************

==Vipolnil Nechayev Nikita Igorevi4==

=======Student gryppi BIS-12-2=======

****************************************

***************************************

             ==Proveril k.t.n. docent==    

  ==_______________Ni A.G.== 

  ==""__""____________2013==

***************************************

  1. На следующей строчке будет надпись

Dl9 zaverweni9 nagmite klaviwu <Enter>

                              Ras4etno-grafi4eska9 rabota #2 zadanie A

=================================

Razmernost' massiva A[N]

 Vvedite N

N=

 

 Sgenerirovanniy massiv

 

 sdvig elementov massiva a[n] na k poziciy

 

k-celaya chast srednego arifmeti4eskogo ne4etnyh 4isel

Vichislit' zanovo?  

            (esli da t=1,esli net t=0)

=================================

****************************************

==Vipolnil Nechayev Nikita Igorevi4==

=======Student gryppi BIS-12-2=======

****************************************

                                                                             ***************************************

             ==Proveril k.t.n. docent==    

  ==_______________Ni A.G.== 

  ==""__""____________2013==

***************************************

Dl9 zaverweni9 nagmite klaviwu <Enter>

 


 

    1. Прикладная часть

 

      1. Программное описание алгоритма с индексами:

 

#include <iostream>

#include <math.h>

#include <conio.h>

#include <stdlib.h>

#include <time.h>

int main()

{

int k,N,S,r,i,t,f,j;

int a[N];

float b;

puts("\t\t Ras4etno-grafi4eska9 rabota #2 zadanie A");

puts("\t\t ===========================================");

printf("Razmernost' massiva A[N]");

m1:printf("\n Vvedite N\nN=");

scanf("%d",&N);

S=0;

r=0;

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

{

a[i]=rand()%10-5;

}

printf("\n Sgenerirovanniy massiv\n");

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

printf("%4d",a[i]);

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

{

b=a[i]%2;

if(b!=0)

{

r=r+1;

S=S+a[i];

}

}

k=abs(S/r);

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

     {

     f=a[N-1];

     for(j=N-1;j>0;j--)

     a[j]=a[j-1];

     a[0]=f;

     }

printf("\n \n sdvig elementov massiva a[n] na %d poziciy \n",k);

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

printf("%4d",a[i]);

puts("\n k-celaya chast srednego arifmeti4eskogo ne4etnyh 4isel");

printf("\n Vichislit' zanovo?\n    (esli da t=1,esli net t=0)\nt=");

    scanf ("%d",&t); 

    if (t>0)

    {printf("");goto m1;}

    if (t<1)

puts("\t\t ===========================================");

puts("                  ****************************************");

puts("                   ==Vipolnil Nechayev Nikita Igorevi4==");

puts("                   =======Student gryppi BIS-12-2=======");

puts("                  ****************************************");    

puts("                                        ***************************************");        

puts("                                               ==Proveril k.t.n. docent==");      

puts("                                               ==_______________Ni A.G.==");  

puts("                                               ==""__""____________2013==");

puts("                                        ***************************************"); 

printf("                   Dl9 zaverweni9 nagmite klaviwu <Enter>                  ");

getch( ); /* Zadergka do nagati9 luboi klaviwi */

return 0;

}

 

С указателями:

 

 

#include <iostream>

#include <math.h>

#include <conio.h>

#include <stdlib.h>

#include <time.h>

int main()

{

int k,N,S,r,i,t,f,j,*pa,*pb,*p;

int a[N];

float b;

puts("\t\t Ras4etno-grafi4eska9 rabota #2 zadanie A");

puts("\t\t ===========================================");

printf("Razmernost' massiva A[N]");

m1:printf("\n Vvedite N\nN=");

scanf("%d",&N);

S=0;

r=0;

pa=&a[0];

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

{

*pa=rand()%10-5;

}

pa=&a[0];

printf("\n Sgenerirovanniy massiv\n");

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

printf("%4d",*pa++);

pa=&a[0];

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

{

b=*pa%2;

++pa;

if(b!=0)

{

r=r+1;

S=S+*pa;

}

}

k=abs(S/r);

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

     {

     pb=&a[9];

     p=&a[0];

     f=*pb;

     for(j=0;j<N;j++)

     *pb=*(--pb);

     *p=f;

     p=&a[0];

     pb=&a[9];

     }

printf("\n \n sdvig elementov massiva a[n] na %d poziciy \n",k);

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

pb=&a[0];

printf("%4d",*pb++);

puts("\n k-celaya chast srednego arifmeti4eskogo ne4etnyh 4isel");

printf("\n Vichislit' zanovo?\n    (esli da t=1,esli net t=0)\nt=");

    scanf ("%d",&t); 

    if (t>0)

    {printf("");goto m1;}

    if (t<1)

puts("\t\t ===========================================");

puts("                  ****************************************");

puts("                   ==Vipolnil Nechayev Nikita Igorevi4==");

puts("                   =======Student gryppi BIS-12-2=======");

puts("                  ****************************************");    

puts("                                        ***************************************");        

puts("                                               ==Proveril k.t.n. docent==");      

puts("                                               ==_______________Ni A.G.==");  

puts("                                               ==""__""____________2013==");

puts("                                        ***************************************"); 

printf("                   Dl9 zaverweni9 nagmite klaviwu <Enter>                  ");

getch( ); /* Zadergka do nagati9 luboi klaviwi */

return 0;

 

 

 

 

 

 

      1. Результат выполнения программы:

 

 

 

  1. Задание Б

 

Составить блок схему и  программу обработки матрицы. Элементы матрицы заполнить, используя функцию  генератора случайных чисел. Программу  написать двумя способами: 1) осуществляя  доступ к элементам массива с  помощью индексов; 2) осуществляя  доступ к элементам массива с  помощью указателей.

 

    1. Содержательная постановка задачи

 

Дана целочисленная квадратная матрица. Определить:

  1. Сумму элементов в тех строках, которые не содержат

отрицательных элементов.

  1. Минимум среди сумм элементов диагоналей, параллельных главной

диагонали матрицы.

 

    1. Проектная часть

 

      1. Словестное описание алгоритма

 

  1. Начало алгоритма.
  2. Задать размерность матрицы.
  3. Заполнить массив a[n][m] случайными числами.
  4. Вывести элементы массива a[n][m].
  5. Организовать цикл с заданными параметрами от i=1; m; 1.

Внутри цикла по i:

    1. Обнулить сумму sum=0.
    2. Организовать цикл с заданными параметрами от j=1; n; 1.

Внутри цикла по j:

      1. Проверить: если a[i][j]>=0, то суммировать элементы строки, иначе перейти к следующему шагу цикла.
    1. По окончании цикла проверить: если j=n, то вывести сумму элементов в тех строках, которые не содержат отрицательных элементов.
    2. Перейти к следующему шагу цикла по i.
  1. Минимум сумм диагоналей находим: min=a[0][n-1].
  2. Организовать цикл с заданными параметрами от i=1; m; 1.

Внутри цикла по i:

    1. Сумма элементов диагоналей, параллельных главной диагонали матрицы с левой стороны равно сумме элементов диагоналей, параллельных главной диагонали матрицы с правой стороны и равно 0, т.е. t1=t2=0.
    2. Организовать цикл с заданными параметрами от j=0; n; 1.

Внутри цикла по j:

      1. Суммировать элементы диагоналей, параллельных главной диагонали матрицы с левой стороны.
      2. Суммировать элементы диагоналей, параллельных главной диагонали матрицы с правой стороны.
    1. По окончании цикла по j проверить: если t1<min, то min=t1, а если t2<min, то min=t2.
      1. Перейти к следующему шагу цикла по i.
  1. Вывести минимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.
  2. Конец алгоритма.
      1. Блок – схема:


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

      1. Описание и схема пользовательского интерфейса

 

  1. При запуске данной программы появится главное меню программы.

Она будут состоять из названия данной работы.

Ras4etno-grafi4eska9 rabota #2 zadanie B

  1. Далее будет выходить сгенерированная матрица, выходят суммы

элементов разных строк матрицы, которые не содержат отрицательных  элементов, будет выходить минимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы, и будет выходить предложение о завершении программы или предложение вычислить заново.

Информация о работе Графическая и программная реализация алгоритмов обработки сложных структур данных