EXEMPLO ALTERNATIVO PARA ORGANIZAR A P.G ME CORRIJAM SE TIVEREM ALGO CONTRA, OU QUE DE ERROS EM OUTRAS SITUACOES
#include #include
/*
an = a1 * (razao)^(n-1) "a1"= eh o primeiro termo "q"= eh a quociente, diferenca de um numero pra outro "n"= numero de termos da P.A(progressao geometrica) "an"= am * (quociente)^(n-1) (obs: no lugar de a1 pode ser pedido am)
P.G a razao eh chamada de q, quociente PG 2,4,8,16,32,64,128,256,512,1024. use --> pow(a,b) significa 'a elevado a b'. */
int main() {
int a1, n, an, count=1, q, ancount;
printf("numero de elementos da PG\n"); scanf("%d",&n);
printf("Razao da PG\n"); scanf("%d",&q);
printf("De o elemento inicial da PG\n"); scanf("%d",&a1);
an=a1*pow(q,(n-1));//resolvo "an" fora do laco ancount=a1;//aqui dou um nome para o cara da iteracao, pra nao usar o termo "a1". for (a1=a1; ancount<=an; ancount=ancount*q) { printf("%d) elemento: %d\n",count,ancount);//assim o print fica limpo. count++;//esse usei apenas para numerar cada impressao(desnecessario). }
Ele fez pela definição do n-ésimo termo da PG brother, daria na mesma se o código dele não estivesse um pouco errado. Por exemplo qnd vc digita as entradas 5, 5, 5, a saída q deveria ser:
Termo 1: 5 Termo 2: 25 Termo 3: 125 Termo 4: 625 Termo 5: 3125
acaba sendo:
Termo 1: 5 Termo 2: 25 Termo 3: 120 Termo 4: 620 Termo 5: 3120
mas pra efeito de comparação o código atua da mesma forma.
Meu código aí semelhante ao seu:
#include
int main() { int Ini, Rz, Nt, Cont;
printf("Termo inicial da PG:"); scanf("%d", &Ini); printf("Razao:"); scanf("%d", &Rz); printf("Numero de Termos:"); scanf("%d", &Nt);
Faltou o uso de vírgulas para colocar mais de uma instrução em cada parte do for.
10 de agosto de 2023 às 14:20
O curso C Progressivo vai te ensinar agora o que é, provavelmente, o laço mais importante e usado na linguagem de programação C: o laço FOR, que será usado várias vezes durante nossa apostila.
Clique aqui e saiba como obter seu certificado de programação C! Entre já no Mercado de Trabalho!
Leia este conteúdo no seu computador: Apostila C Progressivo
O que é o laço FOR
A sintaxe do laço FOR: como usar o for
A sintaxe é a seguinte:
for(inicio_do_laço ; condição ; termino_de_cada_iteração)
{
//código a ser
//executado aqui
}
Isso quer dizer que, ao iniciar o laço for, ele faz o que está no trecho "inicio_do_laço".
Geralmente se usa para inicializar algumas variáveis (o que fazíamos antes de iniciar o laço WHILE).
Após inicializar, o for testa a condição.
Se ela resultar verdadeira, o código é executado e em seguida o 'termino_de_cada_iteração" é executado.
A condição é testada novamente, e se for verdadeira, executa o 'termino_de_cada_iteração" também, e assim continua até que a condição resulte no valor lógico FALSO (0) e o laço FOR termina.
Vamos ver na prática como usar o laço FOR através de exemplos de programas em C.
Exemplo: Contando de 1 até 10 com o laço FOR
No exemplo a seguir, apenas declaramos a variável 'count', e iniciamos ela dentro do laço for.
O primeiro teste é se '1 <= 10', como é verdadeiro, o código que imprime o número é executado.
Após o término da execução, o count é incrementado em 1. Agora count=2.
Na nova iteração, testamos a seguinte condição '2 <= 10', que resulta em valor lógico VERDADEIRO, por tanto o código é executado e o número 2 impresso. Agora incrementamos a variável 'count', que agora vale 3.
E assim por diante, até imprimirmos o valor 10 e 'count' ser incrementada e se tornando count=11.
No próximo teste, a condição agora é FALSA e o laço for termina.
#include <stdio.h>
int main(void)
{
int count;
for(count=1 ; count <= 10 ; count++)
{
printf("%d\n", count);
}
}
Exemplo: Contagem regressiva de 10 até 1, usando o laço FOR
O raciocínio é igual ao do exemplo anterior, porém vamos decrementar a variável que vai se iniciar com 10.
Veja como ficou nosso código em C:
#include <stdio.h>
int main(void)
{
int count;
for(count=10 ; count >= 1 ; count--)
printf("%d\n", count);
}
Assim como no teste condicional IF ELSE, e no laço WHILE, se o código que vem após o laço tem apenas uma linha, não é necessário usar as chaves.
Se você colocar duas, ou mais, linhas de código após o IF, ELSE, WHILE ou FOR, apenas a primeira linha fará parte do teste/laço.
Muita atenção pra isso! Se não quiser correr riscos, você pode usar sem problema algum o par de chaves.
Exemplo: Contagem progressiva e regressiva no mesmo laço FOR
Ora, se no laço WHILE podemos usar, inicializar, comparar, testar e operar matematicamente várias variáveis, também podemos fazer isso no laço FOR.
Agora inicializamos duas variáveis, testamos se ambas obedecem a uma determinada condição, e usamos dois operadores matemáticos, tudo ao mesmo tempo. Veja esse código em C e tente entender como funciona:
#include <stdio.h>
int main(void)
{
int up,
down;
printf("CRESCENTE \tDECRESCENTE\n");
for(up=1, down=10 ; up<=10 && down >=1 ; up++, down--)
{
printf(" %d \t\t %d\n", up, down);
}
}
Exemplo: Crie um programa em C que gera os elementos de uma P.A pedindo ao usuário o número de elementos da P.A, sua razão e seu elemento inicial.
Lembrando que a fórmula do n-ésimo termo da P.A é: an = a1 + (n-1)*razao
Fica fácil ver que:
#include <stdio.h>
int main(void)
{
int termos,
razao,
inicial,
count;
printf("Número de termos da P.A: ");
scanf("%d", &termos);
printf("Razão da P.A: ");
scanf("%d", &razao);
printf("Elemento inicial da P.A: ");
scanf("%d", &inicial);
for(count = 1; count <= termos ; count++)
printf("Termo %d: %d\n", count, (inicial + (count-1)*razao) );
}
Exemplo: Crie um programa em C que gera os elementos de uma P.G pedindo ao usuário o número de elementos da P.G, sua razão e seu elemento inicial.
O exemplo dessa questão é igual ao que demos artigo sobre o laço WHILE.
Porém, vamos apresentar agora o casting.
A função pow, da biblioteca math.h recebe dois números decimais e retorna um decimal também, do tipo double.
Porém, não queremos trabalhar com o tipo double, e sim com o tipo inteiro, então temos que dizer e sinalizar isso pra função pow, de alguma maneira.
Essa maneira é o cast, que é colocar o tipo de variável que queremos obter, antes do retorno da função ou antes de uma variável.
No nosso caso, queremos que a função pow() retorne um inteiro, então fizemos: (int) pow(...)
Ou seja, basta colocarmos o tipo que queremos entre parênteses, e teremos esse tipo de variável.
Mas só fizemos isso porque o resultado de nossa P.G é inteiro. Caso usássemos decimais e colocássemos o cast pra inteiro, iríamos ficar só com a parte inteira do número decimal e perderíamos os valores decimais.
#include <stdio.h>
#include <math.h>
int main(void)
{
int termos,
razao,
inicial,
elemento,
count;
printf("Número de termos da P.G: ");
scanf("%d", &termos);
printf("Razão da P.G: ");
scanf("%d", &razao);
printf("Elemento inicial da P.G: ");
scanf("%d", &inicial);
for(count = 1; count <= termos ; count++)
printf("Termo %d: %d\n", count, inicial* (int)pow(razao,count-1) );
}
postado por Programação Progressiva às 08:26 em 23 de fev. de 2013
8 Comentários
Fechar esta janela Ir para formulário de comentárioFazia tempo que não usava o for e acabei consultando aqui.. muito bom.
Só uma ressalva, o correto seria "iteração" e não "iNteração". No mais perfeito, obrigado.
19 de abril de 2014 às 21:39
Ola, e como eu faço para aumentar o passo do for?
2 de maio de 2014 às 15:47
O passo do for é o ultimo a ser especificado na sintaxe exemplo:
'for(count = 1; count <= termos ; count++)'
se quiser contar de 2 a 2 fica assim:
'for(count = 1; count <= termos ; count+=2)'
12 de outubro de 2014 às 09:47
EXEMPLO ALTERNATIVO PARA ORGANIZAR A P.G
ME CORRIJAM SE TIVEREM ALGO CONTRA, OU QUE DE ERROS EM OUTRAS SITUACOES
#include
#include
/*
an = a1 * (razao)^(n-1)
"a1"= eh o primeiro termo
"q"= eh a quociente, diferenca de um numero pra outro
"n"= numero de termos da P.A(progressao geometrica)
"an"= am * (quociente)^(n-1) (obs: no lugar de a1 pode ser pedido am)
P.G a razao eh chamada de q, quociente
PG 2,4,8,16,32,64,128,256,512,1024.
use --> pow(a,b) significa 'a elevado a b'.
*/
int main()
{
int a1, n, an, count=1, q, ancount;
printf("numero de elementos da PG\n");
scanf("%d",&n);
printf("Razao da PG\n");
scanf("%d",&q);
printf("De o elemento inicial da PG\n");
scanf("%d",&a1);
an=a1*pow(q,(n-1));//resolvo "an" fora do laco
ancount=a1;//aqui dou um nome para o cara da iteracao, pra nao usar o termo "a1".
for (a1=a1; ancount<=an; ancount=ancount*q)
{
printf("%d) elemento: %d\n",count,ancount);//assim o print fica limpo.
count++;//esse usei apenas para numerar cada impressao(desnecessario).
}
26 de julho de 2015 às 17:19
Ta mais quando eu uso o while e o for?
1 de setembro de 2015 às 15:09
Olá, Não entendi bem o porque de usar a função "pow". Meu contigo ficou simplesmente assim:
#include
int main(){
int a1, r, n, i;
printf("\nDigite o primeiro termo, a razão e quantos termos você deseja:\n");
scanf("%d%d%d",&a1, &r, &n);
for (i=1; i<n; i++){
printf("\n\n%d\n", (a1= a1*r));
}
return(0);
}
10 de maio de 2017 às 07:28
Ele fez pela definição do n-ésimo termo da PG brother, daria na mesma se o código dele não estivesse um pouco errado. Por exemplo qnd vc digita as entradas 5, 5, 5, a saída q deveria ser:
Termo 1: 5
Termo 2: 25
Termo 3: 125
Termo 4: 625
Termo 5: 3125
acaba sendo:
Termo 1: 5
Termo 2: 25
Termo 3: 120
Termo 4: 620
Termo 5: 3120
mas pra efeito de comparação o código atua da mesma forma.
Meu código aí semelhante ao seu:
#include
int main() {
int Ini, Rz, Nt, Cont;
printf("Termo inicial da PG:"); scanf("%d", &Ini);
printf("Razao:"); scanf("%d", &Rz);
printf("Numero de Termos:"); scanf("%d", &Nt);
for(Cont=1; Cont <= Nt; Cont++) {
printf("Termo %d: %d\n", Cont, Ini);
Ini*=Rz;
}
return 0;
}
21 de maio de 2017 às 12:04
Faltou o uso de vírgulas para colocar mais de uma instrução em cada parte do for.
10 de agosto de 2023 às 14:20