Aeroporto

34 respostas
J

a tarefa que eu não estou conseguindo fazer é a seguinte :cry:

Como programador recém contratado pela ATAI você foi encarregado de escrever um programa para determinar, a partir de uma listagem de aeroportos e vôos, qual aeroporto possui maior probabilidade de congestionamento no futuro. Como medida da probabilidade de congestionamento será utilizado neste estudo o número total de vôos que chegam ou que partem de cada aeroporto.
Entrada

A entrada é composta de vários conjuntos de teste. A primeira linha de um conjunto de teste contém dois números inteiros A e V, que indicam respectivamente o número de aeroportos e o número de vôos. Os aeroportos são identificados por inteiros de 1 a A. As V linhas seguintes contêm cada uma a informação de um vôo, representada por um par de números inteiros positivos X e Y, indicando que há um vôo do aeroporto X para o aeroporto Y. O final da entrada é indicado quando A = V = 0.
Exemplo de Entrada

5 7
1 3
2 1
3 2
3 4
4 5
3 5
2 5
3 5
1 3
1 2
3 2
1 2
2 1
0 0

Saída

Para cada conjunto de teste da entrada seu programa deve produzir três linhas. A primeira linha identifica o conjunto de teste, no formato “Teste n”, onde n é numerado a partir de 1. A segunda linha deve conter o identificador do aeroporto que possui maior tráfego aéreo. Caso mais de um aeroporto possua este valor máximo, você deve listar todos estes aeroportos, em ordem crescente de identificação, e separados por pelo menos um espaço em branco. A terceira linha deve ser deixada em branco. A grafia mostrada no Exemplo de Saída, abaixo, deve ser seguida rigorosamente.
Exemplo de Saída

Teste 1
3

Teste 2
1 2

(esta saída corresponde ao exemplo de entrada acima)
Restrições

0 ≤ A ≤ 100 (A = 0 apenas para indicar o fim da entrada)
0 ≤ V ≤ 10000 (V = 0 apenas para indicar o fim da entrada)
1 ≤ X ≤ A
1 ≤ Y ≤ A
X ≠ Y

34 Respostas

E

Pergunta boba número um - como você resolveria esse problema à mão, sem computador, só com lápis e papel? Pelo menos tente desenhar uma figura e achar a solução para esse conjunto de dados que apareceu no problema. Do desenho dessa figura, dá para você tentar bolar uma estrutura de dados adequada para resolver o problema.

M

você criou dois tópicos para o mesmo problema, em foruns diferentes, ambos com uns titulozinhos que não ajudam em nada, não postou nada que indique que tentou resolver mas pedindo ajuda… parece até que você pegou tudo o que indicam de não fazer e resolver testar… incrível.

D

eu tenho esta solução em C… voce ker?
ou faz ou paga… se eu fosse voce, faria…
este é o problema 818. do site br.spoj.pl

C

O que você consegui fazer até o momento ?
Flus.

E

Affff… agora não faço mais por 100 reais o seu exercício… só faço por 1.000 reais. kkkkkkk

Agora falando sério!
Porque vc não tenta fazer pelo menos um pouquinho e posta o seu código aqui.
A gente promete que se vc tentar um pouco, a ajuda sai de graça e vc ainda aprende!

D

exatamente… quando eu comecei no spoj eu nem copiei e colei o problema. Perguntei como poderia fazer tal problema pois nao estava fazendo no tempo exigido ( as soluções também sao testadas por processamento exigido) me responderam que era melhor eu tentar sozinho mas estudando isso isso e aquilo…
Hoje tenho mais de 70 problemas resolvidos…
(E ainda tem gente que reclama do GUJ)
VLW pelo incentivo

R

Caramba ele acha que alguem vai dar de graça pra vc…
meu veio este trampo é para voce fazer…pois se passaram é pq vc sabe.

vai usar uma pouco de Probalidade certo! faculdade tinha isto hahah

M

RiQuInHo_$_$:
Caramba ele acha que alguem vai dar de graça pra vc…
meu veio este trampo é para voce fazer…pois se passaram é pq vc sabe.

vai usar uma pouco de Probalidade certo! faculdade tinha isto hahah

do jeito que o guj anda se ele criar um outro perfil, com nome femenino, foto de alguma modelo que tenha pego no google, pedir fazendo um charminho e evitar dar a entender esse “faz pra mim” totalmente cara de pau que fez agora… as chances de ele conseguir mais de um idiota que faça para ele são boas…

