Ir ao conteúdo
  • Cadastre-se

C Desenvolver algoritmo em C


brandg

Posts recomendados

Olá, comecei a desenvolver um algoritmo e estou meio confuso. Alguém poderia me da uma base de como resolver o problema abaixo?

 

Consiste em calcular o grau de descontentamento de passageiros de um ônibus. O passageiros entram no ônibus, todos no mesmo ponto e dizem em qual ponto querem parar (o ponto seria a quilometragem do local de onde entram no ônibus até onde desejam desembarcar), porém o ônibus pode fazer apenas k paradas (valor limitado de paradas) 

O descontentamento será calculado assim

 (x-y)*2  sendo x é o local que cada passageiro escolheu ficar e y onde ônibus parou

O K será definido após o cálculo do descontentamento de cada passageiro

 


*pensei em definir um raio de 50 km aí o ônibus só pode ir nesse raio, definindo paradas a cada 5km, até chegar nos 50. Depois tiro a média de cada um dos vetores e o resultado é o ponto de parada 

Link para o comentário
Compartilhar em outros sites

@Alex Temnyk então, pensei em definir um raio de 50 km aí o ônibus só pode ir nesse raio, definindo paradas a cada 5km, até chegar nos 50. Depois tiro a média de cada um dos vetores e o resultado é o ponto de parada 

@Alex Temnyk não precisa resolver, é só me da uma base 

Link para o comentário
Compartilhar em outros sites

  • Moderador

Caro usuário,

 

Seja bem-vindo ao Clube do Hardware.

 

No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware.

 

Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício.

 

Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal.

 

Esperamos que compreenda.

 

Atenciosamente,

Equipe Clube do Hardware

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

30 minutos atrás, brandg disse:

Alguém poderia me da uma base de como resolver o problema abaixo?

 

4 minutos atrás, Alex Temnyk disse:

Lembrando que nosso intuito é AJUDAR, e não RESOLVER o exercício beleza? 

 

Nem tudo é código. Acho que a moderação aqui, e a comunidade em geral, deve evitar o comportamento talvez pedante de colaboradores de sites como o StackOverflow, e condenar de imediato perguntas de amplo espectro pedindo um direcionamento ou propondo uma questão conceitual.

Mesmo em vista das regras deste forum. 

 

Um questionamento sobre um algoritmo a ser implementado em uma das linguagens do forum não é, na minha opinião, off-topic ou condenável de imediato. É uma pergunta normal de ser feita por exemplo ao instrutor no caso de um aluno. Muitas vezes precisamente nisso se gastam muitas horas em reuniões e discussões intermináveis, na prática. Antes mesmo de se escrever uma única linha de código. E às vezes antes ou para definir a linguagem a ser usada para implementar isso.

 

Claro, só minha opinião em um forum público e sobre essa precisa questão por exemplo

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

13 minutos atrás, brandg disse:

@arfneto obrigado pela opinião e concordo contigo! queria apenas um direcionamento de como fazer e por onde fazer, eu implementaria o código tranquilo. É apenas uma dificuldade pois estou iniciando na programação e acho justo pedir ajuda dos que já sabem 

Nada mais justo hehe. 
É que temos bastantes casos de "solicitações de ajuda" onde esperam o código com a solução. 

Vamos ver se eu entendi. 

K = grau de descontentamento. ((destino-parada)*2)

x = Destino
y = Parada 

Certo? Logo como você disse ali, K = (x-y)*2. 
Em teoria você já resolveu o exercício na descrição. 

 

Quem define a quantidade de paradas e o intervalo entre elas, que o ónibus fará?

Como você está aprendendo, acho que ainda não viu métodos de entrada de dados. Então acho que o cálculo do descontentamento será feito um a um. Nesse caso não tem muito o que explicar, ou muito mais o que fazer. Talvez enfeitar a tela com uma mensagem, por ex: "O grau de descontentamento do passageiro é de: K" 

Um outro ponto de vista é utilizar algo mais avançado, como um array, para armazenar a variável do passageiro e seu destino, e depois utilizar de um "FOR" para percorrer esse array calculando e imprimindo o K de cada um deles. 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Alex Temnyk

agora, Alex Temnyk disse:

É que temos bastantes casos de "solicitações de ajuda" onde esperam o código com a solução.

Sim, é difícil saber o intuito do usuário quando ele apenas diz: "podem me ajudar?" e coloca o enunciado logo abaixo, e isso acontece com certa frequência.

Acho que no mínimo, deveriam dizer o que tentaram fazer, mesmo que não seja através de código... Isso serve como uma confirmação de que o usuário realmente está tentando fazer o exercício, e é mais fácil trabalhar em cima do que ele já tentou fazer :D

Link para o comentário
Compartilhar em outros sites

@brandg existem muitas formas. 


Normalmente quando estamos aprendendo, não nos preocupamos com isso, afinal, o "programa" será rodado no próprio framework, onde em algum lugar da tela, ou até no próprio código, a gente atribui um valor para as variáveis. No seu caso, x, y, k. 

 

