1
Hello. In a college project to automate the process of end-to-end encryption, I encountered some problems when dealing with matrices.
NOTE: Sorry for code formatting errors. I still haven’t got the hang of it.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <math.h>
int main()
{
//Variaveis
long int tamanhoM1=0, //Variavel de controle do tamanho da 'matriz1'
linha=0, //Variavel para percorrer a 'matriz1'
coluna=0, //Variavel para percorrer a 'matriz1'
x=0, //Variavel para pecorrer o vetor 'fraseOriginal'
matrizCodificada[tamanhoM1][tamanhoM1]; //Onde iremos codificar em ASCII nossa 'matriz1'
unsigned char fraseOriginal[x],
matriz1[tamanhoM1][tamanhoM1];
//Codigo
printf("Digite o tamanho da matriz COM LETRAS E ESPAÇOS\n");
printf("Na duvida,ponha um tamanho maior que será completado com espaços\n");
scanf("%i",&tamanhoM1);
printf("Digite a sua frase:\n");
while ( x != pow(tamanhoM1,2)) //O laço vai ler do teclado um caractere até que encontre o quadrado do 'tamanhoM1'
{ //Pois uma matriz 2x2 cabe 2^2=4 elementos
fraseOriginal[x]=getche(); //Guarda na posição x um caractere
x+=1;
}
x=0; //Zera o X para percorrer o vetor do começo
printf("\n");
printf("Sua matriz é:\n");
for (linha=0; linha < tamanhoM1; linha++) //For aninhados para transformar o vetor 'fraseOriginal' em uma matriz 'matriz1'
{
printf("\n"); //Quebra a linha
for(coluna=0; coluna < tamanhoM1; coluna++)
{
matriz1[linha][coluna]= fraseOriginal[x]; //A matriz recebe o valor da posição do vetor de forma que percorre o vetor inteiramente
x+=1;
printf("%3c",matriz1[linha][coluna]); //Impressao dentro do mesmo for pois quando se é feita fora do mesmo encontra-se erro
}
}
printf("\nSua matriz codificada e:\n");
for (linha=0; linha < tamanhoM1; linha++) //For para transformar a matriz de caractere para char(codigo ASCII)
{
printf("\n"); //Teste de impressão
for(coluna=0; coluna < tamanhoM1; coluna++)
{
matrizCodificada[linha][coluna]=matriz1[linha][coluna];
printf("%5i",matrizCodificada[linha][coluna]); //Impressão da matriz em codigo ASCII que encontra erro
}
}
return 0; //Fim
}
When running the program, I get the following result:
Digite o tamanho da matriz COM LETRAS E ESPACOS
Na duvida,ponha um tamanho maior que serß completado com espaþos
2
Digite a sua frase:
ab c
Sua matriz Ú:
a b
c
Sua matriz codificada e:
32 0
32 0
The result found in the final matrix is wrong, because the expected is:
97 98
32 99
What could be wrong? I’m mistakenly manipulating the matrix?
Grateful from now on.
A tip: Create your code beforehand and to put it in the OS question editor simply select all the text and apply a tab to it before copying it (in most current editors Ctrl+A followed by Tab). When you paste the code into your question it will already be identified as a code snippet and will have the same original formatting.
– Bruno Bermann