é… melhor eu parar de dar ideias, mas não podia deixar de colocar o desabafo…

D

kkkkkkkkkkk isso é verdade

R

maior_abandonado:
RiQuInHo_$_$:
Caramba ele acha que alguem vai dar de graça pra vc…
meu veio este trampo é para voce fazer…pois se passaram é pq vc sabe.

vai usar uma pouco de Probalidade certo! faculdade tinha isto hahah

do jeito que o guj anda se ele criar um outro perfil, com nome femenino, foto de alguma modelo que tenha pego no google, pedir fazendo um charminho e evitar dar a entender esse “faz pra mim” totalmente cara de pau que fez agora… as chances de ele conseguir mais de um idiota que faça para ele são boas…

é… melhor eu parar de dar ideias, mas não podia deixar de colocar o desabafo…

perfeita sugestão para ele haha…

fora que o cara não percebeu quando um moderador descreveu no topico enterioi bloqueado para não usar certas palavras, Como POR FAVOR e agora ele usou o URGENTE é brincadeira, e tbm o que tem haver Aeroporto em um topico me fala , pq n tem como entender quando alguem leia isto.

http://www.guj.com.br/java/270730-por-favor

D

rs é o nome do problema kkk realmente nao ficou definido mas enfim… errar todo mundo erra… nao precisa matar tb neh foi só um ctrl+c ctrl+v

E

O CTRL+C e CTRL+V não mata, mas dá reprovação em banca, sem direito a choro, rsrsrs

Mas é complicado… você acaba fazendo um exercício pra uma pessoa folgada, e depois ele vai lá, pega o diploma e queima o mercado.

E eu acho que ele desistiu de pedir, porque eu não vi ele postando mais nada.

S

Cara tem que ser que nem eu, não sei lá aquelas coisas mas tento fazer e encher o pessoal de perguntas, pelo menos de um jeito ou de outro é um aprendizado e o pessoal não reclama de responder minhas perguntas. E é tudo FREE! :stuck_out_tongue:

D

igual o use a cabeça com aquelas partes “não existem perguntas idiotas”

J

CyberX:
O que você consegui fazer até o momento ?
Flus.

Voltando aqui eu tomei um pouco de vergonha na cara e voltei a fazer, isso é o que eu fix ate agora

package tratamento_excessao;

import java.util.Scanner;

public class Tratamento_excessao {
    // ideia: colocar um la?? de repeti??o  while pa
    public static int teste(int c, int v) {
        if ((c >= 0) && (c <= v)) {
            return 1;
        } else {
            return 0;
        }
    }

    public static void main(String[] args) {
        // A --> aeroportos numero dos aeroporto o numero do aeroporto nunca pode ser maior do que 5
        // V --> voos numero de voos
        Scanner input = new Scanner(System.in);
        int A = 0, V = 0;

        do { // inicio do la?o principal
            do {  //la?o de repeti??o digitar o numero de aeroportos
                System.out.print("Digite o numero de aeroportos: ");
                A = input.nextInt();
            } while (teste(A, 100) == 0);

            do {
                System.out.print("Digite a quantidade de voos: ");
                V = input.nextInt();
            } while (teste(V, 10000) == 0);

            if (A + V > 0) {
                int x[] = new int[V]; // aeroportos origem
                int y[] = new int[V]; // aeroportos destino

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

                    do {
                        System.out.print("Digite o areroporto de ORIGEM: ");
                        x[i] = input.nextInt();
                    } while (teste(x[i], A) == 0);

                    do {
                        System.out.print("Digite o areroporto de DESTINO: ");
                        y[i] = input.nextInt();
                    } while (teste(y[i], A) == 0);
                    if (x[i] > A || y[i] > A) {
                        System.out.printf("Erro! ");
                        break;
                    } 

                }  // fim do for
            }
        } while (A + V > 0);
       // System.out.printf("Teste 1: \n teste");

    }
}

quero saber como dizer o aeroporto que tem maior fluxo. pensei em usar um array multidimencional, mas na realidade não sei como fazer!

Ajuda ai pessoal

D

Opa agora saiu um código… porem…
voce nao acha que esta complicando as coisas?
Funcionar vai funcionar se voce continuar caminhando neste sentido… porém nao vai dar tempo pra fazer todos os calculos.

