Ir ao conteúdo

Problema a resolver...


Carla.Elmira.Mag

Posts recomendados

Postado

Este problema está foi que o meu prof. de Programação Estruturada passou e eu não consigo resolver... vou tentar digitar um enunciado decente pra ele.

Ele quer um programa que seja capaz de codificar uma mensagem (Português ->Língua estranha) e outro para descodificá-la (Lingua estranha -> Português) seguindo esse modelo:

1º - Criar um vetor de string onde estarão as 26 letras do Alfabeto e outros N símbolos que as representação. (Tipo: ABCDEFG..TUWXYZ!@#$%¢£³¨¬&*...)

2º - O usuário entra com uma mensagem.

3º - Coloca-se essa mensagem numa matriz V por 2 (Vlinhas e 2 colunas, com o V variando dependendo da sua necessidade).

Ex: Hoje tem prova, ficaria assim:

H M

O P

J R

E O

T V

E A

Depois se substitui as letras pelos respectivos números das posições do vetor que as representam.

H M............9 14

O P ...........17 18

J R............11 20

E O ---->....6 17

T V ..........20 24

E A ............6 0

4º - Agora, se multiplica essa matriz obtida por esta:

2 1

1 1

5º - Depois surgirá uma nova matriz, com outros números diferentes. Agora, substituímos esses novos números da matriz pelos respectivos correspondetes lá no nosso vetor inicial (O vetor do passo 1) e colocamos os componentes da matriz em forma de um vetor novamente e surgirá uma "loucura": H&¨%!!@(#E. E fim desse programa! :conf:

6º - O outro programa é só para pegar essa "loucura", voltá-la para a forma de matriz e multiplicá-la pela inversa de 2 1 , de modo que, no fim, apareça a

1 1

mensagem original "Hoje tem prova". [:conf:

Enfim... é isso aí. Espero ter sido clara pra explicar o enunciado... se puderem me ajudar, agradecei bastante!

Postado
  miniman12 disse:
Eu não entendi qq se quer dizer na parte de multiplicar uma matriz por outra.

Quando eu multiplicar a matriz que eu formei ao substituir as letras por seus respectivos números (posição do vetor ^__^) correspondentes vou obter uma nova matriz, sim? Os números que formarão essa nova matriz serão diferentes e eu pegarei esses números e substituirei pelo o que tiver escrito na posição do vetor(o do primeiro passo). Assim eu terei uma mensagem maluca! :) Espero ter explicado direitinho...

Obrigada!

Postado

Consegui a primeira parte do programa, mas a segunda (a de transformar novamente em matriz numérica, multiplicar pela inversa e trocar os números pelas respectivas letras correspondades), não... Dêem uma olhada:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

main()

{ int x=0,y=0,i=0;

int mat2[50][2];

int mat3[50][2];

int mat5[50][2];

char alf[100] = {'1','2','3','4','5','6','7','8','9','0','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','x','y','z','w',' ','!','?','=','*',')','+','@','-','$','&','¨','¬','¹','²','³','£','¢','<','>',';',':','/','?','/','°','º','ª','[',']','{','}','§'/*,'û','ù','ÿ','Ö','Ü','É','æ','Æ','ô','ö','ò','î','ì','Ä','Å','é','â','ä','à','å','ç','ê','ë','è','ï'*/};

char msgr[100];

char mat1[50][2];

char mat4[50][2];

//Pegando informações do usuário

gets(msgr);

fflush(stdin);

//criando a matriz de caracteres

while(i<strlen(msgr))

{

y=0;

mat1[x][y] = msgr;

y++;

i++;

mat1[x][y] = msgr;

x++;

i++;

if (strlen(msgr) %2 == 0)

{if (x == strlen(msgr)/2){break;}}

if (strlen(msgr) %2 !=0)

{if ((x == (strlen(msgr)/2)+1))

{if(mat1[x][y] == ' '){break;}}}

}

//imprimindo a matriz de caracteres

for (int x=0;((x<=strlen(msgr)/2));x++)

{ printf("\n");

for (int y=0;y<=1;y++)

{

printf("%2c ",mat1[x][y]);

}

}

printf("\n");

//atribuindo o valor numérico a matriz de caracteres

for (int x=0;x<=strlen(msgr)/2;x++)

{

for (int y=0;y<=1;y++)

{

for (int k=0;k<100;k++)

{

if (alf[k]==mat1[x][y])

{

mat2[x][y] = k;

}

}

}

}

printf("\n");

//imprimindo a matiz numérica

for (int x=0;x<=strlen(msgr)/2;x++)

{ printf("\n");

for (int y=0;y<=1;y++)

{

printf("%d ",mat2[x][y]);

}

}

//criando a matriz codificada

for (int x=0;x<=strlen(msgr)/2;x++)

{

for (int y=0;y<=1;y++)

{

if (y==0)

{ mat3[x][y] = 2*mat2[x][y]+mat2[x][y+1]; }

if (y==1)

{ mat3[x][y] = mat2[x][y]+mat2[x][y-1]; }

}

}

printf("\n");

//imprimindo a matriz codificada

for (int x=0;x<=strlen(msgr)/2;x++)

{ printf("\n");

for (int y=0;y<=1;y++)

{

printf("%d ",mat3[x][y]);

}

}

//atribuindo valores numéricos a matriz codificada

for (int x=0;x<=strlen(msgr)/2;x++)

{

for (int y=0;y<=1;y++)

{

for (int k=0;k<100;k++)

{

if (mat3[x][y] == k)

{

mat4[x][y] = alf[k];

}

}

}

}

printf("\n");

//imprimindo a matriz codificada em caracteres

for (int x=0;x<=strlen(msgr)/2;x++)

{ printf("\n");

for (int y=0;y<=1;y++)

{

printf("%c ",mat4[x][y]);

}

}

for (int x=0;x<=strlen(msgr)/2;x++)

{

for (int y=0;y<=1;y++)

{

for (int k=0;k<100;k++)

{

if (mat4[x][y] == alf[k])

{

mat5[x][y] = k;

}

}

}

}

printf("\n\n\n");

system("pause");

}

^_^ Obrigada, desde já!

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Mostrar mais  

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

Mostrar mais  
×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!