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

Szukanie pierwszej i drugiej najwkieszej liczby w tablicy.

Object Storage Arubacloud
0 głosów
505 wizyt
pytanie zadane 9 maja 2019 w Java przez Paweł123 Nałogowiec (33,500 p.)
otwarte ponownie 9 maja 2019 przez Paweł123

Witam, muszę znaleźć pierwszą i drugą największą wartość w tablicy.

package com.company;

import java.util.Random;
import java.util.Scanner;

public class Zadanie8 {

    public static void main(String[] args) {

        int n, index=0, index2=0;
        float max;
        Scanner scan = new Scanner(System.in);
        do{
            System.out.print("Podaj ile elementow ma miec tablica: ");
            n = scan.nextInt();
        }while(n<0);

        float[] liczby = new float[n];

        Random generator = new Random();
        for(int i=0; i<n; i++){

            liczby[i] = generator.nextFloat();
        }
        for(int i=0; i<n; i++){
            System.out.println("Index: "+i+" Wylosowane: "+liczby[i]);
        }
        max=liczby[0];
        for(int i=0; i<n; i++){
            if(max<liczby[i]){
                max=liczby[i];
                index = i;
            }
        }

        float druga=0;
        float wypisanie_druga=0;
        for(int i=0; i<n; i++){
            if(druga<liczby[i]){
                druga=liczby[i];
                index2 = i;
                if(druga != max){
                    wypisanie_druga = druga;
                }else{
                    System.out.println("Nie ma takiej liczby");
                }
            }
        }



        System.out.println("Najwkieszka liczba w tablicy: "+max+" Index: "+index);
        System.out.println("Druga najwkieszka liczba w tablicy: "+wypisanie_druga+" Index: "+index2);
    }
}

Niestety kod nie działa w 100% mam problem z indexem.

Czy ktoś wie, dlaczego? Ktoś pomoże? ;)

komentarz 9 maja 2019 przez k222 Nałogowiec (30,150 p.)
czy ty czasem nie używasz tej samej zmiennej index do określenia indeksu pierwszej i drugiej największej liczby?
komentarz 9 maja 2019 przez Paweł123 Nałogowiec (33,500 p.)
Tak używam, ale to chyba nie wpływa na kod. Ponieważ index jest w osobnych forach, czy nie?

3 odpowiedzi

0 głosów
odpowiedź 9 maja 2019 przez Paweł123 Nałogowiec (33,500 p.)

Tak to powinno być chyba

 for(int i=0; i<n; i++){
            if(druga<liczby[i]){
                druga=liczby[i];
                if(druga != max){
                    wypisanie_druga = druga;
                    index2 = i;
                }else{
                    System.out.println("Nie ma takiej liczby");
                }
            }
        }

 

0 głosów
odpowiedź 9 maja 2019 przez k222 Nałogowiec (30,150 p.)

Wstawienie warunku liczby[i] != max do if'a załatwi sprawę.

for(int i=0; i<n; i++){
            if(druga<liczby[i] && liczby[i] != max){
                druga=liczby[i];
                index2 = i;
                }else{
                    System.out.println("Nie ma takiej liczby");
                }
        }

 

Ogarnięcie dlaczego twoja wersja nie ma sensu a ta działa zostawiam już tobie - jak sobie rozpiszesz to na pewno zrozumiesz.

0 głosów
odpowiedź 9 maja 2019 przez coderCpp93 Gaduła (4,200 p.)
Ja bym najpierw posortował tablicę statyczną funkcją klasy Arrays, czyli tak: Arrays.sort(arr).

Ta deklaracja posortuje Ci tablicę liczb rosnąco, potem wystarczy zapisać dwa ostatnie indeksy w osobnych zmiennych, albo w innej tablicy.o rozmiarze 2.

Podobne pytania

0 głosów
2 odpowiedzi 1,439 wizyt
pytanie zadane 15 maja 2018 w C i C++ przez Marte Nowicjusz (140 p.)
0 głosów
2 odpowiedzi 5,938 wizyt
pytanie zadane 1 grudnia 2016 w C i C++ przez Mateusz Ścigała Początkujący (280 p.)
0 głosów
1 odpowiedź 1,448 wizyt

92,551 zapytań

141,399 odpowiedzi

319,531 komentarzy

61,938 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!

...