Tablica z pliku txt

0

to jest tresc zadania:

Napisać program, który z pliku c:\Temp\tab.txt wczytuje liczby całkowite i tworzy tablicę, zawierającą te liczby .
W tak zainicjowanej tablicy program znajduje wartość maksymalną oraz wszystkie indeksy w tablicy gdzie taka wartość się znajduje.

Program wypisuje na konsolę:
w pierwszym wierszu - wszystkie elementy tablicy, rozdzielone spacjami
w drugim wierszu - wartość maksymalną,
w trzecim wierszu - indeksy tablicy gdzie ta wartość się znajduje.

a to moj kod ktory jest błedny ;/ czy moglby ktos poprawic i zrobic tego czego nie umialem, a ja sobie to przesledze? BARDZOOO Dziękuje.

package Zad42;
 
import java.io.*;
import java.util.*;
 
 
public class Zad2 {
       
       
  
       
       
        public static void main(String[] args) throws FileNotFoundException{
               
               
                 
                Scanner scan = new Scanner(new File("c:/Temp/tab.txt"));
               
       
       		  
     		    
   
               
                    // Utworzenie obiektu klasy ArrayList
               
                    ArrayList liczby = new ArrayList();
                    while (scan.hasNextLine()) {
                      String cyfry = scan.nextLine();
                     
                      // dodanie kolejnego elementu do listy
                     
                      liczby.add(cyfry);
                    }
                    // wyprowadzenie zawartosci listy
                    for (int i = 0; i < liczby.size(); i++)
                      System.out.println(liczby.get(i));
       
                 
                   
                   
                   
                    //maksymalna pozycja
                   
                   
                    
                    int maxik = tablica1[0];
                        for (int i=0; i<tablica1.length;i++){
                                if (tablica1[i]>maxik){
                                maxik=tablica1[i];
                               
                               
                                }}
 
                                System.out.println(maxik);
                               
                               
                           
                                 
                                 
                                 
                                 
                       
                                // indeksy tablicy gdzie ta wartość sie znajduje
                               
                              
                                }
                               
                       
                               
                               
                               
                               
                   
                                }
                   
                   

naprawdę nikt nie wie jak mi pomóc...?

0

A gdzie tworzysz tą zmienną tablica1?

0

import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class zad2 {

public static void main(String[] args) {
    String fname = System.getProperty("user.home") + "/iter.txt";

    File plik = new File(fname);

    try {
        Scanner scan = new Scanner(plik);
        List<Integer> list = new ArrayList<Integer>();
        while (scan.hasNextLine()) {
            int firm = scan.nextInt();
            list.add(firm);
        }

        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i) + " ");
        }
        System.out.println();

        Integer max = Collections.max(list);
        System.out.println(max);

        int count = 0;
        for (Integer liczba : list) {
            if (liczba.equals(max)) {
                System.out.print(count + " ");
            }
            count++;
        }
    } catch (Exception exc) {
        System.out.println("***");
    }
}

}

0

@kxxn:

Napisać program, który z pliku c:\Temp\tab.txt wczytuje liczby całkowite i tworzy tablicę, zawierającą te liczby .

Masz trzy wyjścia:

  1. Liczysz ile masz liczb w pliku i na tej podstawie tworzysz docelowy rozmiar tablicy.
  2. Tworzysz sobie jakąś wielką tablicę licząc, że się nie przekręci.
  3. Tworzysz tablicę np. o 100 elementach i dodajesz kolejne liczby. Jak będziesz miał do dodania więcej niż 100, to na 101 pozycji tworzysz sobie nową tablicę na np. 200 elementów, kopiujesz poprzednie elementy z tablicy i dalej zapisujesz do nowej. (takie to średnie)

Moim zdaniem najlepiej (aczkolwiek nie najwydajniej zrobić punkt 1).

W tak zainicjowanej tablicy program znajduje wartość maksymalną oraz wszystkie indeksy w tablicy gdzie taka wartość się znajduje.

a) Można np. zrobić coś takiego OptionalInt maxNumber = Arrays.stream(numbers).max(); i masz maksymalną wartość.
b) Można np. posortować tablicę (Arrays.sort(numbers)) i od końca lecieć w pętli do momentu kiedy kolejna od końca liczba jest równa tej ostatniej = w ten sposób
c) Wczytujesz sobie do zmiennej maxNumber pierwszy element tablicy i w pętli for ciśniesz do końca porównując czy kolejny jest większy niż ten, jak tak to dodajesz do ją do zmiennej i na końcu masz maksymalną liczbę.

Jeżeli chodzi o znalezienie wszystkich indeksów. Myślę, że mając maksymalną liczbę już ustaloną, to można jej wystąpienia wrzucać do jakiegoś seta. Mając posortowaną tablicę, to znalezienie wszystkich wystąpień można zrobić w tym samym przebiegu co znalezienie wystąpień.

Rozbij sobie problem na kilka mniejszych:

  1. Wczytanie liczb do tablicy.
  2. Posortowanie jej (np.).
  3. Znalezienie maksymalnej wartości.
  4. Znalezienie wszystkich wystąpień maksymalnej wartości.
0

@.andy: Oj tam oj tam :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1