Guide for Escriu en un Array (3)


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

Ara no saps per endavant quants nombres hi ha: has de llegir nombres separats per espais fins que en \ trobis un que valgui -1 (aquest -1 marca el final i NO forma part de la llista). Després has d'accedir \ a la posició \(N\) de la llista que has construït.

Idea general:

  1. Llegeix tota la primera línia i separa-la en nombres.
  2. Recorre aquests nombres i vés-los afegint a una llista, ATURANT-TE quan trobis el -1 (aquest -1 no \ s'afegeix a la llista).
  3. Llegeix \(N\).
  4. Imprimeix la llista sencera en notació estàndard (entre claudàtors i separada per comes: [a, b, c]).
  5. Imprimeix l'element de la posició \(N\).

Paranys habituals:

  • No et quedis l'últim valor (-1): és només el marcador de final.
  • Aquest cop no fas servir un array de mida fixa: fes servir una estructura que pugui créixer (una \ llista/ArrayList), ja que no saps per endavant quants nombres hi haurà.

Pista per a Java

En Java, ArrayList pot créixer dinàmicament, i el seu mètode toString() (que crida \ automàticament System.out.println) ja mostra la llista en el format [a, b, c]:

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        StringTokenizer st = new StringTokenizer(sc.nextLine());

        List<Integer> llista = new ArrayList<>();
        while (st.hasMoreTokens()) {
            int v = Integer.parseInt(st.nextToken());
            if (v == -1) break;
            llista.add(v);
        }

        int n = Integer.parseInt(sc.nextLine().trim());

        System.out.println(llista);
        System.out.println(llista.get(n));
    }
}

Fixa't que amb ArrayList no cal saber la mida per endavant, i llista.get(n) accedeix a la posició \(N\).


Tornar al problema