• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Program wypisuje ostatnią liczbę, którą dostał

Object Storage Arubacloud
0 głosów
986 wizyt
pytanie zadane 29 marca 2019 w Java przez Paweł123 Nałogowiec (33,500 p.)

Witam, mam do napisania program.

Napisz program wczytujący z klawiatury n liczb całkowitych. Program ma znaleźć największą spośród  podanych liczb oraz wydrukować na ekranie informację mówiąca o tym ile razy największa liczba wystąpiła w podanym ciągu liczb.

import java.util.*;
import java.lang.Math;

public class JavaApplication {
    private static Scanner input = new Scanner(System.in);

    public static void main(String[] args) {
        int n, licznik, i;
        
        System.out.println("Podaj ilosc liczb, ktroe chcesz wprowadzic: ");
        n = input.nextInt();
        int[] liczby = new int[n];
        
        licznik = 0;
        i = 0;
        while (licznik < n) {
            System.out.println("Podaj liczbe do tablicy: ");
            liczby[i] = input.nextInt();
            licznik = licznik + 1;
        }
        int j;
        
        for (j = 0; j <= n - 1; j++) {
            System.out.println(liczby[i]);
        }
    }
}

Napisałem coś takiego. Jednak mam problem z zapisaniem liczb do talibcy. Kiedy podaje n=4 i podaje liczby do tablicy "1,2,3,4" następnie wypisuję te liczby to program wypisuje mi "4,4,4,4", czy ktoś może mi pomoc w znalezieniu błędu?

2 odpowiedzi

+1 głos
odpowiedź 29 marca 2019 przez pionas0407 Gaduła (4,620 p.)
wybrane 31 marca 2019 przez Paweł123
 
Najlepsza

Aby znaleźć największą liczbę proponuje takie rozwiązanie:

1) Tworzysz zmienną której przypisujesz wartość pierwszego elementu tablicy.

2) Iterujesz tablicę 

3) Przy każdej iteracji sprawdzasz czy i-ty element tablicy jest większy od zmiennej której przypisałeś pierwszy element tablicy. Jeżeli warunek jest spełniony przypisujesz tej zmiennej wartość i-tego elementu tablicy.

 

Aby znaleźć ilość powtórzeń największej liczby wykorzystamy wyżej omówiony algorytm.

1) Przypisujemy zmiennej największą liczbę znalezioną powyżej.

2) Tworzymy zmienną pomocniczą która będzie określała ile razy największa liczba się powtarza. (typu int).

3) Iterujemy tablicę

4) jeżeli zmienna jest równa i-temu elementowi tablicy to powiększamy zmienną typu int o jeden.

 

Proponuje Ci najpierw samemu napisać rozwiązanie twojego zadania a następnie skonfrontować to z tym przykładowym rozwiązaniem: 

Napisałem proste funkcje rozwiązujące Twoje problemy: 


    public int findMaxNumber(int[] table) {
        int maxNumber = table[0];
        for(int j = 0; j < table.length; j++) {
            if(maxNumber <= table[j]) {
                maxNumber = table[j];
            }
        }

        return maxNumber;
    }

    public int howManyRepets(int[] table, int MaxNumber) {

        int repeat = 0;

        for(int i = 0; i < table.length; i++) {
            if(MaxNumber == table[i]) {
                repeat++;
            }
        }
        return repeat;
    }

W razie jakiś problemów pisz to pomogę ze zrozumieniem kodu.

Do użycia funkcji obliczającej ilość powtórzeń, najpierw używasz funkcję która znajduje MaxNumber, przypisujesz to do zmiennej która podajesz jako drugi argument do funkcji

komentarz 29 marca 2019 przez gagyn Stary wyjadacz (11,050 p.)
Tylko, że na tym forum nie chodzi o to, aby rozwiązywać za kogoś zadania...

Możesz kogoś nakierować, ale dawanie gotowca raczej nie jest dobrym rozwiązaniem.
1
komentarz 30 marca 2019 przez pionas0407 Gaduła (4,620 p.)

Oh. W sumie trudno się nie zgodzić

Moje intencje były inne niż klasyczne: CTRL+C  -> CTRL+V

Bardziej zależałoby mi tym, żeby On spróbował to napisać z lekką podpowiedzią, a jak czegoś nie rozumiał to zapytał.

 

