• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

pedrosimoes

Exercicio que dá cabo de mim!

12 mensagens neste tópico

Não é que não seja facil, o problema é que já ando a passar-me com o exercicio.

Aqui vai: "Elabore um programa que determine todos os números pares entre dois números inteiros ni e nf (ni<nf)."

O que eu fiz até agora foi:

#include <stdio.h>
#include <stdlib.h>
//Ficha3 - Exercicio2
void main ()

{
int ni,nf,n;
	n=ni;
	printf("Insira um numero inteiro : ");
	scanf("%d",∋);
	printf("\nInsira mais um numero maior que o anterior: ");
	scanf("%d",&nf);
	while(ni>=nf);
		printf("\nO primeiro numero inserido em primeiro lugar tem de ser inferior ao segundo!");
		ni<nf;

	for(ni=n;n<=nf;n++)
	{
		if(n%2==0)
			printf("%d\n",n);
	}
	system("pause");
}

Para ser directo, o que é que tá mal e o que é que falta aqui?

Obrigado, e btw, sou do primeiro ano! lol

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esse while não tem corpo, i.e., só tem uma instrução vazia (esse ;).

Além disso, podes optimizar esse for para ter incrementos de 2.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se não te importares explica como deveria de alterar o código de modo a funcionar em condiçoes?!

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

                while(ni>=nf){
                        printf("\nO primeiro numero inserido em primeiro lugar tem de ser inferior ao segundo!");
                        ni<nf;}

Se o meu C não me falha..

Faltavam-te as chavetas

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

em C o ciclo while funciona assim

while(condição até parar)

{

  instruções a realizar;

  e no fim costuma-se por a iteracção

}

tu tens na condição do while(); <- erro de sintaxe

e depois dentro do ciclo só tens um output. Seja como for onde tens um while, precisas de um if, pois, tens de comparar os 2 números, e só continuas o programa se o 1º número for mais pequeno que o 2º.

o que ele quis dizer com o incremento de 2 em 2 números é que se o 1º número for par, podes andar no ciclo 2 números de cada vez, até chegares ao outro número.

PS: peço desculpa se o português parecer um pouco confuso.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só peguei no teu código e mudei algumas coisas:

#include <stdio.h>
#include <stdlib.h>
//Ficha3 - Exercicio2
int main ()

{
        int ni,nf,n;
                printf("Insira um numero inteiro : ");
                scanf("%d",∋);
                printf("\nInsira mais um numero maior que o anterior: ");
                scanf("%d",&nf);
                if(ni>=nf) printf("\nO primeiro numero inserido tem de ser inferior ao segundo!"); 
                for(n=ni;n<=nf;n++) //Aqui pus que o n é que recebia o ni, é a mesma coisa mas fica melhor de se perceber
                {
                        if(n%2==0)
                                printf("%d\n",n);
                }
                system("pause");
                return 0;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só peguei no teu código e mudei algumas coisas:

#include <stdio.h>
#include <stdlib.h>
//Ficha3 - Exercicio2
int main ()

{
        int ni,nf,n;
                printf("Insira um numero inteiro : ");
                scanf("%d",∋);
                printf("\nInsira mais um numero maior que o anterior: ");
                scanf("%d",&nf);
                while(ni>=nf) //Aqui tirei o ;
                        printf("\nO primeiro numero inserido em primeiro lugar tem de ser inferior ao segundo!");
                        //ni<nf; isto não é necessário
                
                for(n=ni;n<=nf;n++) //Aqui pus que o n é que recebia o ni, é a mesma coisa mas fica melhor de se perceber
                {
                        if(n%2==0)
                                printf("%d\n",n);
                }
                system("pause");
                return 0;
}

Assim dá um loop infinito de printfs caso entre no while já que ni e nf nunca vão ser alterados, logo a condição vai sempre manter-se!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, tens toda a razão, eu queria pôr um if em vez de um while, não gosto de while's neste tipo de soluções. Mas desculpa e obrigado pela chamada de atenção  :-[

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sei que já não interessa mas tinham uma forma muito mais fácil e rápida de fazer esse programa

#include <stdio.h>
#include <stdlib.h>
//Ficha3 - Exercicio2
void main ()

{
        int ni,nf;
                printf("Insira um numero inteiro : ");
                scanf("%d",∋);
                printf("\nInsira mais um numero maior que o anterior: ");
                scanf("%d",&nf);
                while(ni>nf);
                        printf("\nO primeiro numero inserido em primeiro lugar tem de ser inferior ao segundo!");
               
                if(ni%2) ni++;
                

                for(;ni<=nf;ni=ni+2)
                {
                                printf("%d\n",n);
                }
                system("pause");
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não é por nada mas acho que esta linha está mal:

printf("%d\n",n);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Um Exercicio Simples.. Basta apenas comenta-lo bem, e preceber a logica da programaçao..

#include <stdio.h>
#include <conio.h>

// Pedir 2 Numeros, e imprimir os pares, entre os numeros

main()
{
      int ni=0,nf=0, i=0;
      // Pedir numero
      printf("Escreva um numero inteiro: ");
      scanf("%d", ∋);
      // Pedir outro numero maior que Decimal 'ni'
      printf("\nEscreva um numero inteiro maior que %d: ",ni);
      scanf("%d", &nf);
      // Validaçao - Numero NI>=NF
      while(ni>=nf)
      {
            printf("\nO Numero precisa de ser maior que %d", ni);
            printf("\nEscreva outro numero: ");
            scanf("%d",&nf);
      }
      // Recebido Numero Decimal 'Ni'
      // Imrimir Pares entre numeros
      for(i=ni;i<=nf;i++)
      {
                         if(i%2==0) 
                            printf("\n%d",i);
      }
      getch();
}
      

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora