Guide for Rebaixes el magatzem
Com abordar aquest problema
Tens una botiga amb els preus dels productes guardats en una matriu quadrada (n files x n columnes). Has de llegir-la, aplicar-hi un descompte (percentatge) i mostrar la matriu de preus rebaixats, indicant finalment quin és el preu més alt un cop aplicat el descompte.
Idea general:
- Llegeix la mida
nde la matriu. - Llegeix
n*nnombres reals (poden venir repartits en diverses línies) i desa'ls en una estructura de dues dimensions (una llista de llistes, o una matriu) de mida n x n. - Llegeix el percentatge de descompte.
- Recorre tota la matriu i calcula el preu rebaixat de cada element:
preu - preu * descompte / 100. - Mostra la matriu rebaixada mantenint el mateix format (fila per fila, valors separats per espais).
- Mentre calcules els preus rebaixats, vés guardant quin és el més alt trobat fins ara, per poder-lo mostrar a l'última línia.
Paranys habituals:
- No cal que llegeixis exactament una fila per línia d'entrada: llegeix simplement
n*nvalors seguits, independentment de com estiguin repartits en línies. - El preu més alt s'ha de calcular sobre els preus JA rebaixats, no sobre els originals.
- Fixa't en el format dels números de sortida (per exemple, si cal mostrar sempre un decimal).
Pista per a Python
Una manera còmoda de no haver de preocupar-te de com estan repartides les línies és llegir tota
l'entrada de cop i separar-la en valors (split()), i anar-los consumint un a un:
import sys
dades = sys.stdin.read().split()
pos = 0
n = int(dades[pos]); pos += 1
matriu = []
for i in range(n):
fila = [float(dades[pos + j]) for j in range(n)]
pos += n
matriu.append(fila)
descompte = float(dades[pos]); pos += 1
maxim = None
for i in range(n):
for j in range(n):
matriu[i][j] = matriu[i][j] - matriu[i][j] * descompte / 100
if maxim is None or matriu[i][j] > maxim:
maxim = matriu[i][j]
for fila in matriu:
print(" ".join(str(v) for v in fila))
print("Objecte amb major preu:", maxim)
Fixa't que primer es calculen TOTS els preus rebaixats i, a mesura que ho fem, anem actualitzant el màxim.