Ir ao conteúdo

Posts recomendados

Postado

Galera, hoje não deu nada certo! geralmente não tenho dificuldades, mas hoje foi um pesadelo! laços de repetição é estrutura de decisão não funcionaram! deem uma olhada no código abaixo:

 

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

int main()
{
	setlocale(LC_ALL, "Portuguese");

	int  a;
	int  b;

	a = 0;
	b = 100;

	printf("Digite um número no intervalo de 0 a 100: \n");
	scanf("%d", &a);

	while (a < b);
	{
		printf("Digite um número no intervalo de 0 a 100: \n");
		scanf("%d", &a);
	}

	for (a = 0; a > 100; a++);
	{
		printf("\a\n!ERROR!\n");
	}

	system("PAUSE");
	return 0;
}

 

Quando eu clico para compilar>abre a tela de pormpt>aparece na tela 'Digite um número no intervalo de 0 a 100' digito o número e só fica nisso, nem fechar fecha. Eu remexi tanto esse código que nem sei mas o que e certo ou errado 🤔

Nem sei se o laço de repetição for está funcionando essa por## trava logo de início 💩 e pra vocês verem que eu tentei fazer é bem simples, não conseguir fazer uma coisa básica que eu fazia com facilidade é triste e desanimador demais.

  • Curtir 1
Postado

Como o @allanxd falou, você está utilizando ; logo apos um laço, tanto no while quanto no for, e além disso, você esta cometendo erros de logica, esse while por exemplo, você pede um numero de 0 até 100 mas a comparação do while é sempre que a for menor que 100 repita. Se for seguir esse intervalo proposto o usuário ficará em loop. No for também possui erro de logica, revise seu código e qualquer problema poste a sua duvida, boa sorte !

  • Curtir 1
  • Obrigado 1
Postado

Agora manolo!

 

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

int main()
{
	setlocale(LC_ALL, "Portuguese");

	int  a;
	int  b;

	a = 0;
	b = 100;

	printf("Digite um número no intervalo de 0 a 100: \n");
	scanf("%d", &a);

	while (a < b) /* retirei o ; */
	{
		printf("Digite um número no intervalo de 0 a 100: \n");
		scanf("%d", &a);
	}

	for (a = 100; a > 100; a++); 
	{
		printf("\a\n!ERROR!\n");
		scanf("%d", &a); /*incluir o scanf */
	}

	system("PAUSE");
	return 0;
}

 

  • Curtir 2
Postado

@Alisson Neres    no loop for ainda esta errado , voce colocou o sinal maior que  >   , mas ali deveria ser o sinal menor que  <  ,   e o for deveria comecar em zero e nao em 100  , e  nao faz sentido modificar a variavel de controle do loop , entao nao precisa do scanf dentro desse for  , que deveria ser assim. :

for(a=0;a<100;a++)

e nao precisa de colocar ponto e virgula depois do for .

  • Membro VIP
Postado

Olá.

 

Em 07/01/2019 às 22:25, Alisson Neres disse:

Galera, hoje não deu nada certo! geralmente não tenho dificuldades, mas hoje foi um pesadelo! laços de repetição é estrutura de decisão não funcionaram! deem uma olhada no código abaixo:

@Alisson Neres, eu costumo tentar enfatizar que a solução do problema deve sempre ser relacionada ao problema em si. Parece óbvio, mas é comum não nos atentarmos a isso... Não adianta o código rodar bem, sem erros, ser bonitão, fazer uma monte de coisas interessantes e úteis, mas não fazer o que se precisa!

 

O que adianta um cozinheiro (programador) fazer uma delicioso espaguete (o que o código está fazendo), mas se o que eu pedi  foi um cuscuz (enunciado) ?

 

RESUMINDO:

Qual o enunciado do seu problema? esse trecho é uma etapa para algum exercício que lhe foi proposto?

ou

O quê você está tentando fazer? é algo algum "problema" que você imaginou e está tentando implementar uma solução?

 

 

 

 

Por exemplo, analisando esse trecho:

 

Em 08/01/2019 às 14:15, Alisson Neres disse:

	printf("Digite um número no intervalo de 0 a 100: \n");
	scanf("%d", &a);

 

E pelas estruturas dos seus laços de repetições, poderia imaginar que está tentando "validar o valor de a para que tenha apenas valores entre 0 a 100".

 

Se for isso, poderia fazer algo assim:

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

int main()
{
    setlocale(LC_ALL, "Portuguese");
    int a;
    
    do
    {
        printf("Digite um número no intervalo de 0 a 100: \n");
        scanf(" %d", &a);
    } while ((a < 0) || (a>100));
    
    system("PAUSE");
    return 0;
}

 

Exibindo a mensagem de erro, poderia ficar assim:

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

int main()
{
    setlocale(LC_ALL, "Portuguese");
    int a;
    
    do
    {
        printf("Digite um número no intervalo de 0 a 100: \n");
        scanf(" %d", &a);
        if ((a < 0) || (a>100))
        {
            printf("\a!ERROR!\n\n");
        }
    } while ((a < 0) || (a>100));
    
    system("PAUSE");
    return 0;
}

 

Ou assim:

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

int main()
{
    setlocale(LC_ALL, "Portuguese");
    int a;
    int OK;
    do
    {
        printf("Digite um número no intervalo de 0 a 100: \n");
        scanf(" %d", &a);
        OK = 1; //inicializa a flag como 1 = true = verdadeiro, ou seja, está OK
        if ((a < 0) || (a>100))
        {
            printf("\a!ERROR!\n\n");
            OK = 0; //muda a flag para 0, ou seja, para "não está OK"
        }
    } while (OK != 1); //enquanto não estiver OK
    
    system("PAUSE");
    return 0;
}

 

Poderia ser assim também:

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

int main()
{
    setlocale(LC_ALL, "Portuguese");
    int a;
    
    printf("Digite um número no intervalo de 0 a 100: \n");
    scanf(" %d", &a);
    
    while ((a < 0) || (a>100))
    {
        printf("\a!ERROR!\n\n");
        printf("Qual foi ai?! Eu mandei digitar no intervalo de 0 a 100: \n");
        scanf(" %d", &a);
    }
    
    system("PAUSE");
    return 0;
}

etc.

 

 

Em fim. Vê se ajuda no que você precisa.

 

De qualquer forma, por favor, poste o enunciado do problema ou o que está tentando fazer, assim como o seu código atual para analisarmos.

 

No aguardo.

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!