Entrar com um número inteiro e localizar a posição de acordo com o exemplo abaixo... Estou utilizando apenas uma formula.. não tabela

Boa Tarde! Pessoal… Primeiramente gostaria de agradecer pelas digas até agora… Sou iniciante… mas vou tentar explicar a lógica usando essa tabela…

001 005 7 11 13 17 19… 043… vai até 059 e pula pra 61
061 065 67 71 … … … 103 119
121 125
181 185

ou
001 002… até 60…e retorna para 61… na coluna 1…
061 062
121 122

… continua somando mas 60… em cada coluna…

Exemplo: o numero 121 tem 3 dígitos 0- 1- 2 e está localizado na coluna 1 usando a formula…ok … o sistema me retorna variável i = 1…

O número 125 está localizado na terceira linha, segunda coluna = 5… esse programinha me retorna isso… i= 5… é o que eu quero… já testei com vários números até 8 dígitos e ele resolve…

mas se eu entrar com o numero 9 ou 10 dígitos como esse, 1581000583 que está localizado na coluna começado em 43 … de acordo com minha lógica… eu preciso encontrar onde ele inicia… no caso 43 …no while entrando com o numero 1581000583 o resultado sai i = 13 calculando o resultado não é exato. tem casas decimas… no while ((b-i)/k%2!=0). mais o resultado de “i” deveria ser (43) e p= 26350009 . — utilizando a formula p= (b-i)/k … .a variavel “i” tem que soma +10 até chegar a 43… que é o resultado que dividindo chego ao numero inteiro…
se eu entrar com o numero nesse programinha 3643 ele retorna 43… No caso o programa está atendendo … ok
.

Obrigado!

package encontrarposicao;

import java.util.Scanner;


public class EncontrarPosicao {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
       Scanner scanner = new Scanner(System.in);
        System.out.println("Digite um numero:");
        int b = scanner.nextInt();
 
         
     
     char c;
     String a;
     
     a = String.valueOf(b);
       // System.out.println("Posiçãoes* - " + a.length());
    char   posicao=(char) (a.length()-1);
        
          int k = 60;
            c = a.charAt(posicao);
            float i = Character.getNumericValue(c);
      long p = 0  ;
            System.out.println("Numero encontrado:-->" +  "-->" +  i );
             
                for (int j = 1; j < 4; j++){
                    
                    if (i == 3 || i == 9){
                        i+=10;
                    } 
                    while ((b-i)/k%2!=0){
                  
                   i+=10;
                   System.out.println("Numero encontrado:III"  + "-->I" +  i );
                       } if (i>k){
                        i= i-k;
                    }
                                 }
               
               

              p=(long) ((b-i)/k);
             
              
            
                 
 System.out.println("Numero encontrado:-->" + p + "-->" +  i + "=" + "-->" + (a.length()-1)  ); 
                            
    
                                 }
    }

Já agradeço a ajuda…

Desculpe, mas não entendi nada, poderia detalhar melhor seu problema?

2 curtidas

Alterei o exemplo… e adicionei a formula… Obrigado!

Alterei o exemplo… e adicionei a formula… Obrigado!

Poderia utilizar uma linguagem um pouco mais clara?
Um tanto constrangedor dizer isso, mas está difícil entender o seu português…

1 curtida

Uma ajuda ai pessoal … Obrigado!

Encontrei a resposta… Está nos tipos numéricos… float i para double… Obrigado!