Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rodrigofariat

Algortimo de Tranposição Colunar

Recommended Posts

Pessoal,

 

Tenho de fazer um algoritmo de transposição colunar em C++, o conceito desse algoritmo é

colocar uma frase dentro de uma matriz, a inserção é feita por linha, para gerar o codigo

criptografado o programa deve retornar cada coluna cifrando assim a frase.

 

- Defini as variáveis linha, coluna, matriz e frase ;

- Inicializei a matriz com espaços vazio ;

- Peguei o valor da frase e joguei na matriz ;

 

Tenho que deixar a coluna assim :

 

1 2 3 4 5

_ _ _ _ _

C A S A |

D A | V O

V O | C A

I U

 

Após isso estar feito, basta imprimir da coluna pelo indice.

 

Por enquanto ainda não tratei os espaços (o pipe representa espaço)

Quando imprimo a matriz todo o texto da frase fica em uma posição, o certo seria

te em cada posição somente a letra. Para isso tentei usar o substring, mas nao tive muito resultado.

 

O codigo esta logo abaixo:

 

#include <iostream>

using namespace std;
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>

int main()
{
 int numC = 5;
 int numL = 5;
 string matriz[numL][numC]; 
 
 string frase = "Casa da vovo caiu";
 
 //Incializa Matriz
 for (int i=0; i < numL; i++)
  {
	for (int j=0; j <numC; j++)
	 {
	  matriz[i][j]="";
	 }
  }
  
  //Prenche a matriz
  for (int i=0; i < numL; i++)
   {
	 for (int j=0; j < numC; j++)
	   {
		int length;
		matriz[i][j] = frase.substr(i, length-1);
   }	}

   for (int i=0; i < numL; i++)
	  {
		for (int j=0; j < numC; j++)
		 {
		  cout << matriz[i][j];
		  cout << "\n";
		 }
	  }   
	  
  getch();
	 
 return 0;
}

Se alguem puder me ajudar.

 

Att,

 

Rodrigo Faria

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acho melhor você começar o seu "projeto" levando em conta que nem todos os textos caberão numa matriz 5x5...

 

O número de colunas deve ser predefinido. Vamos considerar que sejam 5 colunas.

Já para as linhas, teremos sempre (texto.length() / numColunas) linhas.

 

Levando em conta que você sempre terá uma matriz 5x5, você não quer uma matriz de strings, você quer um matriz de chars!

char matriz[5][5];

você também não quer copiar uma substring na hora de adicionar. você só quer um caractére.

int p = 0;
//Prenche a matriz
  for (int i=0; i < numL; i++)
   {
	 for (int j=0; j < numC; j++)
	   {
		int length;
		matriz[i][j] = frase[p];
		p++;
   }	}

Se tiver interessado...

dei uma simplificada na parte que trata as matrizes de um software que escrevi sobre a cifra ADFGVX.

Código no codepad

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.