Ir ao conteúdo

C Como calcular progressão aritimética?


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado

Construa um algoritmo em C que, para a
progressão aritmética 1; 4; 7; 10; ...148; 3725, determine a soma de seus
termos. Construa o algoritmo de maneira a não utilizar a fórmula de soma dos
termos. Faça com que o computador gere cada um dos termos a ser somado

#include <stdio.h>
#include <conio.h>
int main(void)

{
  int contador; 
  
  for(contador = 1; contador <= 149; contador++)
  if (contador%3==1)

    printf("%d ", contador);
  
  getch();
  return(0);
}

 

não consigo fazer um local para receber e armazenar os resultados

 

  • Curtir 1
Postado
29 minutos atrás, PROG105 disse:

não consigo fazer um local para receber e armazenar os resultados

 

O local seria uma variável, outro int.

 

A função é algo como y = 3x +1, certo? ;) 1,4,7,10.....

 

Assim isso serve
 

#include <stdio.h>
int main(void)
{   int soma = 0;
    for (int x = 0; (x+x+x+1)<149; x += 1 ) soma += x + x + x + 1;
    printf("%d ", soma);
    return (0);
}

 

Ou algo como

 

#include <stdio.h>
int main(void)
{
    int soma = 0;
    for (int x = 0;; x += 1)
    {
        int parcela = x + x + x + 1;
        if (parcela > 148)
        {
            printf("%d ", soma);
            return (0);
        };
        soma += parcela;
    };
    return (0);
}

 

politicamente correto porque não repete a soma.

  • Curtir 3
Postado

@PROG105 ? E? O que acontece? Testou os dois programas que e mostrei? eles mostram a soma. É só isso. E te disse qual é a função. E o enunciado diz o número de termos que tem que somar

  • Curtir 1
Postado

image.png.260f5b16231dcfbb9ee2f80e37439247.png

 

Não é um erro C99. O programa está dizendo que seu sistema está configurado para a versão de C de '89, um pouco antiga, ;) 

 

e está dizendo exatamente o que você deve fazer: use a opção, por exemplo, -std=c99 ou c17 por exemplo.

 

porque não usa um ambiente em português? E esse IDE é o pior de todos, esse Dev-C++ que está usando é ruim.

 

De todo modo use algo assim:

 

     gcc -std=c17 -Wall -o tst so0729.c 

 

Basta configurar em preferências do compilador para incluir -Wall e -std=c17

  • Curtir 1
Postado

CLion, Code::Blocks, Eclipse, Visual Studio, Visual Studio Code (em ordem alfabética), ou mesmo usar um editor como o Sublime Text e um programa como o CMake serviria bem melhor.

 

De todo modo entenda que Dev-C++ é só um ambiente de desenvolvimento e não um compilador, que é o que vai gerar seu programa afinal. Tudo que precisa é de uma linha, como eu te mostrei:
 

 gcc -std=c17 -Wall -o tst main.c 

 

criaria o programa txt.exe a partir de main.c . Nada mais.

 

E em relação ao Dev-C++ apenas inclua as opções como te mostrei.

 

  • Curtir 2
Postado

@PROG105 o que deu certo? Você rodar os programas que eu te mostrei? Muito bem. Bom trabalho.

 

Se precisa mostrar as parcelas, o normal é usar um printf() dentro do loop, junto com a soma. Ou não ? 

  • Curtir 1
Postado

@PROG105 não consigo imaginar qual pode ser a dificuldade de colocar um printf() em um loop, usando um dos dois programas que te mostrei ou escrevendo um a seu modo.

 

Porque não mostra seu programa ??

 

Trata-se apenas de calcular y=f(x) onde f(x) = 3x + 1, para x de 0 a 148 inclusive, e somar os caras. E mostrar as parcelas, segundo você disse.

 

 

  • Curtir 2
Postado

@arfneto

#include <stdio.h>
int main(void)
{
    int soma = 0;
    for (int x = 0;; x += 1)
    {
        int contador = x + x + x + 1;
        if (contador > 148)
        {
            printf("%d ", soma);
            printf("%d", contador);
            return (0);
        };
        soma += contador;
    };
    return (0);
}

 

  • Curtir 1
Postado
    if (contador > 148)
    {
        printf("%d ", soma);
        printf("%d", contador);
        return (0);
    };

 

