1 – 11 de 11
Anônimo Felipe Ergueta disse...

Olá, primeiro vou parabeniza-lo pelo blog, estou fazendo todos os exercícios e em poucas semanas já avançei muito na linguagem C. Eu me divirto fazendo os códigos de programação (quando acho logo a lógica), mas as vezes é algo mais complicado, esquento a cabeça, mas faz parte! Enfim, a minha dúvida é no diamante de astericos:

asteriscos = 1;
espacos = (numero-1)/2;
for(linha = 1 ; espacos > 0 ; linha++)
{
//Espaços
for(count = 1 ; count <= espacos ; count++)
printf(" ");

//Asteriscos
for(count = 1 ; count <= asteriscos ; count++)
printf("*");

espacos--;
asteriscos += 2;
printf("\n");

Minha dúvida está nessa passagem, o primeiro for, a lógica é enquanto espaços forem maiores que 0. Sendo 9 o número escolhido e sendo asterisco=1 e vazio=4 os valores inicias... no primeiro loop do código, espaço torna-se 3, asteriscos 3. No segundo loop, espaço torna-se 2, e asteriscos 5. No terceiro, espaço torna-se 1, e asteriscos 7. No final do código, espaço torna-se 0 e asteriscos 9. Agora chegou minha dúvida, a condição é espaço>0, como o código continua e imprime os 9 asteriscos, se 0 não é maior que 0... Obrigado pela ajuda desde já!

9 de maio de 2013 às 11:35

Anônimo Jorge Hernandes disse...

Oi Felipe, cara eu consegui resolver esse problema... vc está com dificuldade para imprimir a linha central e a parte de baixo do diamante, sugiro que realize um teste IF logo após o FOR principal que escreve as linhas. Nesse teste vc determina uma condição capaz de identificar a linha do meio do diamante, sendo que se for a parte de baixo vc incrementa espaços (espaco++) e decrementa asteristicos (asteristicos-=2). Note a diferença na inicialização das variáveis tambem, isso se dá pelo posicionamento mas é facil de se corrigir.

int asteriscos = -1;
int espacos = ((numero-1)/2+1);

for(linha = 1 ; linha<=numero ; linha++)
{
if(linha<=(numero/2+1))
{
espacos--;
asteriscos += 2;
}
else
{
espacos++;
asteriscos -= 2;
}

//Espaços
for(count = 1 ; count <= espacos ; count++)
printf(" ");

//Asteriscos
for(count = 1 ; count <= asteriscos ; count++)
printf("*");

printf("\n");
}

Espero ter ajudado!

21 de junho de 2013 às 12:07

Blogger Unknown disse...

ola gostaria que você me respondesse esses dois exercício que está me dando dor de cabeça já tentei muito e ñ estou conseguindo, os exercício é esses:

pergunte ao usuário quantos números da sequencia ele quer ver

pergunte um numero e imprima seu fatorial em ambos casos pergunte se ele quer continuar o programa ou encerrar
desde já fico agradecido pela sua ajuda
ah muito bom esse seu blog está de parabéns bons conteúdo.

30 de novembro de 2013 às 13:39

Anônimo Apostila C Progressivo disse...

Olá Elenilson,

Quais são suas dúvidas nos exercícios? O que não conseguiu resolver?

1 de dezembro de 2013 às 16:57

Anônimo Anônimo disse...

Prezados,

No exercicio 1 se eu colocar um inteiro, pex. 20, pelo menos no meu computador, o produto dos pares dá erro e aparece um numero negativo. Penso que houve o famoso "estouro".No meu computador a variavel int ocupa 4 bytes, bem como a short e a long tb.Já tentei usar o float e o double mas o problema persiste.Como eu poderia resolver este problema? Segue o codigo abaixo:(eu chamo a função produto_parimpar() do main)

int produto_parimpar()
{
int num,i;
unsigned int pp=1,pi=1;
system("cls");
printf("\n\t\tCALCULA O PRODUTO DOS PARES E IMPARES DO NUMERO DIGITADO");
printf("\n\nEntre com o numero desejado:");
scanf("%d",&num);
for(i=1;i<=num;i++)
{
if(i%2==0) pp*=i;
else pi*=i;
}
printf("\n\nO produto dos numeros pares ate %d eh: %d",num,pp);
printf("\n\nO produto dos numeros impares ate %d eh: %d",num,pi);
return;
}

21 de fevereiro de 2014 às 03:22

Blogger joagostini disse...

Eis como resolvi o desafio de fibonacci. No exemplo dado, o código é mais direto, no meu, em troca, consegue imprimir, menos o zero, a cadeia toda.
/*#include
#include
#include */

void fibonacci(int x)
{
int i=1,n1=1,n2=0;
printf("\n\nA sequência de Fibonacci é 0 ");
for(;i<x;++i)
{
if(i%2==0)
{
n2=n1+n2;
printf("%d ",n2);
}
else
{
n1=n1+n2;
printf("%d ",n1);
}
}

int main() {
setlocale(LC_ALL,"");

int qtos;

printf("Informe o número de termos da sequência Fibonacci. ");
scanf("%i",&qtos);
fibonacci(qtos);

return (0);
}

}

9 de outubro de 2014 às 15:38

Blogger ze disse...

Super hiper mega desafio de Fibonacci

Muita boa a solução.alias, genial.
eu fiz a questão anterior de Fibonacci.Quando eu tentei fazer essa, eu pensei:"impossível,pois no mínimo é necessário duas variavéis(count e termo)". :@)

