Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2014, 22:14   #1
mamaev
Новичок
Джуниор
 
Регистрация: 19.12.2011
Сообщений: 1
По умолчанию нарисовать схему алгоритмов программы

Доброго времени, у меня написана программа на С++ необходимо сделать отчёт по ней сегодня-завтра, в отчёте всё написал кроме схемы алгоритмов, так как вообще не понимаю как их делать. помогите пожалуйста кто может. Вот код программы и пример что мне необходимо (взято с другого варианта)

https://vk.com/photo27522330_319097593

//Зачётная программа
//Получить целочисленную квадратную матрицу порядка 7, элементами которой являются числа 1, 2, ..., 49, расположенные в ней по спирали.

#include "conio.h"
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include "locale.h"
#include "stdafx.h"

int FileOpen(int **a, bool pr);
void FileSave(int **a,int n);
void postr(int **a,int n);
void vivod(int **a,int n);
void menu(void);

int main(void)
{
setlocale(LC_ALL,"Russian");
int n,i,v;
bool men,f1=0,f2=0;
n=3;
int **a;
a = (int **)calloc(n,sizeof(int *));
for(i=0;i<n;i++)
{
a[i] = (int *)calloc(n,sizeof(int));
}
men = 1;
do
{
if (men)
{
menu();
men = 0;
}
printf("Выбранный пункт: ");
scanf("%d",&v);
switch(v)
{
case 1:
printf("Размер матрицы: ");
scanf("%d",&n);
a = (int **)calloc(n,sizeof(int *));
for(i=0;i<n;i++)
{
a[i] = (int *)calloc(n,sizeof(int));
}
men = 1;
f1 = 1;
f2 = 0;
break;
case 2:
if (f1)
{
postr(a,n);
f2 = 1;
}
else
{
printf("Не задан размер матрицы");
_getch();
}
men = 1;
break;
case 3:
if (f2)
{
vivod(a,n);
}
else
{
printf("Не введены данные и не произведены расчёты");
// _getch();
}
men = 1;
_getch();
break;
case 4:
n = FileOpen(a,1);
a = (int **)calloc(n,sizeof(int *));
for(i=0;i<n;i++)
{
a[i] = (int *)calloc(n,sizeof(int));
}
n = FileOpen(a,0);
men = 1;
f2 =1;
break;
case 5:
if(f2)
{
FileSave(a,n);
}
else
{
printf("Не произведены расчеты");
_getch();
}
men = 1;
break;
case 6:
break;
default:
printf("Неправильный пункт, введите снова\n");
}
}while(v!=6);
for(i=0;i<n;i++)
{
free(a[i]);
}
free(a);
//_getch();
return 0;
}
void menu(void)
{
system("cls");
printf("Меню\n");
printf("1 Ввести размер матрицы\n");
printf("2 Рассчитать матрицу\n");
printf("3 Вывести матрицу на экран\n");
printf("4 Считать матрицу из файла\n");
printf("5 Вывести матрицу в файл\n");
printf("6 Выход\n");
}
void postr(int **a,int n)
{
int x1,x2,y1,y2,i,j,k;
bool ver, gor;
x1=-1;
y1=0;
x2=n;
y2=n;
k=0;
ver = 0;
gor = 0;
i=0;
j=0;
while(k!=(n*n))
{
k++;
if ((ver==0)&&(gor==0))
{
a[i][j] = k;
i++;
if (i==x2)
{
i--;
x2--;
gor = 1;
}
}
if ((ver==0)&&(gor==1))
{
a[i][j] = k;
j++;
if (j==y2)
{
j--;
y2--;
gor = 0;
ver = 1;
}
}
if ((ver==1)&&(gor==0))
{
a[i][j] = k;
i--;
if (i==x1)
{
i++;
x1++;
gor = 1;
}
}
if ((ver==1)&&(gor==1))
{
a[i][j] = k;
j--;
if (j==y1)
{
j++;
y1++;
gor = 0;
ver = 0;
k--;
}
}
}
}
void vivod(int **a,int n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%3d",a[j][i]);
}
printf("\n");
}
}
void FileSave(int **a,int n)
{
FILE *fl;
char nam[50];
int i,j;
printf("Имя файла: ");
scanf("%s",&nam);
fl = fopen(nam,"w");
fprintf(fl,"%4d\n",n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
fprintf(fl,"%4d",a[j][i]);
}
fprintf(fl,"\n");
}
fclose(fl);
}
int FileOpen(int **a, bool pr)
{
FILE *fl;
int n;
int x1,x2,y1,y2,i,j,k,d;
if(pr)
{
printf("Имя файла: ");
scanf("%s",&name);
}
fl = fopen(name,"r");
fscanf(fl,"%d",&n);
if (pr)
{
fclose(fl);
return n;
}
bool ver, gor;
x1=-1;
y1=0;
x2=n;
y2=n;
k=0;
ver = 0;
gor = 0;
i=0;
j=0;
while(k!=(n*n))
{
k++;
fscanf(fl,"%d",&d);
if ((ver==0)&&(gor==0))
{
a[i][j] = d;
i++;
if (i==x2)
{
i--;
x2--;
gor = 1;
}
}
if ((ver==0)&&(gor==1))
{
a[i][j] = d;
j++;
if (j==y2)
{
j--;
y2--;
gor = 0;
ver = 1;
}
}
if ((ver==1)&&(gor==0))
{
a[i][j] = d;
i--;
if (i==x1)
{
i++;
x1++;
gor = 1;
}
}
if ((ver==1)&&(gor==1))
{
a[i][j] = d;
j--;
if (j==y1)
{
j++;
y1++;
gor = 0;
ver = 0;
k--;
}
}
}
fclose(fl);
return n;
}
mamaev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
!!!! Отблагодарю! Нужно НАрисовать блок схему(Алгоритм) по листингу программы НА Ассемблере. romanos Помощь студентам 1 25.05.2013 12:54
Объединить программы в подпрограммы(использование procedure) и нарисовать блок схему. Camelot_2012 Паскаль, Turbo Pascal, PascalABC.NET 7 16.04.2012 22:31
Нарисовать блок-схему программы prikolist Общие вопросы C/C++ 4 20.05.2009 19:46
Не могу нарисовать блок-схему маленькой программы prikolist Паскаль, Turbo Pascal, PascalABC.NET 4 25.11.2008 23:40
Помогите нарисовать блок-схему на ооочень маленький кусочек программы!!!!! metamfetamin Помощь студентам 1 24.11.2007 22:55