Então se o contador for maior que 148 você usou um printf() para mostrar o contador, logo depois de mostrar a soma...

 

Aposto que ele mostrou 149. 

 

O que tentou fazer?

 

  • Curtir 1
  • Solução
Postado

@PROG105      será que o que você Quer fazer seja assim  :

#include <stdio.h>
void pausar( float );
int main(void)
{
    int soma = 0,x;
    for ( x = 0;; x += 1)
    {
        int contador = x + x + x + 1; /// o contador armazena o valor da soma
        printf("%3d%c = %3d\n"   ,
               x+1,166,contador);     /// aqui vai escrever o valor do
                                      /// contador todas as vezes que o loop for se repetir
        pausar ( 0.51 );              /// esperar por um tempo
        if (contador > 148)
        {
            printf("\nSomah ----> %3d\n", soma);
            printf("Contador -> %3d",
                         contador);   /// aqui dentro do if , só vai escrever o valor do contador QuanDo
                                      /// o contador for maior que 148
            break;                    /// sair desse Loop For
        }
        soma += contador;
    }
    printf("\n\n\n");
    return 32768;                     /// E retornaR para o Windows
}
void pausar( float a)
{
    int i,j;
    for(i=0; i<a*60000; i++)
        for(j=0; j<a*6000; j++);
}

 

Postado
1 hora atrás, PROG105 disse:

tentei colocar uma variável no início, mudei o printf várias vezes. Não consegui

 

você devia simplesmente mostrar essas tentativas...

 

E nessa que mostrou está claramente errado: colocou a mensagem depois do fim. Bastava colocar quando NÃO terminou. Você colocou depois de terminar, e sem surpresas, mostrou depois de terminar...

 

Em relação ao que fazer, considerando os dois programas que te mostrei, entenda que bastaria
 

#include <stdio.h>
int main(void)
{   int soma = 0;
    for (int x = 0; (x+x+x+1)<149; x += 1 )
    {
        int parcela = x + x + x + 1;
        soma += parcela;
        printf("%d ", parcela);
    }
    printf("\n\n\tSoma: %d ", soma);
    return (0);
}

 

no primeiro precisaria salvar a parcela, aumenta uma linha.

 

E no segundo:

 

#include <stdio.h>
int main(void)
{
    int soma = 0;
    for (int x = 0;; x += 1)
    {
        int parcela = x + x + x + 1;
        if (parcela > 148)
        {
            printf("\n\n\tSoma: %d ", soma);
            return (0);
        }
        else
        {
            printf("%d ", parcela);
        };
        soma += parcela;
    };
    return (0);
}

 

Basta colocar o printf() no lugar certo. Só vai imprimir a parcela ENQUANTO NÃO TERMINAR...

 

  • Curtir 2
Postado
Em 30/07/2021 às 21:49, devair1010 disse:

@PROG105      será que o que você Quer fazer seja assim  :

#include <stdio.h>
void pausar( float );
int main(void)
{
    int soma = 0,x;
    for ( x = 0;; x += 1)
    {
        int contador = x + x + x + 1; /// o contador armazena o valor da soma
        printf("%3d%c = %3d\n"   ,
               x+1,166,contador);     /// aqui vai escrever o valor do
                                      /// contador todas as vezes que o loop for se repetir
        pausar ( 0.51 );              /// esperar por um tempo
        if (contador > 148)
        {
            printf("\nSomah ----> %3d\n", soma);
            printf("Contador -> %3d",
                         contador);   /// aqui dentro do if , só vai escrever o valor do contador QuanDo
                                      /// o contador for maior que 148
            break;                    /// sair desse Loop For
        }
        soma += contador;
    }
    printf("\n\n\n");
    return 32768;                     /// E retornaR para o Windows
}
void pausar( float a)
{
    int i,j;
    for(i=0; i<a*60000; i++)
        for(j=0; j<a*6000; j++);
}

 

 

Por que você colocou "return 32768"?

 

coloquei como 0 e deu certo, tem algum problema?

 

  • Amei 1
Postado

@PROG105    não ,não tem problema , coloquei isso só para ser diferente mesmo  ,   esse ultimo return é para devolver uma informação para o Windows , então depende do que se precisa retornar ,  e veja que no console no final fica escrito esse valor retornado 32768 .

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!