Ir ao conteúdo

C poucos argumentos na chamada da função


Ir à solução Resolvido por Gabe Grechuk,

Posts recomendados

Postado

Boa tarde.

 

Aqui estou mais um dia pedindo ajuda com um código da faculdade que apresenta erro 😕

Agradeço quem puder ajudar. O console indica 3 erros; 1: poucos argumentos na chamada da função, 2: esperado 'while' (que na resolução do problema esqueceram de transcrever o código corretamente) e 3: esperando um '('

 

<>

#include <stdio.h>

#include <stdlib.h>



int main(){

    float salbruto, salliquido, imposto, totbruto=0, totliquido=0, totimposto=0;

    int contfunc=1;

   

    do

    {

        printf("Digite o salario bruto: ");

        scanf("%f", &salbruto);



        if (salbruto > 999)

        imposto = salbruto * 0.10;



        else

            if (salbruto > 1999)

            imposto = salbruto * 0.15;



        else

            if (salbruto > 9999)

            imposto = salbruto * 0.20;



        else

            if (salbruto > 99999)

            imposto = salbruto * 0.25;



        else

            imposto = salbruto * 0.30;



            salliquido = salbruto - imposto;



        printf("Salario liquido: %.2f \n", salliquido);



        totbruto = totbruto + salbruto;

        totliquido = totliquido + salliquido;

        totimposto = totimposto + imposto;

        contfunc++;

    }



    printf("-------------------------------\n");

    printf ("Total salario bruto : %.2f \n",totbruto);

    printf ("Total salario liquido : %.2f \n",totliquido);

    printf ("Total imposto : %.2f \n",totimposto);



    return 0;

}

 

  • Obrigado 1
Postado
4 minutos atrás, Dérick Soares disse:

na resolução do problema esqueceram de transcrever o código corretamente

 

Que significa?

 

Seu programa tem muitos erros. do {} while() é um comando e está, claro, incompleto.

 

 

image.png.4675ce55c0838c1116ebc1df46b45c7d.png

Esse não é o botão code. Não é para você escrever <> . Deve usar o botão que está lá na barra, como explicado no primeiro post no forum

  • Curtir 2
  • Obrigado 1
Postado

@Dérick Soares Ola! Insinua que está um "bebê engatinhando" nessa matéria e relaciona algumas falhas/erros que não pude detectar. É importante ter um código bonito e indentado e seguir sua regra consistentemente, nos iniciantes geralmente o fazemos, contudo, quando bate aquela "preguicinha", agente consulta o manual do IDE/compilador e usa a opção de customização e indentação rápida /ou site.

 

< C >

/*
 *	Clube do Hardware - CdH
 *	@Dérick Soares
 *      forums/topic/1584756-poucos-argumentos-na-chamada-da-função/
 */
#include"stdio.h"
#include"stdlib.h"
int
main() {
  
  float salbruto, salliquido, imposto, totbruto = 0, totliquido = 0, totimposto = 0;
  int contfunc = 1;
  do {
	printf("Digite o salario bruto: ");
        scanf("%f", &salbruto);

        if (salbruto > 999)
        	imposto = salbruto * 0.10;
        else if (salbruto > 1999)
		imposto = salbruto * 0.15;
        else if (salbruto > 9999)
		imposto = salbruto * 0.20;
        else if (salbruto > 99999)
            	imposto = salbruto * 0.25;
        else
		imposto = salbruto * 0.30;
	

	salliquido = salbruto - imposto;
	printf("Salario liquido: %.2f \n", salliquido);

        totbruto = totbruto + salbruto;
        totliquido = totliquido + salliquido;
        totimposto = totimposto + imposto;

        contfunc++;

  }

  printf("-------------------------------\n");
  printf("Total salario bruto : %.2f \n", totbruto);
  printf("Total salario liquido : %.2f \n", totliquido);
  printf("Total imposto : %.2f \n", totimposto);

  return 0;

}

saída de compilador:

gcc -std=c11 -fsyntax-only -Wall -Wextra -Werror -pedantic-errors -fanalyzer cdh/derick_soares.c
cdh/derick_soares.c: In function ‘main’:
cdh/derick_soares.c:40:3: error: expected ‘while’ before ‘printf’
   40 |   printf("-------------------------------\n");
      |   ^~~~~~

 

Foi declarado a instrução do {}  na função então é: previsto a 'while', antes da 'printf'.

Sem novidade! Aproposito para fazer disso um exercício.

 

Pare e pense!

[:)] — qual instrução e expressão resolve o erro sintático e o lógico desse código?

 

  • Curtir 2
  • Obrigado 1
Postado

@.if

5 horas atrás, .if disse:

Por enquanto remova o do. Depois aprenda sobre loops e if's else's

O problema é exatamente esse. Esse código que coloquei aqui é dado na aula como solução do problema e contem erros, fora os erros de português em todo o site (Faculdade: Estácio). Por isso que recorri aqui ao forum para ajuda. 

5 horas atrás, arfneto disse:

