Guide for Còpia!


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

Et donen el nom d'un fitxer (per exemple a.txt). Has de llegir el contingut del fitxer que hi ha a \ in/a.txt i escriure'l, exactament igual, en un fitxer nou dins la carpeta out/, amb el mateix nom. \ A més, el programa ha d'escriure per pantalla el nom del fitxer.

Idea general:

  1. Llegeix el nom del fitxer des de l'entrada estàndard.
  2. Construeix la ruta d'entrada afegint-hi el prefix in/ i la ruta de sortida afegint-hi el prefix \ out/.
  3. Obre el fitxer d'entrada en mode lectura i el de sortida en mode escriptura.
  4. Copia tot el contingut, sense modificar-lo, de l'un a l'altre.
  5. Escriu per pantalla (sortida estàndard) el nom del fitxer, no la ruta sencera.

Paranys habituals:

  • La carpeta out/ ha d'existir (normalment ja hi és preparada pel judge, però comprova-ho si falla).
  • Copia el contingut tal qual, sense afegir ni treure salts de línia extra.
  • La sortida per pantalla és només el nom del fitxer (a.txt), no in/a.txt ni out/a.txt.

Pista per a Java

Amb BufferedReader i BufferedWriter pots llegir línia a línia el fitxer d'entrada i escriure-la \ al de sortida:

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        String nomFitxer = sc.nextLine().trim();

        String rutaEntrada = "in/" + nomFitxer;
        String rutaSortida = "out/" + nomFitxer;

        try (BufferedReader br = new BufferedReader(new FileReader(rutaEntrada));
             BufferedWriter bw = new BufferedWriter(new FileWriter(rutaSortida))) {
            String linia;
            while ((linia = br.readLine()) != null) {
                bw.write(linia);
                bw.newLine();
            }
        }

        System.out.println(nomFitxer);
    }
}

Tornar al problema