exemplo:
var x = 4
var y = 2

k=(x-y)*2
print ("o cabrom está chateado assim:" + k + " putasso") 


Mas você poderia ter uma Janelinha que seria a primeira coisa a aparecer, tipo pop-up mais ou menos assim:
"Insira os dados da viagem: Nome do passageiro: (caso tenha mais que um. Lembra aquele array que falei?)
                                             Destino: (aqui é atribuído um valor para a var X) "
Essa mensagem pode parecer um determinado número de vezes, ou ficar aparecendo sem parar. 

Com base nos dados de ENTRADA, suas variáveis terão um VALOR, e a conta se K será possível.

Enfim...Método de entrada é "como suas variáveis vão receber um valor?" 
 

Link para o comentário
Compartilhar em outros sites

@Alex Temnyk

47 minutos atrás, Alex Temnyk disse:

Um outro ponto de vista é utilizar algo mais avançado, como um array, para armazenar a variável do passageiro e seu destino, e depois utilizar de um "FOR" para percorrer esse array calculando e imprimindo o K de cada um deles.

O enunciado não diz quantos passageiros são no total, e ele também não diz para pedir essa informação ao usuário, então talvez isso seria inviável.

 

@brandg Você poderia usar um loop para pedir o local que o passageiro escolheu ficar e o local onde o ônibus parou, e já calcular o descontentamento aí e mostrar na tela.

No final, o teste do repeteco: perguntar ao usuário se ele quer continuar depois de já ter tudo calculado.

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Alex Temnyk disse:

Como você está aprendendo, acho que ainda não viu métodos de entrada de dados. Então acho que o cálculo do descontentamento será feito um a um. Nesse caso não tem muito o que explicar, ou muito mais o que fazer. Talvez enfeitar a tela com uma mensagem, por ex: "O grau de descontentamento do passageiro é de: K" 

 

🤔 não há razão para usar uma tela. Recomendo muito fugir disso. Só precisa saber o tamanho da amostra. Pode simular os dados ou ler de um arquivo uma tabela de passageiros. Algo bem simples
 

3
12
4
4
12
12
5
6

 

E entender que cada linha é um passageiro e cada número é a distância de onde ele quer descer, talvez em pontos ou unidades de distância, como meio km. Acabou o arquivo acabaram os passageiros. O nome do arquivo pode ser um argumento da linha de comando, ou mesmo as distâncias, como opção prática.

 

Considere: 

 

O enunciado não é assim muito bom e o modelo não tem muito a ver com a realidade e acho que por isso é mais difícil de implementar algo.


O que precisa fazer aqui é definir um mínimo para a soma de f(x,y) = (x-y)/2 para um grupo S de passageiros.

 

Então precisa ajustar o modelo para poder calcular.

 

Primeiro a granularidade. Talvez possa considerar a distância entre os pontos variando em .5 km. Ou 1 km. Algo razoável e é só um parâmetro afinal. E o total S de passageiros variando até a lotação do onibus do modelo, tipo 25 ou 40 passageiros. O total K de paradas será definido claro pelo máximo de S paradas, onde terá o melhor resultado.

 

No mundo real as paradas K ocorrem a uma mesma distância, a distância entre os conhecidos pontos de onibus.

 

Nesse modelo não há qualquer restrição para k?

 

Qual o melhor resultado? K = S claro, porque aí a soma vai dar zero e todos os S passageiros ficam felizes. Porque? Porque o onibus parou exatamente no destino de cada um. Mas pode até ser 1 se todos os que embarcaram querem ir ao mesmo lugar. Pode ter embarcado apenas 1 por exemplo e seria então trivial

 

Isso se a mesma granularidade para os pontos se aplicar o local esperado de desembarque de cada passageiro e não à casinha de cada um...

 

Qual o pior resultado? k = 1 com um k escolhido para maximizar o descontentamento: todo mundo desce na P Q P

 

Não tem mais nenhum dado no enunciado?

 

Entendeu o que precisa considerar? Vai variar k de 1 até S a partir dos dados de embarque. só isso. E verificar o melhor caso.

 

Todos os passageiros embarcam juntos na primeira parada. E nesse ponto precisa simular os destinos de cada um. E fazer as contas. E tabelar os dados. 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

To com esse mesmo problema, porém não entendi.

 

A pessoa precisa digitar como entrada -- (X1, X2, X3, X4, etc... )= onde será a parada dos passageiros e K =  quantas paradas ônibus ira fazer.

 

Não estou conseguindo iniciar esse problema... Alguém poderia me ajudar????

 

 

Link para o comentário
Compartilhar em outros sites

4 horas atrás, LittleCleiton disse:

To com esse mesmo problema, porém não entendi.

 

A pessoa precisa digitar como entrada -- (X1, X2, X3, X4, etc... )= onde será a parada dos passageiros e K =  quantas paradas ônibus ira fazer.

 

Não estou conseguindo iniciar esse problema... Alguém poderia me ajudar????

 

 

 

