Ir ao conteúdo
  • Cadastre-se

C Erro com codigo q pede Maior e menor em C


Andreygabs

Posts recomendados

Preciso q o programa pare quando o usuário digitar um número negativo , porém o número negativo não pode sair como menor , qual o problema com o meu código?

<>

<

#include<stdio.h>

 int main(){

     

     int maior, menor, num;

  maior=num;

      menor=num;

     do

     {

      printf("Numero : ");

        scanf("%i",&num);

        if(num>maior){

            maior=num;

            }

           

         else if(num> 0 && num <menor){

            menor=num;

            }

      

     } while(num>=0);

      printf("maior: %i \nmenor:%i",maior,menor);

return 0;

}

>

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Andreygabs disse:

     int maior, menor, num;

  maior=num;

      menor=num;

Mas você acabou de declarar maior, menor e num...
pra que dizer que eles são iguais ai se não atribuiu valor nenhum pra eles ainda?

Eu não sei o que quer fazer, como é o enunciado? porque dependendo do enunciado talvez isso não ajude. tenta fazer isso no inicio:
maior=0;
menor=0;

o senhor fez:
while(num>=0);

Mas o que você quer não é um num>=0?
Então no while deveria estar assim:

while(num<0);

Para que enquanto o usuário digitar numero menor que zero, retornar ao scanf
 

Link para o comentário
Compartilhar em outros sites

apresente o enunciado pra ver se é isso. veja se isso lhe ajuda:
 


#include<stdio.h>

int main()
{
	int maior, menor, num1, num2;
	do
	{
		printf("Somente serão aceitos dois numeros maiores que 0:\n");
		printf("Numero 1: ");
		scanf("%i",&num1);

		printf("Numero 2: ");
		scanf("%i",&num2);

		if(num1>=0 && num2>=0)
		{
			if(num1>num2)
			{
				maior=num1;
				menor=num2;
			}
			else
			{
				maior=num2;
				menor=num1;
			}
		}
	}while(num1<0 || num2<0);

	if(maior==menor)
		printf("Os numeros são iguais: %i", maior);
	else if(maior!=menor)
		printf("maior: %i \nmenor:%i\n",maior,menor);

	return 0;
} 

 

Link para o comentário
Compartilhar em outros sites

  • 2 anos depois...
Em 20/09/2021 às 09:58, Andreygabs disse:

Preciso q o programa pare quando o usuário digitar um número negativo , porém o número negativo não pode sair como menor , qual o problema com o meu código?

Precisa não, tu queres  (...) que, após digitalização dum número (especificamente decimal),

 

cheque-o para negativos e ignore-o.

  /* Asuma que 0 é positivo, e neutro                                        */
  if (decimal<0) continue;
  if (decimal>maior) maior= decimal;
  if (decimal<menor) menor= decimal;
    

ou

  /* Asuma que 0 é positivo, e neutro                                        */
  if (decimal>-1) {
    if (decimal>maior) maior= decimal;
    if (decimal<menor) menor= decimal;
    }

 

Notei

Em 20/09/2021 às 09:58, Andreygabs disse:

int maior, menor, num;

  maior=num;

      menor=num;

 

Qual é valor na `num` ?

— Arbitrário, ele é logicamente errado.

 

***Resolve-se com maior e menor iguais ao primeiro valor da lista, numa primeira leitura que está fora do laço.

 

Ou inicializar após checagens durante o laço.

  char flag= 1;
  do {
    printf ("\rNumero : ");
  
    scanf ("%i",&num);

    if (0>num) continue;   
    if (flag) maior= menor= num , flag= 0;    

    if (num>maior) maior= num;
    if (num<menor) menor= num;
    } 
  while (num)/* stop 0 */;

 

 

Em 20/09/2021 às 09:58, Andreygabs disse:

qual o problema com o meu código?

Em 20/09/2021 às 09:58, Andreygabs disse:

 } while(num>=0);

***Um deles é insinuar o desejo de ignorar os números negativos enquanto o laço continua para os positivos.

 

 

Enfim,

algos assimn, para mim, já é bom!

C'11 - gcc '11.4

#include <stdio.h>
int main (){
  int maior ,menor ,num= 1;
  char flag= 1;
  do {
    printf ("\rNumero : ");

    num= -1;
    scanf ("%i",&num);

    if (0>num) continue;
    if (flag) maior= menor= num , flag= 0;
    if (num>maior) maior= num;
    if (num<menor) menor= num;
    } 
  while (-1<num)/* stop ... ,-1 */;
  putchar ('\n');
  printf ("%s%d%c%d%c","O menor e o maior número é: ",menor,' ',maior,'\n');
  return 0;
  }

 

 

 

 

— Okey ??

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!