Добавил:
inrad
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:СГВМ, контрольная работа задание 1 (вариант 3)
.c//Декодирование линейныйх двоичных кодов, задание 1 (вариант 3)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include<io.h>
#include <conio.h>
int sum (int,int);
void main(void)
{
int mass[20];
int **code;
int k,i,count,choice,m,n,j,num;
char line[50], *ch,letter[1];
printf("Please enter the line for coding:\n");
scanf("%s",&line);
k=strlen(line);
count=0;
for (i=1; i<=k; i++)
{
if (((k%i)==0))
{
if (count==21) {printf("Not enough array:\n");exit(1);}
mass[count]=i;
count++;
}
}
printf("The size of transmitted array should be. You see (m-1,n-1) variants:\n");
for (i=0; i<count; i++)
{
printf("%d. size %d X %d\n",(i+1),mass[i],k/mass[i]);
}
printf("Enter your choice:\n");
scanf("%d",&choice);
m=mass[choice-1]+1;
n=(k/mass[choice-1])+1;
code=(int **) calloc (n,sizeof(int *));
for (i=0; i<n; i++)
code[i]= (int *)calloc (m, sizeof (int));
count=0;
printf("m=%d n=%d\n",m,n);
for (i=0; i<(n-1); i++)
{
for (j=0; j<(m-1); j++)
{
letter[1]=line[count];
ch=&letter[1];
code[i][j]=atoi(ch);
count++;
}
}
for (i=0; i<(n-1); i++)
{
num=0;
for (j=0; j<m; j++)
{
num=sum(num,code[i][j]);
if (j==(m-1)) code[i][j]=num;
}
}
for (j=0; j<m; j++)
{
num=0;
for (i=0; i<n; i++)
{
num=sum(num,code[i][j]);
if (i==(n-1)) code[i][j]=num;
}
}
printf("massiv:");
for (i=0;i<n;i++)
{printf("\n ");
for (j=0;j<m;j++)
{
printf("%d ",code[i][j]);
}
}
printf("\nkodovoe slovo:\n");
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
printf("%d",code[i][j]);
}
}
free(code);
getch();
}
int sum (int a, int b)
{
int c;
c=a+b;
if (c==2) c=0;
return (c);
}