Você leu o que eu expliquei? Entendeu sobre a pior e a melhor situação? Entendeu porque o modelo do enunciado não é assim muito bom em apresentar um modelo? Entendeu que todos embarcam ao mesmo e que então já pode calcular os índices de descontentamento enquanto varia K, o número de paradas?

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@arfneto eu li sim, porém não conseguir entender muito bem, talvez pelo meu nível muito basico.

Desculpa a ignorância, mas conforme voce explicou ali, esse programa teria como saida os 2 melhores pontos de parada e também a soma do grau de descontentamento de todos os passageiros?

 

Link para o comentário
Compartilhar em outros sites

8 minutos atrás, LittleCleiton disse:

esse programa teria como saida os 2 melhores pontos de parada e também a soma do grau de descontentamento de todos os passageiros

 

Eu nada disse sobre DOIS pontos.

 

Eu disse, por outro lado
 

Em 10/12/2020 às 13:08, arfneto disse:

Qual o melhor resultado? K = S claro, porque aí a soma vai dar zero e todos os S passageiros ficam felizes. Porque? Porque o onibus parou exatamente no destino de cada um. Mas pode até ser 1 se todos os que embarcaram querem ir ao mesmo lugar. Pode ter embarcado apenas 1 por exemplo e seria então trivial

 

Isso se a mesma granularidade para os pontos se aplicar o local esperado de desembarque de cada passageiro e não à casinha de cada um...

 

Qual o pior resultado? k = 1 com um k escolhido para maximizar o descontentamento: todo mundo desce na P Q P

 

Eu disse também que esse modelo é fraco. Claro, posso ser eu o fraco que não entendeu o modelo :) anyway...

 

Granularidade
 

Sim, sobre isso eu falei. Num modelo mais acertado esse seria o valor da menor distância entre as paradas. E a luta do transporte público é essa: se você aumentar a distância o transporte é mais eficiente. Mas os usuários tem que andar mais até o ponto. E no geral o usuário é egoísta e tem dificuldade em entender o lado coletivo de algo. E também é imediatista e muitas vezes não entende que se tem mais pontos tem mais paradas e vai ficar pior para todos. E esse índice de descontentamento acaba não sendo assim racional. Assim muitos governantes acabam eleitos, por exemplo.

 

A luta

 

Em geral se tentam soluções híbridas. Moro numa cidade grande, enorme, e aqui tem casos de linhas expressas num mesmo percurso de outras, mas que param só em alguns pontos, as tais linhas expressas. E tem soluções de "comboio" em que as linhas tem pontos próximos mas não param em todos, de modo a diminuir a interferência ENTRE os onibus, usando pontos numerados para certas linhas apenas. E tem os corredores exclusivos, as paradas no lado central das ruas, os onibus com piso baixo, as vias de onibus elevadas, os onibus articulados, os terminais periféricos. Os caras tentam de tudo.

 

O modelo

 

Então a ideia aqui é --- ou deve ser --- variar o número de paradas e acompanhar a SOMA dos índices de descontentamento e procurar um meio termo.

O mínimo de paradas claro é 1: seria o caso de uma linha expressa terminal a terminal. O descontentamento vai depender linearmente da distância de onde os caras queriam descer em relação ao terminal de chegada. Mas o consumo e os tempos de viagem são os mínimos ;) 

O máximo é claro S, onde cada um dos S passageiros quer descer em um lugar diferente mas o onibus para onde for melhor para eles. Provavelmente um pesadelo para todos, mas entenda como um modelo pode ser ruim: o descontentamento não pode depender só daquela fórmula ingênua: se parar toda hora todo mundo vai ficar p.

Um outro conceito é o de POI, pontos de interesse: nem todas as possíveis paradas são iguais. E uma parada em frente ao hospital a 1/3 do percurso pode deixar 2/3 de todo mundo feliz. 

O mundo é mais complicado.

 

Uma possibilidade de começar logo é testar k como em unidades de 400m ou algo assim razoável. E simplesmente fazer as contas. Abra um mapa de onibus no GPS e veja a mecânica por exemplo. São N paradas até o destino de cada um. Isso vai gerar um número na fórmula Como todos embarcar juntos vai ter uma Soma. E é isso.

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@arfneto peço desculpas, eu me expressei mal...

O que eu queria dizer é que o problema tem que me dar os melhores pontos que o onibus deve parar, para que haja o mínimo de descontentamento possível...

 

por exemplo:

 

a entrada precisa ter :

-onde cada passageiro deseja parar (ex: 2, 10, 12)

-quantas paradas o onibus irá fazer (ex: 2)

 

passageiro 1 ---- deseja parar no ponto 2

passageiro 2 ---- deseja parar no ponto 10

passageiro 3 ---- deseja parar no ponto 12

 

(paradas) k=2

 

saída do programa 

-Quais os melhores pontos o onibus deve parar para que haja o menor descontentamento (referente ao exemplo os pontos seriam 2 e 11)

 

-Qual a soma do grau de descontentamento (nesse caso seria 2)

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!