Ir ao conteúdo
  • Cadastre-se

C Não consigo fazer o loop terminar


Ir à solução Resolvido por Felipecfk,

Posts recomendados

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

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
	
	int pedidos, venda=0;
	int cod, itens;
	float cr1, cr2, cr3, cr4; // CR1 = Comissao do representante
	float taxa1=0.1, taxa2=0.15, taxa3=0.20, taxa4=0.25; // Taxas de comissao
	float venda1, venda2;
	
	printf (" Registrar: Digite 1 \n");
	printf (" Cancelar o registro: Digite 0 \n");
	scanf (" %d", &venda );
	printf ("\n Representantes: Codigos de 1 a 10 ");
	
	
	while (venda!=0)
	{	
			printf ("\n Escreva o cod. do representante \n");
			scanf (" %d", &cod );
	
		if (cod==1){
		// Caso for o representante 1
				printf ("\nInforme a quantidade de itens:");
					scanf (" %d", &itens );
				printf ("\nInforme o valor total da venda:");
					scanf (" %.2f", &venda1 );	
			
		if (itens<20){ // Comissao abaixo de 20 itens;
			cr1 = venda1*taxa1;}
		if (itens>=20 || itens <=49);{ // Comissao entre 20 e 49 itens;
			cr1 = venda1*taxa2;}
		if (itens > 50 || itens <=74);{ // Comissao entre 50 e 74 itens;
			cr1 = venda1*taxa3;}
		if (itens>75);{ // Comissao acima de 75 itens;
			cr1 = venda1*taxa4;}
		printf ("Pedido Registrado!");
		pedidos++;
		}
		// Caso for o representante 2	
		if (cod==2){

					printf ("\nInforme a quantidade de itens: \n");
						scanf (" %d", &itens );
			
					printf ("\nInforme o valor total da venda: \n");
						scanf (" %.2f", &venda2 );				
				
			if (itens<20){ // Comissao abaixo de 20 itens;
				cr2 = venda2*taxa1;}
			if (itens>=20 || itens <=49){ // Comissao entre 20 e 49 itens;
				cr2 = venda2*taxa2;}
			if (itens > 50 || itens <=74){ // Comissao entre 50 e 74 itens;
				cr2 = venda2*taxa3;}
			if (itens>75){ // Comissao acima de 75 itens;
				cr2 = venda2*taxa4;}
			pedidos++;
		}		
	}
	if (venda==0)
		printf ("\nValor da comissao de cada pedido: %.2lf\n"); // Informar por pedido, quanto deu de comissao por pedido;
		printf ("Total de vendas processado: %d\n", pedidos); // Todas as vendas finalizadas e informadas pelo pedidos++;
		
		printf ("\nTotal de comissoes para cada representante\n"); // quanto o representante recebeu de todos os pedidos e representar por representante;
		printf ("\nRepresentante 1 : %.2f R$", cr1);
		printf ("\nRepresentante 2 : %.2f R$", cr2);
		printf ("Total de comissoes que a companhia pagou aos seus representantes"); // Soma de comissoes de todos os representantes;
	return 0;
}

Estou tendo um problema, quero que após realizar os if(cod==1) o programa volte para o while, mas sem repetir o mesmo caso, quero fazer um outro case if(case==2), mas o programa fica no looping de perguntar o codigo e o produto.

Link para o post
Compartilhar em outros sites

