Основы программирования для автоматизированного проектирования и решения творческих задач. Романенко А.В - 45 стр.

UptoLike

Составители: 

Для анализа приведено несколько вариантов решения задач. Восстановите по тексту каждой программы алгоритм ее
действия, оцените его оптимальность, предложите свои варианты.
Решение задачи 1 ("Магический квадрат")
#include<stdio.h>
#include<alloc.h>
#include<conio.h>
#include<string.h>
int **cub;
void error(int swt)
{
switch(swt)
{
case 1: printf("Can't find text file \"input.txt\".\n");
printf("Work of programm has finished. Press <ENTER> to halt");
getchar(); clrscr(); break;
case 2: printf("Can't create text file \"output.txt\".\n");
printf("Work of programm has finished. Press <ENTER> to halt");
getchar(); clrscr(); break;
}
}
int StrToInt(char *number)
{
int i, dlina, dec, num;
num=0;
dec=1;
dlina=strlen(number);
for(i=dlina;i>0;i--)
{
num=num+(number[i-1]-48)*dec;
dec=dec*10;
}
return num;
}
void nechet(int num)
{
int i, j, k, schet, a, b;
cub=(int**)malloc(num*sizeof(int*));
for(i=0;i<num;i++) cub[i]=(int*)malloc(num*sizeof(int));
for(i=0;i<num;i++) for(j=0;j<num;j++) cub[i][j]=0;
i=0;
j=(num+1)/2-1;
k=num*num;
schet=1;
while(schet!=k+1)
{
if(cub[i][j]==0)
{ cub[i][j]=schet; schet++; i--; j++;}
else {i+=2; j--;}
if(i<0) i=num+i;
if(j>num-1) j=0;
if(i>num-1) i=i-num; if(j<0) j=num+j;
}
}
void chet4(int num)
{
int i, j;
int k, m, s, b, t;