Para passar em um teste do spoj, precisa ser o mais simples possivel.
Não lembro direito do problema mas acho que é só pra mostrar o aeroporto que mais teve acesso.

quantos aeroportos sao? 200?300?
ok, e se voce criar um vetor deste tamanho?

quando voce ler que foi no aeroporto 150… voce vai la no vetor na posição 150 e da um ++.

tipo aeroportos[150]+=1;

oque acha desta solução?
o resto é com voce, vai por este lado que voce nao vai perder noite de sono kkk

V

ERRO.

V

Bom vamos lá, não é nada dificel.

0 ≤ A ≤ 100 (A = 0 apenas para indicar o fim da entrada)
0 ≤ V ≤ 10000 (V = 0 apenas para indicar o fim da entrada)
1 ≤ X ≤ A
1 ≤ Y ≤ A
X ≠ Y

Estes são as possibilidades de argumentos.

Eu fiz em C++, por que o Java é muito lento pra calcular as coisas.
Primeiro, a probabilidade de um aeroporto ter congestionamento é o total de vôos que chegam ou que partem de cada aeroporto, de acordo com o problema, ou seja, voce tem que somar todas as incidências de cada saida/chegada dos aeroportos. Depois voce pega o maior valor (o que esta mais congestionado), e verificar quais valores são iguais a este maior valor e manda imprimir.

Simples assim.

D

… assim é mais facil neh? eu aqui falando pra somar e tal… ir mais simples…
agora é só ctrl+c ctrl +v \o/

V

A detalhe, se você utilizar de Ctrol C + Ctrol V, você é um fraco.

Este ai é somente pra voce se basear e fazer o seu, quero ver dps tua solucao em Java.

D

(desculpe se voce se ofendeu mas dar um codigo fonte pode ser em whitespace cara… atrapalha a evolução de quem esta tentando)
^^ acho que nao vai passar em Java no spoj

V

Vc tem razão, se ele ja nao copiou, eu ja passei pra vc passo a passo o que tem que fazer, etremamente facil, seguindo a explicação.

Obs: denisspitfire, eu estou tomando wrong answer num outro problema aqui do SPOJ, vou criar o topico do problema aqui no guj…

J

O que vocês Acham deste programa?

package JavaApplication1;

import java.util.Scanner;
public class JavaApplication1 {

    /**
     * @param args the command line arguments
     */
    public static int teste(int n, int limite)
    {
        if ((n>=1) && (n<=limite))
        {
        return 1; // OK
        }
        else
        {
        return 0; // não OK
        }
    }
    
    public static void main(String[] args) 
    {
        Scanner input=new Scanner (System.in);

        int a;//aeroporto
        int v;// voo

        System.out.print("digite o numero de aeroportos: ");
        a = input.nextInt();
        System.out.print("digite o numero de Voos: ");
        v = input.nextInt();

        int[] x = new int[v];//saida
        int[] y = new int[v];//destino

        do
        {
        do
        {
        System.out.print("digite o numero de aeroportos: ");
        a = input.nextInt();
        System.out.print("digite o numero de voos: ");
        v = input.nextInt();
        }while (((a == 0) && (v != 0)) || ((a != 0) && (v == 0)));//se os dois forem 0 sai

        if ((teste(a,100) == 0) || (teste(v,10000) == 0))
        {
        System.out.print("digite um valor entre 1 e 100 para o Nº de aeroportos!\n");
        System.out.print("digite um valor entre 1 e 10000 para o Nº de voos!\n");

        System.out.print("digite o numero de aeroportos: ");
        a = input.nextInt();
        System.out.print("digite o numero de voos: ");
        v = input.nextInt();
        }
        else
        {
        for (int z=0;z < v;z++)//grava x
        {
        do
        {
        System.out.printf("\nDigite o aeroporto de saida (esse numero deve estar entre 1 e %d): ", a);
        x[z] = input.nextInt();
        }while (teste(x[z], v) == 0);

        do
        {
        System.out.printf("\nDigite o aeroporto de chegada (esse numero deve estar entre 1 e %d): ", a);
        y[z] = input.nextInt();
        }while (teste(x[z], v) == 0);
        }//fecha preenchimento
        }
        System.out.print("digite o numero de aeroportos: ");
        a = input.nextInt();
        System.out.print("digite o numero de voos: ");
        v = input.nextInt();
        }while (( a != 0) && (v != 0));

        for (int i = 0; i < x.length; i++) //escreve x
        {
            System.out.printf("%d\t",x[i], " - %d\t",y[i]);
        }
    }
}
D

