askazy Posted March 19, 2014 Report Share Posted March 19, 2014 (edited) Bom dia pessoal, queria ajuda para criar este algoritmo, a entrada é "n" o número de linhas que a figura deve ter e a saída deve ser assim ...*......*... Primeira Linha 2 asteriscos e 12 pontos ..***....***.. Segunda linha 6 asteriscos e 8 pontos .*****..*****. Terceira linha 10 asteriscos e 4 pontos ************** Quarta linha 14 asteriscos e 0 pontos Não sei se deu pra entender, mas a idéia é semelhante a criar duas arvores uma ao lado da outra, só que tem que colocar "." não pode ser espaço em branco. A última linha é composta só de asteriscos. Help. Edited March 19, 2014 by askazy Link to comment Share on other sites More sharing options...
askazy Posted March 19, 2014 Author Report Share Posted March 19, 2014 Só pode usar laços e condicionais, nada de funções, vetores e etc. Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted March 19, 2014 Report Share Posted March 19, 2014 (edited) tira ideias daqui : https://www.portugal-a-programar.pt/topic/48237-ampulheta-em-asteriscos/page__hl__triangulo e daqui : https://www.portugal-a-programar.pt/topic/57368-arvore-de-natal-c/page__hl__arvore Edited March 19, 2014 by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
askazy Posted March 19, 2014 Author Report Share Posted March 19, 2014 então para fazer uma árvore só eu até entendo, o problema é fazer as duas juntas. O certo é começar do meio para as laterais? Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted March 19, 2014 Report Share Posted March 19, 2014 só existe uma maneira, de cima para baixo e da esquerda para a direita ... regras da consola ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
askazy Posted March 19, 2014 Author Report Share Posted March 19, 2014 Eu fiz isso mas não sei como continuar. #include <stdio.h> int main (){ int linha,i,j; scanf ("%d",&linha); for (i=0;i<linha;i++){ for (j=0;j<linha-i-1;j++) printf ("."); for (j=linha-i-1;j<linha+i;j++) printf ("*"); printf ("\n"); } return 0; } Link to comment Share on other sites More sharing options...
askazy Posted March 19, 2014 Author Report Share Posted March 19, 2014 Tenho que fazer outros dois for's para completar cada linha? Link to comment Share on other sites More sharing options...
KiNgPiTo Posted March 19, 2014 Report Share Posted March 19, 2014 Sim, basta acrescentar os ciclos para a outra arvore, algo tipo: #include <stdio.h> int main (){ int linha,i,j; scanf ("%d",&linha); for (i=0;i<linha;i++){ for (j=0;j<linha-i-1;j++) printf ("."); for (j=linha-i-1;j<linha+i;j++) printf ("*"); for (j=0;j<(linha-i-1)*2;j++) printf ("."); for (j=linha-i-1;j<linha+i;j++) printf ("*"); for (j=0;j<linha-i-1;j++) printf ("."); printf ("\n"); } return 0; } Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted March 19, 2014 Report Share Posted March 19, 2014 se tens o código de imprimir uma linha, porque simplesmente não duplicas isso antes de mudar de linha ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
KiNgPiTo Posted March 19, 2014 Report Share Posted March 19, 2014 Sim, basta acrescentar os ciclos para a outra arvore, algo tipo: #include <stdio.h> int main (){ int linha,i,j; scanf ("%d",&linha); for (i=0;i<linha;i++){ for (j=0;j<linha-i-1;j++) printf ("."); for (j=linha-i-1;j<linha+i;j++) printf ("*"); for (j=0;j<(linha-i-1)*2;j++) printf ("."); for (j=linha-i-1;j<linha+i;j++) printf ("*"); for (j=0;j<linha-i-1;j++) printf ("."); printf ("\n"); } return 0; } Link to comment Share on other sites More sharing options...
askazy Posted March 19, 2014 Author Report Share Posted March 19, 2014 (edited) Não entendi o que você quis dizer, Happy. Nossa viajei demais, agora que vi como é simples, estava pensando em algo muito complexo. Esta é a solução mais simples que tem? for (j=0;j<(linha-i-1)*2;j++) printf ("."); por que *2? Edited March 19, 2014 by askazy Link to comment Share on other sites More sharing options...
KiNgPiTo Posted March 19, 2014 Report Share Posted March 19, 2014 Porque pelo que vi no teu exemplo, o n* de pontos do meio é o dobro... Link to comment Share on other sites More sharing options...
askazy Posted March 19, 2014 Author Report Share Posted March 19, 2014 Entendi, aproveitando o tópico, daqui a algumas semanas eu tenho uma prova escrita de programação que é feita na mão mesmo, onde temos que escrever programas para solucionar problemas dados. Tem alguma "dica" para testar os programas na mão? Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted March 19, 2014 Report Share Posted March 19, 2014 Tem alguma "dica" para testar os programas na mão? lê o código lentamente e com atenção ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Rui Carlos Posted March 19, 2014 Report Share Posted March 19, 2014 Tem alguma "dica" para testar os programas na mão? Executar o código mentalmente. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now