1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Problemas com while do código abaixo

Quando terminei o código o while funcionava normalmente,agora não mais. Fiz o código do qual estava rodando com 2 processos com os resultados de teste: id1 = 5 e id2 = 8 resultando um tempo de espera: id1 = 4 e id2 = 5, com 3 processos do qual estava utilizando id1=1 id2=2 id3=3 e tempo de espera era id1=0 id2=1 e id3=3 e esperado era id3=5. Ai mudei um while do qual nunca mais funcionou normalmente ¬¬ Preciso muito de uma ajuda pq estou tanto tempo tentando arrumar que ja nao consigo mais encontrar falhas, desde ja agradeço, obrigado!

import javax.swing.JOptionPane;
public class pi2 {
    public static void main(String[] args) {

        int q=2;
        String aux = JOptionPane.showInputDialog(null,"Informe a quantidade de processos:");
        int qntp = Integer.parseInt(aux);
        Processo[]vetp = new Processo[qntp];
        int [] at = new int[qntp]; 
        int t=0;
        for (int i=0; i<qntp; i++){            
            Processo p = new Processo ();
            vetp[i]=p;

            aux=JOptionPane.showInputDialog(null,"Informe o ID do processo: ");
            p.setId(Integer.parseInt(aux));
            aux = JOptionPane.showInputDialog(null,"Informe o tempo de execução do processo ");
            p.setTexe(Integer.parseInt(aux)); 
            at[i]=vetp[i].getTexe();
            t= t+vetp[i].getTexe();
            }
        for (int i=0; i<vetp.length; i++){
            vetp[i].setTcpu(t);

        }
        Processo a = new Processo ();

    while (at[1]>0){
            int b=0;
            int x=0;
            int c=0;
            at[0]=at[0]-q;
            b=at[0];
            vetp[0].setTesp(vetp[0].getTesp()+0);

            if(at[0]==0){
                c=c++;
                for (int i=1;i<qntp-1;i++){
                    vetp[i].setTesp(vetp[i].getTesp()+(i*q));
                }
            }

            if (at[0]<0){
                for (int i=1;i<qntp;i++){
                    at[0]=0;
                    vetp[i].setTesp(vetp[i].getTesp()+(i*q)+(b));
                    c=c++;
                    JOptionPane.showMessageDialog(null,"teste2");
                }
             }                
            else {
                for (int i=1;i<qntp-1;i++){
                    vetp[i].setTesp(vetp[i].getTesp()+(i*q));
                    JOptionPane.showMessageDialog(null,"teste3");
                }
            }
            if ((at[qntp-1]>0)&&(qntp==2)){
            a=vetp[0];
            vetp[qntp-1]=a;
            x=at[0];
            at[qntp-1]=x;
                for (int i=0;i<qntp-2;i++){
                vetp[i]=vetp[i++];
                at[i]=at[i++];
                }
            }
            else {
                a=vetp[0];    
                vetp[0]=vetp[1];
                vetp[1]=a;
                x=at[0];
                at[0]=at[1];
                at[1]=x;
            }
            qntp=qntp-c;
        }

        for (int i=0; i<vetp.length; i++){            
            JOptionPane.showMessageDialog(null,"O Id do processo é: "+vetp[i].getId());
            JOptionPane.showMessageDialog(null,"O tempo de execução do processo é: "+vetp[i].getTexe());
            JOptionPane.showMessageDialog(null,"O tempo de cpu é: "+vetp[i].getTcpu());
            JOptionPane.showMessageDialog(null,"O tempo de espera é: "+vetp[i].getTesp());
        }
    }
}
  • Primeiramente, recomendo que utilize nomes mais claros para as variáveis. Poderia postar a entrada informada e saída esperada? Assim fica mais fácil entender qual o erro pois não entendi se o que você colocou na pergunta é o esperado ou se é o que ocorreu.

    wellington.nogueira   12 de jun de 2013
  • Não funciona mais é muito vago, quer que adivinhemos oq acontece? Qual erro? Não da erro mas não sai nunca do while? Fale oq acontece!

    Luiz Aguiar   12 de jun de 2013
  • Luiz, até rodei o programa e o mesmo executa. Provavelmente não está mais saindo o valor correto.

    wellington.nogueira   12 de jun de 2013
  • wellington.nogueira o primeiro caso com 2 processos ocorreu perfeitamente, ai utiliza o caso com 3 processos do qual deu o valor errado por causa que faltou um loop no while, ai mexi no while e deu pau pra sempre, agora nao adianta voltar pra como estava, pois continua com erro.

    Morais   12 de jun de 2013
  • Coloque a regra que deve ser seguida (tem uma regra, certo?) e a tabela indicando os valores de entrada e, se tiver, os de saída esperados. Sem isso não é possível imaginar qual o erro do loop pois, ao menos, o loop funciona (pode não apresentar o a saída correta mas termina).

    wellington.nogueira   12 de jun de 2013
Mostrar todos os 9 comentários>
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags windows ou faça a sua própria pergunta.