Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida - Contar números em um intervalo e exibir em tela


João Paulo Scopel

Pergunta

Olá pessoal,

Estou com o seguinte exercício para resolver:

Faça um algoritmo em linguagem C que contenha dois números inteiros digitados na tela pelo usuário: 
a. O primeiro número marca um início;

b. O segundo número marca um fim; 


O algoritmo vai contar quantos números existem entre o início (primeira entrada) e o fim (segunda entrada). A impressão na tela do usuário deve ser realizada de duas formas: 
a. Iterativa;

b. Recursiva; 


Ao colocar no seu relatório uma imagem do seu código funcionando, coloque ele rodando utilizando como valor de inicio os 2 últimos valores do seu RU e valor final o número 99. 

Minha dificuldade está na hora de realizar a contagem dos números, que estão entre o intervalo dos números que o usuário digitou, na parte dos IF onde preciso contar a quantidade e exibir em tela:

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

int main()
{
	struct Contador {
		int n1; //VARIÁVEIS DE ENTRADA
		int n2; //VARIÁVEIS DE ENTRADA
		int cont;
		int i;
	}; struct Contador numero, *p_numero;

	p_numero = &numero;

	printf("Digite o 1 numero inteiro:"); // IMPRIME MENSAGEM NA TELA SOLICITANDO AO USUÁRIO QUE INFORME O 1 NUMERO
	scanf_s("%d", &numero.n1); // LE O NUMERO DIGITADO PELO USUARIO

	printf("\nDigite o 2 numero inteiro:"); // IMPRIME MENSAGEM NA TELA SOLICITANDO AO USUÁRIO QUE INFORME O 1 NUMERO
	scanf_s("%d", &numero.n2); // LE O NUMERO DIGITADO PELO USUARIO

	printf("\n\n");

	printf("Dado de n1 = %i\n", numero.n1);
	printf("Dado de n2 = %i\n", numero.n2);

	printf("\n\n");

	if (numero.n2 == 0) {
		printf("O segundo numero não pode ser 0."); 
	}
	if (numero.n1 >= numero.n2) {
		printf("\nInvalido. O primeiro numero deve ser menor que o segundo.\n");
		system("pause");
		
	}

	numero.i == numero.n1;

	if (numero.i < numero.n2);
			numero.cont == numero.i++;
	
	printf("\n\n");

	printf("Quantidade de numeros entre n1 e n2: %d", &numero.i);

	printf("\n\n");

	system("pause");
	return 0;
}

 

Desta forma, o programa executa. Porém ao informar qualquer número na entrada de dados, o resultado que o programa mostra é um numero que não condiz com o esperado.

Preciso ajustar este código para que ele exiba em tela QUANTOS números estão compreendidos entre os números que o usuário digitou ( nas variáveis numero.n1 e numero.n2).

Ex: Primeiro numero informado = 1

Segundo numero informado = 5

Total de números compreendidos entre 1 e 5 = 3.

Números compreendidos entre 1 e 5 = 2, 3, 4

Alguém poderia me explicar como fazer isso por gentileza e demonstrar um exemplo? Estou iniciando em C++ agora, e estou com esta dificuldade.

 

Obrigado.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Olá, a lógica é primária;

Vejamos, dados dois números inteiros quaisquer defina: quais e quantos valores existem no intervalo aberto onde o valor inicial se encontra na variável inteira inicio e o valor final na variável inteira fim.  Todos os valores do intervalo também são outros inteiros. Faça isso de duas maneiras

  1. Iterativamente, neste primeiro caso use uma instrução de repetição, mais precisamente, um loop FOR por exemplo.
  2. Recursivamente, neste último caso vai ter que implementar uma função que internamente chama a si mesma para simular uma iteração, ou os mesmo efeitos de um loop FOR.

 

Observação @João Paulo Scopel: Seu algoritmo até o momento não satisfaz nenhum dos quesitos no enunciado, pior, pois sem necessidade o usou  de estrutura de dados, o que só deixa o código ainda mais difícil de entender.

 

Update: 

Surgiu um agravante, o que acontece se o inicio é numericamente maior que o fim? Pois o intervalo ainda existiria.

Editado por britivaldo
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...