Guide for El cistell de la compra


Això és una guia per ajudar-te a començar amb aquest problema — no és la solució.
Mostra el codi per a: Consideracions generals Java 11 Python 3

Com abordar aquest problema

Has de llegir una llista de productes amb el seu nom i preu, i després dir quin és el més car, \ el més barat, i quin ocupa la posició P si els ordenessis de més car a més barat.

Idea general:

  1. Llegeix N, el nombre de productes.
  2. Llegeix les N línies següents, cadascuna amb un nom i un preu, i guarda-les en una estructura \ (per exemple una llista de parelles nom-preu).
  3. Llegeix el número P que indica la posició a consultar.
  4. Ordena la llista de productes pel preu, de més car a més barat.
  5. Un cop ordenada: el primer element és el més car, l'últim és el més barat, i l'element de la \ posició P és el que es demana.
  6. Mostra les tres línies amb el format exacte que demana l'enunciat.

Paranys habituals:

  • El preu és un número decimal: vés amb compte en llegir-lo i mostrar-lo amb el format adequat.
  • Fixa't bé si la posició P es compta des d'1 (el primer producte és la posició 1) o des de 0, \ per no desplaçar-te un lloc.
  • No confonguis "ordenar de més car a més barat" amb l'ordre habitual (ascendent): aquí cal \ ordenar en sentit invers (descendent).

Pista per a Python

Guarda cada producte com una tupla (preu, nom) i ordena la llista amb sort, indicant que \ vols l'ordre invers:

n = int(input())
productes = []  # llista de tuples (preu, nom)

for _ in range(n):
    linia = input().split()
    nom = linia[0]
    preu = float(linia[1])
    productes.append((preu, nom))

p = int(input())

# ordena de mes car a mes barat
productes.sort(key=lambda x: x[0], reverse=True)

mes_car = productes[0]
mes_barat = productes[-1]
buscat = productes[p - 1]  # compte amb l'index (comença per 1?)

print(f"EL MES CAR: {mes_car[1]} {mes_car[0]}")
print(f"EL MES BARAT: {mes_barat[1]} {mes_barat[0]}")
print(f"EL BUSCAT: {buscat[1]} {buscat[0]}")

Tornar al problema