25 de dezembro de 2014 às 22:12

Blogger ze disse...

Desafio do diamante de asteriscos

Solução genial e bem comentada como foi a do hiper desafio fibonacci.

Eu fiz de outro jeito.
1- Eu fiz um algoritmo que exibia um triângulo.
2- Eu fiz outro algoritmo que exibia um triângulo invertido.
3- juntei os dois algoritmos.fiz uma adaptação no algoritmo triângulo invertido para não imprimir a linha inicial.

O meu jeito de fazer eu usei a tecnica dividir para conquistar kkkkkk... claro, depois de usar muito a tecnica tentativa e erro kkkk mas enfim o importante é que deu certo

25 de dezembro de 2014 às 22:44

Anônimo Anônimo disse...

No Exercício 4 eu não entendi direito a ideia do for entrelaçado, mas fiz uma resolução diferente. Entrelaçando while eu me sinto mais no controle da situação...
Meu codigo ficou assim:

#include

int main(void)
{
int num;
int linha = 1;
int count = 1; //Esse count representará a quantidade de termos por linha, sendo também o 'n' da progressão aritimética de razão = linha e primeiro termo = linha.


printf("Insira um numero inteiro: ");
scanf("%d",&num);

while(linha <= num) //Esse while resetará o count e pulará as linhas
{

printf("\n");

while(count <= linha) //Esse while escreve os termos em cada linha
{
printf("%d ",linha+(count - 1)*linha); //Formula do An da progressao aritimética
count++;
}

count = 1;
printf("\n");
linha++;

}
}

30 de julho de 2015 às 07:23

Blogger Unknown disse...

Primeiramente, gostaria de parabenizar pela iniciativa, conteúdo relevante com uma didática incrível! Estou acompanhando o site como um estudo paralelo de programação e gostaria de deixar uma contribuição.

No Desafio do diamante, o for que controla a linha está sendo usado como while, apenas o teste "asterisco>0" ou "espaco>0" é relevante, a variável linha não realiza nenhum função.
Daí seria mais eficiente usar "while(espaco>0)" e while(asterisco>0).
Ou então, os argumentos de "for" não são obrigatórios, poderia fazer da seguinte forma "for( ;espaco>0; )" ou "for( ;asterisco>0; )"

Obrigado por manter sites do tipo no ar!!!!
PARABÉNS!!!!

15 de fevereiro de 2017 às 20:33

Anônimo Anônimo disse...

João Carlos Agostini, você precisa de um "fechar chaves(})" antes do int main() e eliminar um "fechar chaves(})" do final pois a linguagem C não aceita função dentro de função (o que não a inclue no grupo de Linguagem Estruturada em Blocos).

29 de junho de 2017 às 21:18

É quase impossível criar centenas de páginas voltadas para programação C e não cometer algum erro.

- Se notar algum conceito, letra ou trecho de código errado, deixe sua correção

- Se perceber uma maneira melhor ou mais eficiente de fazer algo, deixe sua ideia

- Se algo não ficar claro ou for confuso, nos avise

Aos poucos vamos aumentando e melhorando a qualidade de nosso material, e para isso contamos com sua ajuda.
Você pode usar algumas tags HTML, como <b>, <i>, <a>

A moderação de comentários foi ativada. Todos os comentários devem ser aprovados pelo autor do blog.

Depois de enviar seu comentário, será necessário fazer login.
Prove que você não é um robô