Informática, perguntado por mazoti209, 1 ano atrás

Dados N e dois números inteiros positivos, i e j, diferentes de 0, imprimir em ordem
crescente os N primeiros naturais que são múltiplos de i ou de j e ou de ambos. Exemplo: Para
N = 6, i = 2 e j = 3 a saída deverá ser: 0,2,3,4,6,8.

Soluções para a tarefa

Respondido por jacktorresrozirwr
0

Resposta: Na verdade com 'N' = 6, 'i'=2 e 'j'=3 o resultado tem que sair 2,3,4,6, mas enfim, vou colocar o código em Java, que é possivelmente de onde precisa responder. Espero ajudar.

Explicação:

package Classes;

import java.awt.HeadlessException;

import java.util.ArrayList;

import java.util.Collections;

import javax.swing.JOptionPane;

public class Problem06 extends Base{

   private ArrayList<Double> numberListInteger = new ArrayList<>();

   private ArrayList<Double> numberInOrder = new ArrayList<>();

   private int xNumber;

   private int iNumber;

   private int jNumber;

   private int getxNumber() {

       return xNumber;

   }

   private void setxNumber(int xNumber) {

       this.xNumber = xNumber;

   }

   public int getiNumber() {

       return iNumber;

   }

   public void setiNumber(int iNumber) {

       this.iNumber = iNumber;

   }

   public int getjNumber() {

       return jNumber;

   }

   public void setjNumber(int jNumber) {

       this.jNumber = jNumber;

   }

   

   public void solveTheProblem06() {

       setxNumber(0);

       setiNumber(0);

       setjNumber(0);

       

       catchNumbers();

       

       String result = "The limit number is: " + getxNumber() + "\n"

                     + "The parameters are: numbers (" + getiNumber() + " and " + getjNumber() + ")\n\n"

                     + "So the number are: \n";

       

       calculateNumbers(getxNumber(), getiNumber(), getjNumber());

       

       int placedNumber = 0;

           for(int i=0;i<numberListInteger.size();i++){

               result += numberListInteger.get(i);

               if((i==(numberListInteger.size()-1))){

                   result += ".\n";

               }else if(placedNumber>5){

                   result += ";\n";

                   placedNumber = 0;

               }else{

                   result += ", ";

                   placedNumber++;

               }

           }

           

       JOptionPane.showMessageDialog(null, result, getCurrentlyActivity(), JOptionPane.INFORMATION_MESSAGE);

   }

   private void catchNumbers() {

       setxNumber(catchIntNumber("Type the limit of the integers numbers: "));

       do {            

           setiNumber(catchIntNumber("Type a number to use as parameter: "));

       } while (getiNumber()>getxNumber());

       

       do {            

           setjNumber(catchIntNumber("Type a another number to use as parameter: "));

       } while (getjNumber()>getxNumber());

       

   }

   

   private int catchIntNumber(String txt){

       int result = 0;

       String text = txt;

           do {                

               try {

                   result = Integer.parseInt(JOptionPane.showInputDialog(null, text, getCurrentlyActivity(), JOptionPane.INFORMATION_MESSAGE));

               } catch (HeadlessException | NumberFormatException e) {

                   JOptionPane.showMessageDialog(null, "Type a number before press any button.", getCurrentlyActivity(), JOptionPane.ERROR_MESSAGE);

               }

           } while (result<0);

       return result;

   }

   private void calculateNumbers(int xNumber, int iNumber, int jNumber) {

       double firstParameterCounter = 0;

       double secondParameterCounter = 0;

           do{

               firstParameterCounter += iNumber;

                   if(firstParameterCounter<=xNumber){

                       numberListInteger.add(firstParameterCounter);

                   }

           }while(firstParameterCounter<xNumber);

           

           do{

               secondParameterCounter += jNumber;

                   if(secondParameterCounter<=xNumber){

                       if(!(numberListInteger.contains(secondParameterCounter))){

                           numberListInteger.add(secondParameterCounter);

                       }

                   }

                   

           }while(secondParameterCounter<xNumber);

           

           inputTheNumberInAscendingOrder();

   }

   

   private void inputTheNumberInAscendingOrder(){

       int size = numberListInteger.size();

           for(int i=0;i<size;i++){

               double value = Collections.min(numberListInteger);

               numberInOrder.add(value);

               numberListInteger.remove(value);

           }

           

           for(int i=0;i<size;i++){

               double value = numberInOrder.get(i);

               numberListInteger.add(value);

           }

       

   }

   

}

Respondido por wilgnerfnobregpec5wz
4

RESOLUÇÃO EM C

#include <stdio.h>

int main(){

int n, i, j, k = 0, l = 1; // Declaração e inicialização das variaveis

printf("Digite um numero n: ");  

scanf("%d", &n);

while(n <= 0){ // Todos os whiles dessa parte são para checar a condição imposta

 printf("\nO numero precisa ser maior que 0, Digite um numero para n: ");

 scanf("%d", &n);

}

printf("\nDigite o valor de i: ");

scanf("%d", &i);

 while(i <= 0){

 printf("\nO numero precisa ser maior que 0, Digite um numero para i: ");

 scanf("%d", &i);

}

printf("\nDigite o valor de j: ");

scanf("%d", &j);

 while(j <= 0){  

 printf("\nO numero precisa ser maior que 0, Digite um numero para j: ");

 scanf("%d", &j);

}

 while(l <= n){ // While para montar o contador

  if(k % i == 0 || k % j == 0){ // Checando os multiplos

   printf("%d  ", k);

   l = l + 1; // Aumentando o contador para que o criterio de parada seja obedecido

  }

  k = k + 1; // Para aumentar o valor de k e descobrir os multiplos.

 }

return 0;

}

Perguntas interessantes