Deklaracja tablicy, kolejność wykonywania czynności.

0

Witam :)
Na zaliczeniu miałem zadanie:
Zakładają, że w funkcji main zadeklarowano i wypełniono 100 - elementową tablicę liczb całkowitych wykorzystując funkcje: "największy" oraz "liczba_wystąpień". Uzupełnić brakującą część w funkcji "największy" oraz napisać część funkcji main, która wyświetli największy element tablicy oraz liczbę jego wystąpień w tablicy.

Sam napisałem coś takiego (nie zwracajcie uwagi na wielkość tablicy, zrobiłem mniejszą w domu, żeby potrenować(naj = największy, suma = liczba_wystąpień)):


	int tab[] = new int[20];
		Random generuj = new Random();
		
		for (int i=0;i<tab.length;i++){
			
				tab[i]=generuj.nextInt(10);
				System.out.print(tab[i]+"|");
				
		}
		int naj = 0;
		for (int j=0;j<tab.length;j++){
			if  (naj < tab[j]){
			    naj=tab[j];    
			}}
		int suma = 0;
		for (int k=0;k<tab.length;k++){
			if (naj==tab[k]){
			suma++;
		}}
		
System.out.print("Najwieksza liczba to "+naj+" która powtórzyła się "+suma+" razy.");
	}

}

Natomiast dalsza część zaliczenia wyglądała tak:

int największy (int () tab, int length)

tu uzupełnić samemu


int liczba_wystąpień (int () tab, int length, int liczba)
tutaj było uzupełnione, bardzo podobnie do sposobu w jaki ja to zrobiłem w domu, z tą różnicą, że kod zawierał
"return 0"

No i na samym dole było

void Main

miejsce na dalszą część

I pojawił się problem, ponieważ nie wiem w jaki sposób powinienem to uzupełnić. Jakoś rozbić ten mój kod na części? Czy zanim utworzyłem tablicę, mogę zadeklarować funkcję "największy"? Czy w tej funkcji "największy" powinienem właśnie utworzyć tablicę i dopiero na samym końcu w "void Main" wyświetlić wyniki? Nigdy wcześniej nie używałem "return 0", więc nie wiem nawet jak tego użyć w takim kodzie. Mogliśmy programować językiem C,C++ lub JAVA (umiem co nie co tylko javki :p).Z góry dziękuję za odpowiedzi i przepraszam za prawdopodobnie banalne pytanie :). Pozdrawiam :)

1

Jesteś pewien, że powinieneś zaliczyć?

0

Twój kod szukający w tablicy liczby największej jest błędny. Działa poprawnie tylko dla tablic, które zawierają chociaż jedną liczbę >= 0. Generowane przez Ciebie tablice miały wszystkie elementy >= 0. dlatego nie zauważyłeś błędu. Zmień kod generujący na

        for (int i=0;i<tab.length;i++){
 
                tab[i] = -generuj.nextInt(10);
                System.out.print(tab[i]+"|");
        }

i uruchom kilkukrotnie swój program.

0

Okej, widzę w czym problem. Wprowadziłem poprawkę

 
int	naj = tab[0];
		for (int j=0;j<tab.length;j++){
			if  (naj < tab[j]){
			    naj=tab[j];  

Teraz powinno być w porządku?

0
  1. Brak formatowania: http://4programmers.net/Forum/998482
  2. Smrodek przy inkrementacji: http://4programmers.net/Forum/1101404
  3. Niepotrzebny jeden krok pętli
  4. Brak zabezpieczenia przed zerowym rozmiarem tabeli
    Dalej wyliczać?
0
  1. Autor pisze w Javie, więc nie ma smrodku. Z kompilatora wychodzi identyczny kod.
  2. Jak Twoim zdaniem powinna się zachować funkcja o sygnaturze int max(int[] tab) gdy zostanie wywołana z pustą tablicą?

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