<#"650972.files/image002.gif"> <#"650972.files/image003.gif"> <#"650972.files/image004.gif"> <#"650972.files/image005.gif"> <#"650972.files/image006.gif"> <#"650972.files/image007.gif"> <#"650972.files/image008.jpg">
.2.3 Описание и схема
пользовательского интерфейса
. При
запуске данной программы должно появиться главное меню программы.
Она будет состоять из названия данной работы.
Ras4etno-grafi4eska9 rabota #2
zadanie A
=================================
2. Далее
мы должны ввести размерность массива, после ввода данных должен выходиться
сгенерированный массив, и должны выходить элементы массива уже с циклическим
сдвигом и должно выходит предложение о завершении программы или предложение
вычислить заново.
Razmernost' massiva A[N]N=
massiv
elementov massiva a[n] na k poziciy
celaya chast srednego
arifmeti4eskogo ne4etnyh 4isel' zanovo?
(esli da t=1,esli net t=0)
3. В
случае выбора значение 1, программа должна продолжать работу и переходить к
пункту 2. Если вы выбираете значение 0, программа завершит работу и перейдёт к
пункту 4.
4. В
случае завершения работы, программа выведет посередине
наименование студента, выполнившего данную
работу, и его группы. Чуть ниже, с правой стороны, программа выведет
наименование преподавателя проверившего работу.
=================================
****************************************
==Vipolnil Nechayev Nikita
Igorevi4==
=======Student gryppi BIS-12-2=======
****************************************
***************************************
==Proveril k.t.n. docent==
==_______________Ni A.G.==
==""__""____________2013==
***************************************
5. На
следующей строчке будет надпись
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>
|
2.3 Прикладная часть
2.3.1 Программное описание алгоритма
с индексами:
#include <iostream>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>main()
{k,N,S,r,i,t,f,j;a[N];b;("\t\t
Ras4etno-grafi4eska9 rabota #2 zadanie A");("\t\t
===========================================");("Razmernost' massiva
A[N]");:printf("\n Vvedite
N\nN=");("%d",&N);=0;=0;(i=0;i<N;i++)
{[i]=rand()%10-5;
}("\n Sgenerirovanniy
massiv\n");(i=0;i<N;i++)("%4d",a[i]);(i=0;i<N;i++)
{=a[i]%2;(b!=0)
{=r+1;=S+a[i];
}
}=abs(S/r);(i=0;i<k;i++)
{
f=a[N-1];
for(j=N-1;j>0;j--)
a[j]=a[j-1];
}
printf("\n \n sdvig elementov
massiva a[n] na %d poziciy \n",k);(i=0;i<N;i++)
printf("%4d",a[i]);("\n
k-celaya chast srednego arifmeti4eskogo ne4etnyh 4isel");("\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)("\t\t
===========================================");("
****************************************");(" ==Vipolnil Nechayev
Nikita Igorevi4==");
puts(" =======Student gryppi
BIS-12-2=======");
puts(" ****************************************");
puts("
***************************************");
puts(" ==Proveril k.t.n.
docent==");
puts(" ==_______________Ni
A.G.==");
puts("
==""__""____________2013==");("
***************************************");
printf(" Dl9 zaverweni9 nagmite
klaviwu <Enter> ");( ); /* Zadergka do nagati9 luboi klaviwi */0;
}
С
указателями:
#include <iostream>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>main()
{k,N,S,r,i,t,f,j,*pa,*pb,*p;a[N];b;("\t\t
Ras4etno-grafi4eska9 rabota #2 zadanie A");("\t\t
===========================================");("Razmernost' massiva
A[N]");:printf("\n Vvedite
N\nN=");("%d",&N);=0;=0;=&a[0];(i=0;i<N;i++)
{
*pa=rand()%10-5;
}=&a[0];("\n
Sgenerirovanniy massiv\n");(i=0;i<N;i++)("%4d",*pa++);=&a[0];(i=0;i<N;i++)
{=*pa%2;
++pa;(b!=0)
{=r+1;=S+*pa;
}
}=abs(S/r);(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);(i=0;i<N;i++)
pb=&a[0];("%4d",*pb++);("\n
k-celaya chast srednego arifmeti4eskogo ne4etnyh 4isel");("\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)("\t\t
===========================================");("
****************************************");(" ==Vipolnil Nechayev
Nikita Igorevi4==");
puts(" =======Student gryppi
BIS-12-2=======");
puts("
****************************************");
puts("
***************************************");
puts(" ==Proveril k.t.n.
docent==");
puts(" ==_______________Ni
A.G.==");
puts("
==""__""____________2013==");("
***************************************");
printf(" Dl9 zaverweni9 nagmite
klaviwu <Enter> ");( ); /* Zadergka do nagati9 luboi klaviwi */
return 0;
2.3.2 Результат выполнения
программы:
.
. Задание Б
Составить блок схему и программу обработки
матрицы. Элементы матрицы заполнить, используя функцию генератора случайных
чисел. Программу написать двумя способами: 1) осуществляя доступ к элементам
массива с помощью индексов; 2) осуществляя доступ к элементам массива с помощью
указателей.
.1 Содержательная постановка
задачи
Дана целочисленная квадратная матрица.
Определить:
) Сумму элементов в тех строках, которые
не содержат
отрицательных элементов.
) Минимум среди сумм элементов
диагоналей, параллельных главной диагонали матрицы.
3.2 Проектная часть
.2.1 Словесное описание алгоритма
1. Начало
алгоритма.
2. Задать
размерность матрицы.
3. Заполнить
массив a[n][m]
случайными числами.
4. Вывести
элементы массива a[n][m].
Внутри цикла по i:
5.1. Обнулить
сумму sum=0.
5.2. Организовать
цикл с заданными параметрами от j=1;
n; 1.
Внутри цикла по j:
5.2.1. Проверить:
если a[i][j]>=0,
то суммировать элементы строки, иначе перейти к следующему шагу цикла.
5.3. По
окончании цикла проверить: если j=n,
то вывести сумму элементов в тех строках, которые не содержат отрицательных
элементов.
5.4. Перейти
к следующему шагу цикла по i.
6. Минимум
сумм диагоналей находим: min=a[0][n-1].
7. Организовать
цикл с заданными параметрами от i=1;
m; 1.
Внутри цикла по i:
7.1. Сумма
элементов диагоналей, параллельных главной диагонали матрицы с левой стороны
равно сумме элементов диагоналей, параллельных главной диагонали матрицы с
правой стороны и равно 0, т.е. t1=t2=0.
7.2. Организовать
цикл с заданными параметрами от j=0;
n; 1.
Внутри цикла по j:
7.2.1. Суммировать
элементы диагоналей, параллельных главной диагонали матрицы с левой стороны.
7.2.2. Суммировать
элементы диагоналей, параллельных главной диагонали матрицы с правой стороны.
7.3. По
окончании цикла по j проверить:
если t1<min,
то min=t1,
а если t2<min,
то min=t2.
7.3.1. Перейти
к следующему шагу цикла по i.
8. Вывести
минимум среди сумм элементов диагоналей, параллельных главной диагонали
матрицы.
9. Конец
алгоритма.
3.2.2
3.2.2 Блок - схема:
.2.3
.2.3 Описание и схема
пользовательского интерфейса
1. При
запуске данной программы появится главное меню программы.
Она будут состоять из названия данной работы.
Ras4etno-grafi4eska9 rabota #2
zadanie B
2. Далее
будет выходить сгенерированная матрица, выходят суммы элементов разных строк
матрицы, которые не содержат отрицательных элементов, будет выходить минимум
среди сумм элементов диагоналей, параллельных главной диагонали матрицы, и
будет выходить предложение о завершении программы или предложение вычислить
заново.
Sgenerirovanna9 matrica
Rezul'tat pervoy 4asti
zadani9elementov stroki
Rezul'tat vtoroy 4asti zadani9Summ
Vichislit' zanovo?
(esli da t=1,esli net t=0)
3. В
случае выбора значение 1, программа продолжит работу и перейдёт к пункту 2.
Если вы выберете значение 0, программа завершит работу и перейдёт к пункту 4.
4. В
случае завершения работы, программа выведет с левой стороны наименование группы
и студента, выполнившего данную работу. С правой стороны программа выведет
наименование преподавателя, проверившего работу.
========================================
****************************************
==Vipolnil Nechayev Nikita
Igorevi4==
=======Student gryppi
BIS-12-2=======
****************************************
***************************************
==Proveril k.t.n. docent==
==_______________Ni A.G.==
==""__""____________2013==
***************************************
5. На
следующей строчке будет надпись
Dl9 zaverweni9 nagmite klaviwu
<Enter>
Ras4etno-grafi4eska9 rabota #2 zadanie B
================================= Sgenerirovanna9 matrica Rezul'tat
pervoy 4asti zadani9 Summa elementov stroki Rezul'tat
vtoroy 4asti zadani9 Minimum Summ 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>
|
3.3 Прикладная часть
3.3.1 Программное описание алгоритма
с индексами
#include <iostream>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define m 8
#define n 8main()
{i,j,t1,t2,sum,min,t;a[m][n];("\t\t
Ras4etno-grafi4eska9 rabota #2 zadanie B");("\t\t
===========================================");:for(i=0; i<m; i++)(j=0;
j<n; j++)[i][j]=rand()%10-1;("\n Sgenerirovanna9 matrica\n");(i=0;
i<m; i++)
{(j=0; j<n;
j++)("%4d",a[i][j]);("\n");
}("\n \t\t\t Rezul'tat pervoy
4asti zadani9");("\n\n");(i=0; i<m; i++)
{=0;(j=0; j<n; j++)
{(a[i][j]>=0)+=a[i][j];;
}(j==n)("Summa elementov stroki
#%d=%d\n",i+1,sum);
}("\n \t\t\t Rezul'tat vtoroy
4asti zadani9");=a[0][n-1];(i=1; i<m; i++)
{=t2=0;(j=0; j<n-i; j++)
{+=a[i+j][j];+=a[j][i+j];
}(t1<min)
min=t1;(t2<min)
min=t2;
}("\n Minimum Summ=
%d",min);("\n Vichislit' zanovo?\n (esli da t=1,esli net
t=0)\nt=");
if (t>0)
{printf("");goto
m1;}
if (t<1)("\t\t
===========================================");("
****************************************");(" ==Vipolnil Nechayev
Nikita Igorevi4==");
puts(" =======Student gryppi
BIS-12-2=======");
puts("
****************************************");
puts("
***************************************");
puts(" ==Proveril k.t.n.
docent==");
puts(" ==_______________Ni
A.G.==");
puts("
==""__""____________2013==");("
***************************************");
printf(" Dl9 zaverweni9 nagmite
klaviwu <Enter> ");( ); /* Zadergka do nagati9 luboi klaviwi */0;
}
С
указателями
#include <iostream>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define m 8
#define n 8main()
{i,j,t1,t2,sum,min,t;a[m][n];*mat;("\t\t
Ras4etno-grafi4eska9 rabota #2 zadanie B");("\t\t
===========================================");=&a[0][0];:for(i=0;
i<m; i++)(j=0; j<n; j++)
{
*mat=rand()%10-1;++;
}=n*m;("\n Sgenerirovanna9
matrica\n");(i=0; i<m; i++)
{(j=0; j<n; j++)
{("%4d",*mat);++;
}("\n");
}("\n \t\t\t Rezul'tat pervoy
4asti zadani9");("\n\n");=&a[0][0];(i=0; i<m; i++)
{=0;(j=0; j<n; j++)
{(*mat>=0)+=*mat;;
}(j==n)("Summa elementov stroki
#%d=%d\n",i+1,sum);
}("\n \t\t\t Rezul'tat vtoroy
4asti zadani9");=a[0][n-1];(i=1; i<m; i++)
{=t2=0;(j=0; j<n-i; j++)
{+=*(mat+i*m+j);+=*(mat+j*m+i);
}(t1<min)
min=t1;(t2<min)
min=t2;
}("\n Minimum Summ=
%d",min);("\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)("\t\t
===========================================");("
****************************************");(" ==Vipolnil Nechayev
Nikita Igorevi4==");
puts(" =======Student gryppi
BIS-12-2=======");
puts("
****************************************");
puts("
***************************************");
puts(" ==Proveril k.t.n.
docent==");
puts(" ==_______________Ni
A.G.==");
puts("
==""__""____________2013==");("
***************************************");
printf(" Dl9 zaverweni9 nagmite
klaviwu <Enter> ");( ); /* Zadergka do nagati9 luboi klaviwi */
return 0;
}
3.3.2
3.3.2 Результат выполнения программы
Заключение
массив матрица алгоритм индекс
В данной расчетно-графической работе были
представлены примеры алгоритмов обработки сложных структур данных на языке Си
(одномерные и двумерные массивы). Также были представлены блок-схемы, словесное
и графическое описание. Как мы видим, для языка Си характерны лаконичность,
стандартный набор конструкций управления потоком выполнения и обширный набор
операций. Это и делает его столь востребованным языком в наши дни.
Приложение А
Использованные библиотеки
<iostream> - iostream - заголовочный файл
с классами, функциями и переменными для организации ввода-вывода в языке
программирования C++ (в данном случае мы подключаем также и цвет system(“color
1a”); через эту библиотеку).
<conio.h> - (от англ. console input-output
- консольный ввод-вывод) - заголовочный файл, используемый для создания
текстового интерфейса пользователя (использующая при вводе-выводе и
представлении информации исключительно набор буквенно-цифровых символов).
<math.h> - заголовочный файл стандартной
библиотеки языка программирования С, разработанный для выполнения простых
математических операций.
<stdlib.h> - заголовочный файл стандартной
библиотеки языка Си, который содержит в себе функции, занимающиеся выделением
памяти, контроль процесса выполнения программы, преобразования типов и другие.
Заголовок вполне совместим с C++ и известен в нём как cstdlib. Название
«stdlib» расшифровывается как «standard library» (стандартная библиотека). В
данном случае подключает rand.
<time.h>
- заголовочный файл стандартной библиотеки языка программирования СИ,
содержащий типы и функции для работы с датой и временем. В данном случае этот
оператор служит для того, чтобы массив каждый раз генерировался по-разному.
Приложение Б
Использованные программы
AFCE -
составление блок-схем.
Microsoft
Visual Studio,
Dev C++
- среды разработки данных программ.
Список использованной литературы
1. Стефан Р. Дэвис «C++».
. С.В. Симонович
«Информатика: Базовый курс». - СПб.: Питер, 2003.
. http://ru.wikipedia.org/wiki/Си_(язык_программирования)
. http://lord-n.narod.ru/download/books/walla/programming/Spr_po_C/
6. Керниган
Б.
<http://ru.wikipedia.org/wiki/%D0%9A%D0%B5%D1%80%D0%BD%D0%B8%D0%B3%D0%B0%D0%BD,_%D0%91%D1%80%D0%B0%D0%B9%D0%B0%D0%BD>,
Ритчи Д.
<http://ru.wikipedia.org/wiki/%D0%A0%D0%B8%D1%82%D1%87%D0%B8,_%D0%94%D0%B5%D0%BD%D0%BD%D0%B8%D1%81>
Язык программирования Си.
-
2-е изд.
-
М.: Вильямс
<http://ru.wikipedia.org/w/index.php?title=%D0%92%D0%B8%D0%BB%D1%8C%D1%8F%D0%BC%D1%81_%28%D0%B8%D0%B7%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE%29&action=edit&redlink=1>,
2007.
-
С.
304.
Похожие работы на - Графическая и программная реализация алгоритмов обработки сложных структур данных
|