Esse não é o botão code. Não é para você escrever <> . Deve usar o botão que está lá na barra, como explicado no primeiro post no forum

Ahhh, entendi! Obrigado por avisar, encontrei o botão. :)

 

  • Curtir 1
  • Confuso 1
Postado
25 minutos atrás, Dérick Soares disse:

Esse código que coloquei aqui é dado na aula como solução do problema e contem erros

 

É um programa ruim. E com não tem sequer o enunciado não dá nem para imaginar o que falta, como por exemplo qual seria a condição para sair do loop

  • Curtir 1
  • Obrigado 1
Postado
1 hora atrás, arfneto disse:

 

É um programa ruim. E com não tem sequer o enunciado não dá nem para imaginar o que falta, como por exemplo qual seria a condição para sair do loop

Segue o enunciado. A resolução usando FOR e WHILE estavam corretas, somente a ultima resolução usando o DO...WHILE que não. 

image.thumb.png.47aebe176babb44c07b7ebe9e80d3299.png

 

Agradeço pela ajuda :)

 

image.thumb.png.21d0ee05d3d61e5e9b338935e881f55b.png

  • Obrigado 1
  • Solução
Postado

Boa noite meu caro @Dérick Soares

Pelo que eu entendi, o enunciado pede para você implementar um loop que pegue as informações dos empregados 15x e execute alguns cálculos com essas informações. Mas a solução parece que não foi bem escrita ou ta faltando um pedaço dela

 

Se fosse eu resolvendo esse exercício, eu faria com um loop for, no lugar de um do..wile

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

int main(){

    for(int i = 0; i < 15; i++)
    {
        // Declarando as variáveis dentro do loop, pois assim você limita o escopo delas
      	// para essa interação do loop apenas, garantindo que você não vai ta usando lixo
        // resultante das execuções anteriores e gerar resultados errados para os calculos.
        float salbruto, salliquido, imposto, totbruto=0, totliquido=0, totimposto=0;
      
        printf("Digite o salario bruto: ");
        scanf("%f", &salbruto);

        if (salbruto > 999)
        	imposto = salbruto * 0.10;
        else if (salbruto > 1999)
            imposto = salbruto * 0.15;
        else if (salbruto > 9999)
            imposto = salbruto * 0.20;
        else if (salbruto > 99999)
            imposto = salbruto * 0.25;
        else
            imposto = salbruto * 0.30;
      
      
        salliquido = salbruto - imposto;
        printf("Salario liquido: %.2f \n", salliquido);

        totbruto = totbruto + salbruto;
        totliquido = totliquido + salliquido;
        totimposto = totimposto + imposto;

        printf ("-------------------------------\n");
   		printf ("Total salario bruto : %.2f \n",totbruto);
    	printf ("Total salario liquido : %.2f \n",totliquido);
    	printf ("Total imposto : %.2f \n",totimposto);
      	printf("\n\n");
    }

    return 0;
}

 

Dentro do próprio loop for a gente já declara a variável de controle, a condição de saída do loop e o incremento da variável de controle

 

 

Mas como você disse que precisa escrever o código com do..while, eu escreveria ele assim:

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

int main(){

    int contador = 0;	// Variável para controlar a saída do loop. 
    do
    {
        float salbruto, salliquido, imposto, totbruto=0, totliquido=0, totimposto=0;
  
        printf("Digite o salario bruto: ");
        scanf("%f", &salbruto);

        if (salbruto > 999)
        	imposto = salbruto * 0.10;
        else if (salbruto > 1999)
            imposto = salbruto * 0.15;
        else if (salbruto > 9999)
            imposto = salbruto * 0.20;
        else if (salbruto > 99999)
            imposto = salbruto * 0.25;
        else
            imposto = salbruto * 0.30;
      
      
        salliquido = salbruto - imposto;
        printf("Salario liquido: %.2f \n", salliquido);

        totbruto = totbruto + salbruto;
        totliquido = totliquido + salliquido;
        totimposto = totimposto + imposto;

        printf ("-------------------------------\n");
   		printf ("Total salario bruto : %.2f \n",totbruto);
    	printf ("Total salario liquido : %.2f \n",totliquido);
    	printf ("Total imposto : %.2f \n",totimposto);
      	printf("\n\n");
  
  	contador++; 	// Aqui a gente incrementa a variável de controle.
    } while(contador < 15); // Todo laço do..while precisa dessa declaração while no final.
                            // É ela que especifica qual a condição de saída do loop.
                            // O seu código não ta compilando pois na sua implementação ela
                            // ta faltando.

    return 0;
}

 

Mas como você parece ser iniciante, ta tendo um pouco de dificuldade com loops. Isso é normal, controle de fluxo é perrengue assim mesmo no começo ksksksks

Da uma olhada nesse link aqui que ele explica certinho cada tipo de loop e você vai conseguir se situar melhor quando precisar implementar mais um desses

https://sites.google.com/site/itabits/treinamento/introducao-a-programacao-em-c/comandos-de-repeticao

  • Curtir 1
  • Obrigado 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...