Ir ao conteúdo
  • Cadastre-se

programação com erro!


Ceifador1998

Posts recomendados

sou novo na programação e recebi estas atividades mas não sei o que esta errado nem como resolver, por favor me ajudem.

 

Enquanto número informado for maior que 0, imprimir o dobro do mesmo.

 

#include <stdio.h>
main ()
{
    int numero;
    
    do
    {printf("\n digite um numero:");
    scanf("%f", & numero);
    
    printf("\n o dobro de %2f he %2f \n",numero,(numero*2));
    }
system("pause");}

 

e essa eu não faço ideia de como fazer.

 

6 - Entrar com o salário de uma pessoa e imprimir o desconto do INSS segundo a tabela abaixo. Após imprimir o desconto, pedir se deseja continuar, se digitar “S”, continuar pedindo novo número se digitar “N”, sair do programa.

 

Menor ou igual a R$600,00                                  Isento

Maior que R$600,00 e menor que R$1200,00     20%

Maior que R$1200,00 e menor que R$2000,00   25%

Maior que R$2000,00                                           30%

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Elert  o segundo você pode fazer assim...
 

#include <stdio.h>

main()
{
	volta:
	int numero;
	printf("NUMERO");
	scanf("%d",&numero);
	if(numero <= 600)
	{
		printf("ISENTO");
		goto volta;
	}
	if(numero >= 600 && numero <= 1200)
	{
		numero = numero * 0.2;
		printf("Desconto de: %d",numero);
		goto volta;
	}
}

 

 0.1 equivale a 10%,0.2 a 20% e por ai vai...
 A parte se deseja continuar você pode fazer ele perguntar e capturar S pra sim e N pra não, caso seja sim você usa goto pra voltar

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Obrigado me ajudaram bastante:tw_blush:

mas agora tenho outra duvida, é sobre o comando while, quero que quando chegar no while de a seguinte mensagem (DESEJA CONTINUAR? SE SIM VOLTAR AO INICIO E SE NÃO FECHAR O PROGRAMA) mas não sei onde coloco se é no final de cada IF ou antes do fim dos comandos?

 

#include <stdio.h>

main()
{
    int numero;
    printf("digite seu salario\n");
    scanf("%d",&numero);
    if(numero < 600)
    {
        printf("ISENTO\n");
    }
    if(numero >= 600 && numero <= 1200)
    {
        numero = numero * 0.2;
        printf("Desconto de: %d\n",numero);
    }
        if(numero >= 1200 && numero < 2000)
    {
        numero = numero * 0.25;
        printf("Desconto de: %d\n",numero);
    }
        if(numero >= 2000)
    {
        numero = numero * 0.3;
        printf("Desconto de: %d\n",numero);
    }
    while (1)
  }
 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Esse seu exercício so precisa mostrar o desconto? Se for você pode fazer algo assim:

 

#include <stdio.h>

int main()
{	
	float salario;
	char opc;

	do {
		printf("Digite seu salario: ");		
		scanf("%f", &salario);		

		int descontoINSS = 0;
		if(salario <= 600) {
			descontoINSS = 0;
		} else if(salario > 600 && salario <= 1200) {
			descontoINSS = 20;
		} else if(salario > 1200 && salario <= 2000) {
			descontoINSS = 25;
		} else if(salario > 2000) {
			descontoINSS = 30;
		}

		float valorDesconto = (salario / 100) * descontoINSS;
		float salarioCorrigido = salario - valorDesconto;
		
		if (descontoINSS == 0) {
			printf("ISENTO \n");
		} else {
			printf("Desconto de: %d%% \n", descontoINSS);
			printf("Valor do desconto: %.2f \n", valorDesconto);
			printf("Salario corrigido: %.2f \n", salarioCorrigido);
		}

		printf("Deseja continuar? (S/N): ");
		scanf(" %c", &opc);

	} while(opc == 's' || opc == 'S');

	return 0;
}

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

obrigado!!!

adicionado 32 minutos depois

 

21 horas atrás, Benjamin Breeg disse:

} while(opc == 's' || opc == 'S');

porque não é "s" e "n"? não entendi essa parte, sei que 0 é igual a falso e 1 igual a verdadeiro mas porque maiúsculo e minusculo? também não entendi as duas barras retas no meio para separar, mas mesmo assim me ajudo bastante fera:D

Link para o comentário
Compartilhar em outros sites

Então esse barra " | " chama pipe, o || quer dizer or (ou), é um operador para fazer operações com valores lógicos verdadeiro ou falso, enquanto a entrada for s em minúsculo ou S em maiúsculo ele repete o loop caso seja N ou qualquer outra letra ele sai.

 

Eu recomendo que você estude bastante essa parte de operadores relacionais, lógicos, aritméticos antes de avançar, eu vejo que você ja esta em condicionais, laços de repetição e ainda tem dificuldade com essa parte que é vital. Faça um estudo sobre lógica de programação para aprender e fixar melhor esses conceitos.

 

Respondendo sua pergunta, teria como só aceitar uma entrada especifica tipo s, S ou n, N mas ai demanda um pouco mais de código, na pratica o teste lógico funcionaria da mesma maneira porém com a restrição de entrada . Não sei se é o melhor jeito de fazer isso mas fica algo assim:

 

#include <stdio.h>

int main()
{	
	int resp;	

	do {
		
		/* CODIGO */
  		/* CODIGO */

		printf("Deseja continuar? (S/N): ");
		resp = getchar();
    	if (resp == '\n') {
    		resp = getchar();	
		} 
    	while (resp != 'n' && resp != 'N' && resp != 's' && resp != 'S') {
        	printf("\nEntrada invalida, escolha (s/S/n/N): ");
        	resp = getchar();
        	if (resp == '\n') {
        		resp = getchar();	
			}			 
		}
    
	} while(resp == 'S' || resp == 's');

	return 0;
}

 

 

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

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

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!