@AsafeBernardoOficial   seu código não está compilando , e as opções que você quer escolher precisam ficar dentro de um loop ,  que poderia ser assim  :

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char* argv[]) 
{
    int pedidos{}, venda = 0;
    int cod, itens;
    // CR1 = Comissao do representante
    float cr1{}, cr2{}, cr3{}, cr4{};                            // inicializar as variaveis
    float taxa1 = 0.1, taxa2 = 0.15, taxa3 = 0.20, taxa4 = 0.25; // Taxas de comissao
    float venda1{}, venda2{};
    do
    {
        printf("\n");
        printf(" 0 - Cancelar o registro\n");
        printf(" 1 - Registrar ");
        scanf(" %d", &venda);
        printf("\n Representantes: Codigos de 1 a 10 ");
        do
        {
            printf("\n Escreva o cod. do representante\n");
            printf("zero para sair ");
            scanf("%d", &cod);
            if (cod == 0)break;
            if (cod == 1)
            {
                // Caso for o representante 1
                printf("\nInforme a quantidade de itens: ");
                scanf(" %d", &itens);
                printf("\nInforme o valor total da venda: ");
                scanf(" %.2f", &venda1);
                if (itens < 20)    // Comissao abaixo de 20 itens;
                {
                    cr1 = venda1 * taxa1;
                }
                if (itens >= 20 && itens <= 49) // Comissao entre 20 e 49 itens;
                {                               // entre é > && < maiorque and menorque
                    cr1 = venda1 * taxa2;       // || isso é ou
                }
                if (itens > 50 && itens <= 74) // Comissao entre 50 e 74 itens;
                {
                    cr1 = venda1 * taxa3; 
                }
                if (itens > 75) // Comissao acima de 75 itens;
                {
                  cr1 = venda1 * taxa4; 
                }
                printf("Pedido Registrado !\n");
                pedidos++;
            }
            // Caso for o representante 2	
            if (cod == 2)
            {
                printf("Informe a quantidade de itens: ");
                scanf(" %d", &itens);
                printf("Informe o valor total da venda: ");
                scanf(" %.2f", &venda2);
                if (itens < 20) // Comissao abaixo de 20 itens;
                {
                    cr2 = venda2 * taxa1;
                }
                if (itens >= 20 && itens <= 49) // Comissao entre 20 e 49 itens;
                {
                    cr2 = venda2 * taxa2;
                }
                if (itens > 50 && itens <= 74) // Comissao entre 50 e 74 itens;
                {
                    cr2 = venda2 * taxa3;
                }
                if (itens > 75) // Comissao acima de 75 itens;
                {
                    cr2 = venda2 * taxa4;
                }
                pedidos++;
            }
        } while (1);
    } while (venda != 0);
    printf("\nValor da comissao de cada pedido: %.2f\n", cr1); // Informar por pedido, quanto deu de comissao por pedido;
    printf("Total de vendas processado: %d\n", pedidos); // Todas as vendas finalizadas e informadas pelo pedidos++;
    printf("\nTotal de comissoes para cada representante\n"); // quanto o representante recebeu de todos os pedidos e representar por representante;
    printf("\nRepresentante 1 : %.2f R$", cr1);
    printf("\nRepresentante 2 : %.2f R$", cr2);
    printf("Total de comissoes que a companhia pagou aos seus representantes"); // Soma de comissoes de todos os representantes;
    printf("\n\n\n");
    return 0;
}

 

Link para o post
Compartilhar em outros sites

@devair1010 Não acho que alguém aqui se importe com isso, mas o seu código não é compatível com C por causa da inicialização de variáveis.

48 minutos atrás, devair1010 disse:

float cr1{}, cr2{}, cr3{}, cr4{};

As chaves só são validas em C++

  • Curtir 1
Link para o post
Compartilhar em outros sites

@kgin não sabia disso.

Estou realizando tecnólogo de ti e a matéria apresenta conteúdo com exemplos muito simples, e depois colocam uma questão como essa, que estou fazendo. Um pouco complicada e difícil de fazer.

Link para o post
Compartilhar em outros sites

programação não é difícil, o problema para a maioria dos brasileiros é que principalmente na linguagem C não tem muito material em português.

 

Outro problema meio que grande pra mim é que a maioria (não sei se é por preguiça) das pessoas utiliza um compilador de C++ para C que a principio resolve o problema, mas com o tempe se torna o problema.

 

Poste o enunciado para nós podermos entender melhor o algoritmo.

Link para o post
Compartilhar em outros sites
  • Solução
Em 07/05/2021 às 20:02, AsafeBernardoOficial disse:

Estou tendo um problema, quero que após realizar os if(cod==1) o programa volte para o while, mas sem repetir o mesmo caso, quero fazer um outro case if(case==2), mas o programa fica no looping de perguntar o codigo e o produto.

Sinceramente, talvez seja só mudar algumas coisas:

 

1- Trocar o while por if
2- Colocar printf ("\n Escreva o cod. do representante \n"); scanf (" %d", &cod );  fora(antes) desse if.
3- Depois disso colocar switch-case que você queria. Um trecho do exemplo abaixo:


if (venda!=0)
{   
    switch (cod) {  
 
            case 1 :
            if (cod==1)
                printf ("\nInforme a quantidade de itens:");
                    scanf (" %d", &itens );
                printf ("\nInforme o valor total da venda:");
                    scanf (" %.2f", &venda1 );
                     (..etc..)
                    break;
                 

              case 2:

              printf ("\nInforme a quantidade de itens: \n");
                        scanf (" %d", &itens );
              (..etc..)
              break;
}

Espero ter ajudado.

Link para o post
Compartilhar em outros sites

@Felipecfk obrigado me ajudou muito

@kgin não postei o enunciado pelo medo de estar entregando a questão de bandeja, como sei que no fórum ninguém faz trabalho para outros, decidi só botar o problema específico que eu estava enfrentando no código.

Link para o post
Compartilhar em outros sites
6 horas atrás, AsafeBernardoOficial disse:

@kgin não postei o enunciado pelo medo de estar entregando a questão de bandeja, como sei que no fórum ninguém faz trabalho para outros, decidi só botar o problema específico que eu estava enfrentando no código.

Eu já vi essa mesma questão varias vezes aqui no fórum, então eu acho que a chance de alguém copiar logo o seu é baixa.

Link para o post
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...

Aprenda a ler resistores e capacitores

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!