Ir ao conteúdo
  • Cadastre-se
Larissa Toral

Programação em c - problema para compilar

Recommended Posts

Por que meu programa não compila? sempre aparece erro na linha do ''for'' ( expected ";" before ")" token ). Eu programo no codeblocks. To aprendendo como usar o ''for'' agora, então deve ser por isso.

 

Proposta do exercicio:

 

•Um funcionário de uma empresa recebe, anualmente, aumento salarial. Sabe-se que:

a)Esse funcionário foi contratado em 2005, com salário inicial de R$ 1.000,00

b)Em 2006, ele recebeu aumento de 1,5% sobre o seu salário inicial

c)A partir de 2007 (inclusive), os aumentos salariais sempre corresponderam ao dobro do percentual do ano anterior

•Faça um programa que determine o salário atual desse funcionário.

 

int main()
{
    float i, anoatual, salario, novosalario, perc;

    printf ("DIGITE O ANO ATUAL: \n");
    scanf ("%f", &anoatual);
    salario = 1000;
    perc= 1.5/100;
    novosalario= salario+perc*salario;

   for (i=2007;anoatual)
   {
       perc=2*perc;
       novosalario=novosalario+perc*novosalario;
   }
    printf ("O SALARIO NO ANO ATUAL é: %.f", novosalario);

}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

for tem que ter 2 ponto e vírgulas dentro dos parêntesis, mesmo omitindo algum dos seus campos. Exemplo:
for ( i=0 ; i<5 ; )
for( ; i<5; i++)
for ( i=0 ; ; i++)

for(;;)

Como você pode ver, sempre leva os 2

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Larissa Toral exatamente como o colega @vangodp mencionou você esqueceu o " ; " hehe

tente colocar ai e veja se compila

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, vangodp disse:

for tem que ter 2 ponto e vírgulas dentro dos parêntesis, mesmo omitindo algum dos seus campos. Exemplo:
for ( i=0 ; i<5 ; )
for( ; i<5; i++)
for ( i=0 ; ; i++)

for(;;)

Como você pode ver, sempre leva os 2

entendi, e tem alguma regra de onde colocar o ponto e virgula?

isso - (i=2007;;anoatual) é igual á isso- (i=2007;anoatual;)  ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Larissa Toral seria isto for ( ; i=2007 ; anoatual)

pois o for funciona assim

como esse exemplo de como ele funciona

for(valor_inicial; condição_final; valor_incremento) {

     instruções;

}

ou

#include <stdio.h>

#include <conio.h>

int main(void)

{

  int contador; //variável de controle do loop

  for(contador = 1; contador <= 10; contador++)

  {

      printf("%d ", contador);

  }

  getch();

  return(0);

}

por exemplo está fazendo um contador de 0-10 sendo que está usando estes parametros do for)

Compartilhar este post


Link para o post
Compartilhar em outros sites
18 minutos atrás, GabrielLP14 disse:

@Larissa Toral seria isto for ( ; i=2007 ; anoatual)

pois o for funciona assim

como esse exemplo de como ele funciona

for(valor_inicial; condição_final; valor_incremento) {

instruções; }

 

AGORA ENTENDI, MUIIIIIIIIIIIIIIIIIIIIITO OBRIGADA!

 

mas agora tenho outro problema (que não sei se você pode me ajudar)

o programa ta copilando tudo ok, porém ele não da o resultado final o "novosalario". Você sabe me dizer o porquê?

int main()
{
    float i, anoatual, salario, novosalario, perc;

    printf ("DIGITE O ANO ATUAL: \n");
    scanf ("%f", &anoatual);
    salario = 1000;
    perc= 1,5/100;
    novosalario= salario+perc*salario;


   for (;i=2007;anoatual)
   {
       perc=2*perc;
       novosalario=novosalario+perc*novosalario;

   }
    printf ("O SALARIO NO ANO ATUAL é: %.1f", novosalario);


}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Larissa Toral

como assim ele não dá o resultado?

a conta está correta

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Larissa Toral ele quer saber o salário desde 2007 até o ano atual correto?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Larissa Toral tente criar uma váriavel do primeiro ano(e de o valor de 2007) e uma do ano atual e deixe com valor de 2016

dai quando você pedir pra digitar o valor você estaria pedindo para ver o salário daquele ano

se quiser eu faço um aqui para você ter uma base 

Compartilhar este post


Link para o post
Compartilhar em outros sites

perc= 1,5/100;... esse 1,5 não deveria ser 1.5? A vírgula não se usa a menos que use locale, e não o vejo, mude vírgula por ponto.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Espero ajudar:

#include<stdio.h>
#include<stdlib.h>

int main()
{
    //Ano é formado apenas por inteiros
    int anoatual = 0;
    float i, salario, novosalario, perc, percSal;

    printf ("DIGITE O ANO ATUAL(maior que 2005): \n");
    scanf ("%d", &anoatual);

    //Salario
    salario = 1000;
    //Porcentagem a ser usada
    perc = 1.5;
    //Salario referente a porcentegam
    percSal = 1000 / perc;
    //Como estamos no ano inicial, nao usamos a porcentagem do ano passado
    novosalario=salario;

    //Como ja comecamos com 2006 acima, vamos continuar em 2006
    for (i=2006;i<=anoatual;i++)
    {
       //Porcentagem do salario anterior dobrada
       percSal=(novosalario/perc)*2;
       //Novo salario é o antigo mais a porcentagem do salario
       novosalario+=percSal;
    }
    printf ("O SALARIO NO ANO ATUAL: %.2f", novosalario);

    getchar();
    return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×