Ir ao conteúdo
  • Cadastre-se

Programa em C


gilberto48
Ir à solução Resolvido por dontpanic,

Posts recomendados

Olá, tenho um trabalho para fazer e não sei nem pode onde começa. Alguém pode me ajudar?

 

Escreva um programa em linguagem C, denominado TapeteAlpha, que receba como
entrada o número (inteiro) de caracteres a ser impresso no formato de moldura. A moldura
de caracteres deve ter a forma do exemplo abaixo.
Exemplo:
>Numero de caracteres: 3
>Saída:
 AAAAAA
 ABBBBA
 ABCCBA
 ABCCBA
 ABBBBA
 AAAAAA
 
>Numero de caracteres: 4
>Saída
AAAAAAAA
ABBBBBBA
ABCCCCBA
ABCDDCBA
ABCDDCBA
ABCCCCBA
ABBBBBBA
AAAAAAAA
 

Obrigado

Link para o comentário
Compartilhar em outros sites

Cria uma matriz (x,y)

Cria um char C, com valor 'A'

 

De (0,0) até (x,y) você imprime C na tua matriz.

Ex:

AAAAAA

AAAAAA

AAAAAA

AAAAAA

AAAAAA

AAAAAA

 

De (1,1) até (x-1,y-1) você imprime C+1 na tua matriz.

Ex:

AAAAAA

ABBBBA

ABBBBA

ABBBBA

ABBBBA

AAAAAA

 

De (2,2) até (x-2,y-2) você imprime C+2 na tua matriz

Ex:

AAAAAA

ABBBBA

ABCCBA

ABCCBA

ABBBBA

AAAAAA

 

Repete o laço de acordo com o número de caracteres que o usuário pedir.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

#include <stdio.h>

#include <stdlib.h>

 

void main ()

{

char Mat[25][25];

char aux= 'A';

int i,j,k,t;

 

printf("Digite a numero de caracteres:\n");

scanf("%d",&k);

for(t=0;t<k;t++)

{

for(i=0;i<k;i++)

{

for(j=0;j<k;j++)

{

Mat[j] = aux;

}

 

}

aux ++;

i ++;

j = i;

k--;

}

for(i=0;i<k;i++)

{

printf("\n");

for(j=0;j<k;j++)

{

printf("%c",Mat[j]);

}

 

}

printf("\n");

system("pause");

}

 

 

 

não tá dando certo, veja se você chama o meu erro. Obrigado

Link para o comentário
Compartilhar em outros sites

  • Solução

Caramba, eu tinha digitado um monte de coisa mas quando eu enviei perdi tudo... peraí que vou digitar de novo...

for(t=0;t<k;t++){        for(i=0;i<k;i++)                for(j=0;j<k;j++)                        Mat[i][j] = aux;         aux++;        i++;        j = i;        k--;}
Eu disse antes que sua lógica tava correta, mas no código acima depois do "aux++" quando você altera os valores de i e j, eles acabam voltando pra zero novamente quando o primeiro FOR recomeça.

Além disso, não é uma boa ideia mexer com o valor de k, pois o primeiro FOR depende dele.

A solução pra isso seria deixar o i e j em paz, e usar outra variável pra mexer com o valor inicial deles em cada iteração do primeiro FOR:

int x = 0;int y = 0;for (t=0; t<k; t++){        for (i=0 + x; i<k - x; i++)                for (j=0 + y; j<k - y; j++)                        Mat[i][j] = aux;         aux++;        x++;        y++;}
Agora toda vez que o primeiro FOR recomeçar, x e y vão ter um valor diferente, de modo que o i e o j vão ser iguais a 0+0, 0+1, 0+2, etc. E vão ser comparados com k-0, k-1, k-2, etc.

Note que os valores de x e y começam em zero, e aumentam em 1 a cada iteração do primeiro FOR. Mas existe uma outra variável que também está fazendo isso, que é o próprio t.

Então em vez de usar x e y, você pode usar apenas o t.

for (t=0; t<k; t++){        for (i=0 +t; i<k -t; i++)                for (j=0 +t; j<k -t; j++)                        Mat[i][j] = aux + t; }
É isso.
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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

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

×
×
  • Criar novo...