komentarz 30 marca 2019 przez gagyn Stary wyjadacz (11,050 p.)
No ok, ale myślę, że lepiej byłoby gdybyś ten kod zastąpił na przykład listą kroków ;)
2
komentarz 30 marca 2019 przez pionas0407 Gaduła (4,620 p.)
Jasne już poprawiam!
komentarz 30 marca 2019 przez pionas0407 Gaduła (4,620 p.)
update wleciał mam nadzieje, że teraz lepiej to wygląda ; )
komentarz 30 marca 2019 przez gagyn Stary wyjadacz (11,050 p.)
Tak, teraz lepiej :)
1
komentarz 30 marca 2019 przez pionas0407 Gaduła (4,620 p.)
dzięki za słuszną uwagę ;)!
komentarz 31 marca 2019 przez Paweł123 Nałogowiec (33,500 p.)

@pionas0407, Napisałem cos takiego, mam problem z kiedy n=5 i podam 90,90,90,100,5

Program pokazuje że największą jest 90 i wystąpiła 3 raz, a jest to nie prawda, ponieważ liczba 100 jest największą

import java.util.*;
import java.lang.Math;

public class JavaApplication {
    private static Scanner input = new Scanner(System.in);

    public static void main(String[] args) {
        int n, i;
        
        System.out.println("Podaj ilosc liczb, ktroe chcesz wprowadzic: ");
        n = input.nextInt();
        int[] liczby = new int[n];
        
        i = 0;
        while (i < n) {
            System.out.println("Podaj liczbe do tablicy: ");
            liczby[i] = input.nextInt();
            i = i + 1;
        }
        int j;
        int max;
        
        for (j = 0; j <= n - 1; j++) {
            max = liczby[0];
            if (max <= liczby[j]) {
                max = liczby[j];
            }
        }
        System.out.println("Najwieksza: " + max);
        int powtorzenia;
        
        powtorzenia = 0;
        for (i = 0; i <= n - 1; i++) {
            if (max == liczby[i]) {
                powtorzenia = powtorzenia + 1;
            }
        }
        System.out.println("Ilosc powtorzen: " + powtorzenia);
    }
}

 

komentarz 31 marca 2019 przez pionas0407 Gaduła (4,620 p.)

wydaje mi się, że nadpisujesz cały czas maxa.

Powinieneś przenieść max = liczby[0]; z pętli i umieścić ją przed pętlą. 

komentarz 31 marca 2019 przez Paweł123 Nałogowiec (33,500 p.)
Działa, dzięki ;)
0 głosów
odpowiedź 29 marca 2019 przez miro Pasjonat (23,870 p.)

liczby[i] -> pomyliły się Tobie literki - zamień i na j

komentarz 29 marca 2019 przez Paweł123 Nałogowiec (33,500 p.)

No właśnie jak zmieniam na j to dostaję komunikat

the variable liczby was not initialized

import java.util.*;
import java.lang.Math;

public class JavaApplication {
    private static Scanner input = new Scanner(System.in);

    public static void main(String[] args) {
        int n, licznik, i;
        
        System.out.println("Podaj ilosc liczb, ktroe chcesz wprowadzic: ");
        n = input.nextInt();
        int[] liczby = new int[n];
        
        licznik = 0;
        i = 0;
        while (licznik < n) {
            System.out.println("Podaj liczbe do tablicy: ");
            liczby[i] = input.nextInt();
            licznik = licznik + 1;
        }
        int j;
        
        for (j = 0; j <= n - 1; j++) {
            System.out.println(liczby[j]);
        }
    }
}

 

komentarz 29 marca 2019 przez miro Pasjonat (23,870 p.)
        int n, i;
         
        System.out.println("Podaj ilosc liczb, ktroe chcesz wprowadzic: ");
        n = input.nextInt();
        int[] liczby = new int[n];
         
        i = 0;
        while (i < n) {
            System.out.println("Podaj liczbe do tablicy: ");
            liczby[i] = input.nextInt();
			i ++;
        }
         
        for (int j = 0; j < n; j++) {
            System.out.println(liczby[j]);
        }

Zrobiłeś sobie zmienną i, a mieszasz ją z licznik.

Podobne pytania

0 głosów
2 odpowiedzi 191 wizyt
0 głosów
2 odpowiedzi 796 wizyt
pytanie zadane 16 września 2020 w C i C++ przez Hubert_123 Początkujący (380 p.)
0 głosów
1 odpowiedź 298 wizyt
pytanie zadane 5 października 2016 w C i C++ przez dhealy Początkujący (250 p.)

92,622 zapytań

141,477 odpowiedzi

319,818 komentarzy

62,005 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...