tira todo o começo por isso aqui

if(a==0&&b==0) break;
outra coisa segue  esse raciocinio

cria vetor;

leu quantos voos teriam;

enquanto nao terminar os voos{

leu a;

leu b;

vetor na pos[a]+=1;

vetor na pos[b]+=1;

}
J

O pragrama está promto em parte, preciso de ajuda para ordenar, tenho que ordenar qual aeroporto que tem mais voos

import java.util.Scanner;
public class Prova3 {

    /**
     * @param args the command line arguments
     */
    public static int teste(int n, int limite)
    {
        if ((n>=1) && (n<=limite))
        {
        return 1; // OK
        }
        else
        {
        return 0; // não OK
        }
    }
    
    public static void main(String[] args) 
    {
        Scanner input = new Scanner(System.in);
        
        System.out.print("Digite o número de aeroportos: ");
        int a = input.nextInt();

        System.out.print("Digite o número de voos: ");
        int v = input.nextInt();
        int[] y = new int[v];
        int[] x = new int[v];
        int i;


        /*for (i = 0;i < v;i++)//grava x
        {
            do
            {
                System.out.printf("\nDigite o aeroporto de saida (esse numero deve estar entre 1 e %d): ", a);
                x[i] = input.nextInt();
            }while (teste(x[i], (v-1)) == 0);
            do
            {
                System.out.printf("\nDigite o aeroporto de chegada (esse numero deve estar entre 1 e %d): ", a);
                y[i] = input.nextInt();
            }while (teste(x[i], (v-1)) == 0);
        }//fecha preenchimento
        */
        for (i = 0; i < v; i++) {
            do 
            {
                System.out.printf("Digite o aeroporto de origem(esse numero deve estar entre 1 e %d): ", a);
                x[i] = input.nextInt();
            } while ((x[i] <= 0) || (x[i] > a));
            do 
            {
                System.out.printf("Digite o aeroporto de destino(esse numero deve estar entre 1 e %d): ", a);
                y[i] = input.nextInt();
            } while ((y[i] <= 0) || (y[i] > a));
        }

        System.out.println();
        for (i = 0; i < v; i++) 
        {
            System.out.printf("%d - %d \n", x[i], y[i]);
        }


    }
}
D
  1. creio que quando voce “ordenar” ele nao vai passar por tempo… voce quer resolver o problema ou passar no teste do spoj? se for pra passar esquece só pelo fato de voce ler por scan (scan é lerdo d+ para o fresco spoj)

  2. nao precisa ordenar… só precisa saber qual é o maior… percorrer o vetor guardando o maior valor nao é o bastante?

D

vamos la cara… primeiro voce vai ler os dados e só…
vai pegar quantos aeroportos e quantos voos serao feitos. Mostra ae o codigo depois

J

ta, isso eu ja fiz, tenho quemostrar apenas o que recebeu mais voos, ou seja, qual x ou y que foi citado mais vezes… isso que nao sei fazer , pode me dar uma mao?

D

assim ó

while (scanf("%d %d", &a, &v), (a > 0 &&  v > 0)){
//código
}

só para ficar mais facil de entender. No caso esta em C
e se eu fizer assim.

int maiorValor = 0;
faz um for percorrendo o vetor até o n de aeroportos.
sempre que vc achar um numero maior que o maiorValor, substitua.

( pow e depois?? preciso verificar quem é o aeroporto nao qual o maior valor)

exato!

voce vai iterar novamente tudo que for igual a maiorValor voce imprime.
(fica mais rapido assim)

D

e ai cara entendeu? conseguiu?

J

Sim sim, muito obrigado

D

viu se passa no spoj? podemos otimizar… mas acho que só em C vai passar ou C++

E

Afff… tou tentando submeter os códigos nesse SPOJ, mas não sei as regras desse treco… O teste SOMA (que é super fácil) dá resultado incorreto. afffff

D

manda o algoritmo só pra vermos a ideia que voce esta submetendo. Se tiver uma gordurinha minuscula ja era… o código tem que ser anorexo kkkkkk

Criado 18 de abril de 2012
Ultima resposta 26 de abr. de 2012
Respostas 34
Participantes 9