Ir ao conteúdo
  • Cadastre-se

C Como calcular progressão aritimética?


PROG105
Ir à solução Resolvido por devair1010,

Posts recomendados

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
Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

  • Solução

@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++);
}

 

Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

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