El termómetro de la base
En una base antártica el termómetro se lee cada hora y el número se anota entero, en grados. Al cerrar el mes la comisión científica no quiere la lista de lecturas, que no dice nada: quiere saber cuántas horas estuvo la base a cada temperatura, para poner ese invierno al lado del anterior.
Qué hay que hacer
Lee todas las lecturas del mes y escribe, por cada temperatura que aparezca al menos una vez, cuántas veces se midió. Las temperaturas salen de la más baja a la más alta. Una temperatura que no se midió nunca no se escribe: no hay líneas terminadas en cero.
El archivo que te dan
La primera línea trae n, cuántas lecturas hay, con 1 <= n <= 5000. Después vienen las n lecturas, enteros entre -90 y 60 —las de bajo cero llevan el signo menos delante— separados por espacios o saltos de línea.
El que tienes que escribir
Una línea por cada temperatura distinta, de menor a mayor. Cada línea trae la temperatura, un espacio, y cuántas veces se midió. Nada más: ni cabecera, ni cuántas temperaturas distintas hubo, ni el total de lecturas.
Los casos que puedes ver
Hay 6 en total. Los demás se descubren fallando, como en el ramo.
el ejemplo del enunciado, con bajo cero y repetidos
entrada
6 -3 -3 0 5 0 -3
salida
-3 3 0 2 5 1
cuatro temperaturas distintas: todas cuentan una vez
entrada
4 2 -7 15 0
salida
-7 1 0 1 2 1 15 1
Tu programa
Recibe las dos rutas por argv, igual que en el ramo. Lo que escribas con fprintf es lo que se compara.
#include <stdio.h>#include <stdlib.h>int main(int argc, char **argv) {/* Sin las dos rutas no hay nada que abrir. El corrector siempre las pasa. */if (argc < 3) {fprintf(stderr, "uso: %s entrada salida\n", argv[0]);return 1;}FILE *entrada = fopen(argv[1], "r");FILE *salida = fopen(argv[2], "w");/* Falta: leer cuántas lecturas trae el mes y guardarlas. *//* Falta: conseguir que las lecturas iguales queden juntas. *//* Falta: recorrerlas contando cuántas hay de cada una. *//* Falta: escribir cada temperatura con su cuenta, de menor a mayor. */fclose(entrada);fclose(salida);return 0;}