View Full Version : Figuras Geometricas Em C
Boas .
Gostaria de me tirassem uma duvida .
Como posso fazer em C , uma cruz suasticas ( Aquela Nazi ) .
Tenho que fazer 6 figuras, 4 delas ja estão feitas.
Deixei as mais dificeis para o fim , que são a Cruz Suastica e um diamante com um quadrado la dentro .
Alguem me poderia ajudar?
Aqui fica o codigo de o rectangulo ( Apenas a Função ) :
void rectangulo ()
{
int linha,coluna,cont1,cont2;
char letra;
system("cls");
printf ("Introduza a Linha a Coluna e o Caracter : \n");
scanf ("%d %d %c",&linha,&coluna,&letra);
for (cont1=0;cont1<linha;cont1++)
{
printf ("%c",letra);
if (cont1==0||cont1==(linha-1))
{
for (cont2=1;cont2<(coluna-1);cont2++)
{
printf ("%c",letra);
}
}
else
{
for (cont2=1;cont2<(coluna-1);cont2++)
{
printf (" ");
}
}
printf ("%c\n",letra);
}
}
e qual é o problema? se soubeste fazer isso o resto não deverá ser muito mais complicado (estou a falar de cabeça, nunca experimentei)
nesse rectangulo, pediste o comprimento, largura e o caracter usado
para a cruz basta pedires uma medida (porque se não me engano aquilo tem 8 rectas todas iguais
pode dar um bocado de trabalho fazer os ciclos para a desenhar, mas acho que não deve ser muito complicado.
o diamante com o quadrado, que medidas queres pedir? podias por exemplo, pedir apenas a largura do diamante, e fazer uma coisa tipo piramide. para um diamante de largura 5 ficava:
a
aaa
aaaaa
aaa
a
e depois bastava desenhar um quadrado á volta disto
agora não estou com muito tempo mas se ainda não tiveres conseguido daqui a pouco em tento fazer estes dois, até parece um exercicio engraçado
Pois , o problema é fazer os ciclos da cruz suastica.
Mas nessa nao vou pedir nem altura nem comprimento, apenas o caracter a uzar.
Por exemplo
Introduza o caracter da Cruz :
R
http://img113.imageshack.us/img113/2930/semttulows2.jpg
Tentei fazer hoje uma mira, que em principio ou fica a mira ou o diamante.
E epa, no final saiu-me tipo uma minhoca =\
Ve aqui .
Interface do programa :
http://img502.imageshack.us/img502/9069/66838524pb3.jpg
Ao executar a Mira , sai -me genero uma minhoca =\
http://img444.imageshack.us/img444/7052/85576096uw6.jpg
Tinha que ficar genero assim.
X
X
X
XXXXXXX
X
X
X
Fica aqui o codigo da Mira (apenas Função) :
void mira ()
{
int linha,coluna,cont1,cont2;
char letra;
system("cls");
printf ("Introduza o caracter : \n");
scanf ("%c",&letra);
for (coluna=0;coluna<5;coluna++)
{
printf (" ");
if ((coluna==2) || (linha==2))
{
printf ("%c\n",letra);
}
for (linha=0;linha<5;linha++)
{
printf (" ");
if ((coluna==2) || (linha==2))
{
printf ("%c\n",letra);
}
}
}
}
ainda não testei isso, mas parece-me que estás a tentar comparar a variavel linha sem sequer lhe dar um valor primeiro
O tamanho , nao vai ser pedido, vai ser igual a 5.
5 X para cima
5 X para o lado
Tenho que atribuir o valor a uma variavel ?
não, o que eu estava a dizer é que, na primeira passagem pelo primeiro for, ao fazer isto:
if ((coluna==2) || (linha==2))
a variavei linha ainda não tem nenhum valor. o visual studio queixa-se disso, não sei se o teu compilador também
mas para a mira, aqui tens, simples e eficaz:
void mira () {
int linha,coluna;
char letra;
system("cls");
printf ("Introduza o caracter : \n");
scanf ("%c",&letra);
printf("\n\n");
for (linha=0; linha<5; linha++) {
for (coluna=0; coluna<5; coluna++) {
if (linha==2 || coluna==2)
printf("%c", letra);
else
printf(" ");
}
printf("\n");
}
}
o que tu tinhas mal eram os ciclos. estavas a passar primeiro pelas colunas e depois pelas linhas. tem que ser ao contrário
Brigadao, agora ja puz isso entre matrizes , para ficar como nos critérios pedidos .
Estava a tentar voltar agora uma piramide, para fazer um diamante .
Ja meto aqui o codigo .
Aqui fica a piramide.
Nao percebo uma cena. ele o Executavel Abre.
Mas quando vou executar no compilador , simplesmente aparece Prima qualquer tecla para continuar.
Aqui fica o codigo .
main()
{
int valor,a,b,c,h;
a=9;
while (valor>=a)
{
h=a;
if (a==h)
{
if (a==0) printf (" ");
c=0;
b=h;
while (c<h)
{
printf ("%d",c);
b=b-1;
c=h-b;
}
if (c==h)
{
printf ("%d",h);
}
b=0;
while (b<h)
{
b=b+1;
c=h-b;
printf ("%d",c);
}
}
printf ("\n");
if (h==0) printf (" ");
if (h==1) printf (" ");
if (h==2) printf (" ");
if (h==3) printf (" ");
if (h==4) printf (" ");
if (h==5) printf (" ");
if (h==6) printf (" ");
if (h==7) printf (" ");
if (h==8) printf (" ");
a++;
}
printf ("\n");
printf (" Base\n");
system("PAUSE");
}
A idea era pegar nesse codigo que faz a piramide, e depois inverter, mas agora como fasso isso ?
Copio outravez as funcoes e meto -- ?
instalei agora o visual studio para ver se consigo corrigir esse programa da piramide e inverte lo, porque o usava era o Dev C e simplesmente nao me da erro nenhum.
Acabei agora mesmo de fazer o diamante.
Aqui fica o codigo (Apenas Função):
void diamante()
{
int linha,coluna;
char letra,x[5][5];
system("cls");
printf ("Introduza o caracter : \n");
scanf ("%c",&letra);
printf("\n\n");
for (linha=0; linha<5; linha++)
{
for (coluna=0; coluna<5; coluna++)
{
if ((linha==2 || coluna==2) || (linha==1 && coluna==3) || (linha==3 && coluna==1) || (linha==3 && coluna==3) || (linha==1 && coluna==1))
{
x[linha][coluna]=letra;
}
else
{
x[linha][coluna]=' ';
}
}
}
for (linha=0; linha<5; linha++)
{
for (coluna=0; coluna<5; coluna++)
{
printf ("%c",x[linha][coluna]);
}
printf("\n");
}
}
Peguei no codigo do diamante , para fazer o ultimo desenho , a Cruz Suastica ( NAzi ) .
So mudei uma cena, que foi chamar a matriz depois la em baixo , que foi pedido .
Agora é o seguinte, ja fiz a estructura e meti no If , o desenho do diamante para testar o programa.
MAs acontence, que o programa nao faz nada, simplesmente nao desenha.
Aqui fica o codigo
void cruz()
{
char x[7][7],letra;
int linha,coluna;
system("cls");
printf ("Introduza o caracter : \n");
scanf ("%c \n\n",&letra);
for (linha=0 ;linha<7 ;linha++)
{
for (coluna=0; coluna<7 ;coluna++)
{
if ((linha==2 && coluna==2) || (linha==1 && coluna==3) || (linha==3 && coluna==1) || (linha==3 && coluna==3) || (linha==1 && coluna==1))
{
x[linha][coluna]=letra;
}
else
{
x[linha][coluna]=' ';
}
}
}
for (linha=0 ;linha<7 ;linha++)
{
for (coluna=0 ;coluna<7 ;coluna++)
{
printf ("%c",x[linha][coluna]);
}
printf ("\n");
}
}
|
|